2013-04-02 3 views
1

localhost 및 Heroku 스테이징 응용 프로그램에서 pg_search가 정상적으로 작동합니다.왜 Heroku에서 전체 검색 데이터베이스를 삭제하고 다시 작성할 수 없습니까?

내 Heroku 제품 응용 프로그램에서 pg_search는 포함시키고 자하는 참조 모델 외에도 내 각주 모델 (더 이상 포함하지 않으려는)에 대한 검색 결과를 계속 표시합니다. 내 /app/models/footnote.rb에서 include PgSearch을 제거한

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

내가 가지고 ....

내 프로세스는 수동으로 일부 직원을 앱에 할당하는 것으로 시작됩니다. (I는 일반적으로 자동으로 workless를 사용하여 않는.) 그런 다음

내가 할 :

$ 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> 

마지막 단계는 그냥 53 개 문서 인덱스에 pg_search를 요청했습니다 있다는 사실에도 불구하고, 즉시 그 결과, #<PG::Result:0x00000006c849b0>을 반환 각 단어는 3000 ~ 15,000 개입니다.

재구성 프로세스가 진행 중이라고 가정 할 수 있습니까? 완료되었을 때이를 확인할 수있는 방법이있어서 작업자 프로세스를 축소 할 수 있습니까? (그리고 어쨌든이에 작업자 프로세스를 할당해야합니까?)

BTW, 다음과 같은 접근 방식은 단 몇 초 걸립니다, 잘 보이지 않는 :

$ 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 

모든 시도 후, 나는 아직도 얻을 내 검색 결과에서 각주 모델의 인스턴스 어떻게 그들을 제거 할 수 있습니까?

답변

0

약간 가혹하지만, heroku run rake db:migrate:redo 트릭을했습니다.

관련 문제