13

searchable次のようなブロックを持つモデルがあります。

class Contact < ActiveRecord::Base
  searchable do
    text :contact_name, :company_name, :contact_email
  end  
end

コントローラーのindexアクションで、 を呼び出しContact.newています。これにより、現在ステージング サーバーで実行されているページにエラー メッセージが表示されます。

#<Class:0xce0bf80> の未定義メソッド「検索可能」

スタック トレースは、コントローラー内searchableの行を介してモデル内のブロックを指しています。Contact.new

Web ページまたはコンソール、またはステージング サーバーのコンソールを介してコードをローカルで実行すると、このエラーは表示されず、ステージング Web ページでのみ表示されます。

Solr サービスはステージング サーバーで正常に実行されており、データは正常にインデックス化されています。ステージングでボールをプレーしていない理由についての理論は受け入れられます。

編集

以下の Nick の質問への回答として、Gemfile には Sunspot の次の行が含まれています。gem 'sunspot_rails'

Gemfile.lock については、Sunspot または Solr の参照を含むすべての行を確認できます。

GEM
  rsolr (0.12.1)
    builder (>= 2.1.2)
  sunspot (1.2.1)  
    escape (= 0.0.4)  
    pr_geohash (~> 1.0)  
    rsolr (= 0.12.1)  
  sunspot_rails (1.2.1)  
    nokogiri  
    sunspot (= 1.2.1)

DEPENDENCIES
  sunspot_rails
4

5 に答える 5

13

同じ問題が発生し、Railsサーバーを再起動する必要がありました。簡単な解決策ですが、そうすることを提案する別の投稿がなかった場合は、サーバーを再起動する前に、エラーをはるかに長い時間デバッグしようとしたでしょう。

于 2012-03-13T14:04:55.343 に答える
5

これは、新しい sunspot gem をインストールした後に Rails サーバーを再起動するのを忘れた場合にも発生する可能性があります

于 2012-07-14T02:23:15.643 に答える
0

この投稿を読んだ後 、問題は rake タスク ラインが Sunspot の読み込みを妨げているためであることがわかりました。次の方法で解決できました。

Rakefile require 'sunspot/rails/tasks' から次の行を削除しました

私は sunspot.rake ファイルを作成し、sunspot gem ソースから次のファイルの内容を追加しました: /gems/sunspot_rails-1.2.1/lib/sunspot/rails/tasks.rb

これがハックであることは知っていますが、機能しています。

于 2012-03-07T15:10:36.387 に答える
0

gem がステージング サイトに正しくロードされていないように思えます。Gemfile と Gemfile.lock の関連セクションを表示できる場合は、より多くの回答で更新できます。

編集 — Gemfile は正常に見えます。申し訳ありませんが、アプリを手に入れることができずに何もありません。Sunspot メーリング リストにバグを報告しますか? http://outoftime.github.com/sunspot

于 2011-08-11T19:17:54.470 に答える