2013-04-02 5 views
1

На локальном хосте и моем игровом приложении Heroku pg_search работает отлично.Почему я не могу удалить и перестроить всю базу данных поиска в Heroku?

В моем приложении продукта Heroku pg_search по-прежнему показывает результаты поиска для моей модели сносок (которую я больше не хочу включать) в дополнение к ссылочной модели (которую я все еще хочу включить).

У меня есть ...

# /app/models/reference.rb 
class Reference < ActiveRecord::Base 
    has_paper_trail 
    include PgSearch 
    multisearchable :against => [:source_text, :citation] 
end 

Я удалил include PgSearch из моего /app/models/footnote.rb.

Мой процесс начинается с ручного распределения некоторых рабочих приложений. (Который обычно я автоматически с помощью безработный.)

Тогда я:

$ heroku run rails console --app testivate 
Running `rails console` attached to terminal... up, run.2840 
Connecting to database specified by DATABASE_URL 
Loading production environment (Rails 3.2.11) 
irb(main):001:0> PgSearch::Footnote.delete_all 
NameError: uninitialized constant PgSearch::Footnote 
irb(main):002:0> PgSearch::Reference.delete_all 
irb(main):003:0> PgSearch::Multisearch.rebuild(Reference) 
    (1.3ms) BEGIN 
    SQL (56.2ms) DELETE FROM "pg_search_documents" WHERE "pg_search_documents"."searchable_type" = 'Reference' 
    (1279.8ms) INSERT INTO "pg_search_documents" (searchable_type, searchable_id, content, created_at, updated_at) 
SELECT 'Reference' AS searchable_type, 
"references".id AS searchable_id, 
(
coalesce("references".source_text::text, '') || ' ' || coalesce("references".citation::text, '') 
) AS content, 
'2013-04-02 01:05:09.330250' AS created_at, 
'2013-04-02 01:05:09.330250' AS updated_at 
FROM "references" 

    (33.8ms) COMMIT 
=> #<PG::Result:0x00000006c849b0> 
irb(main):004:0> 

Последний шаг возвращает результат, #<PG::Result:0x00000006c849b0>, мгновенно, несмотря на то, что я только просил pg_search индексировать 53 документов от 3000 до 15 000 слов каждая.

Могу ли я предположить, что процесс перестройки продолжается? Есть ли способ подтвердить, когда он будет завершен, чтобы я мог сократить рабочие процессы? (И мне нужно, чтобы выделить рабочие процессы на это так или иначе?)

Кстати, следующий подход также занимает всего несколько секунд, что не кажется правильным:

$ heroku run rake pg_search:multisearch:rebuild[Reference] --app testivate 
Running `rake pg_search:multisearch:rebuild[Reference]` attached to terminal... up, run.3303 
Connecting to database specified by DATABASE_URL 
    (1.5ms) BEGIN 
    SQL (95.4ms) DELETE FROM "pg_search_documents" WHERE "pg_search_documents"."searchable_type" = 'Reference' 
    (1070.3ms) INSERT INTO "pg_search_documents" (searchable_type, searchable_id, content, created_at, updated_at) 
SELECT 'Reference' AS searchable_type, 
"references".id AS searchable_id, 
(
coalesce("references".source_text::text, '') || ' ' || coalesce("references".citation::text, '') 
) AS content, 
'2013-04-02 01:10:07.355707' AS created_at, 
'2013-04-02 01:10:07.355707' AS updated_at 
FROM "references" 

    (103.3ms) COMMIT 

После всех этих попыток, я все еще получаю экземпляры модели Footnote в моих результатах поиска. Как я могу избавиться от них?

ответ

0

Это немного грубо, но heroku run rake db:migrate:redo сделал трюк.