0

RailsアプリでSolr検索に使用'sunspot_rails', '~> 2.0.0.pre.120415'し、heroku(2つの別々のアプリケーション)にデプロイしています。あるアプリケーションでは正常に動作していますが、他のアプリケーションではエラーがスローされます。

Heroku 環境を確認したところ、1 つのアプリが cedar スタック上にあり、ruby バージョンが 1.9.2p290 であることがわかりました。(正常に動作) もう 1 つは Bamboo スタック上にあり、Ruby バージョンは 1.9.2p180 (エラーをスロー)

では、これは ruby​​ のバージョンの問題なのか、heroku のスタックの問題なのか? 開発環境の Ruby バージョンは 1.9.2p290 です。

エラー

$ heroku run rake sunspot:reindex
Running rake sunspot:reindex attached to terminal... up, run.8567
rake aborted!
uninitialized constant Sunspot::Adapters::Registry::Forwardable
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot/adapters.rb:310:in `<class:Registry>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot/adapters.rb:309:in `<module:Adapters>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot/adapters.rb:34:in `<module:Sunspot>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot/adapters.rb:1:in `<top (required)>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot.rb:18:in `block in <top (required)>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot.rb:15:in `each'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot-2.0.0.pre.120925/lib/sunspot.rb:15:in `<top (required)>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot_rails-2.0.0.pre.120925/lib/sunspot/rails.rb:1:in `<top (required)>'
/app/.bundle/gems/ruby/1.9.1/gems/sunspot_rails-2.0.0.pre.120925/lib/sunspot_rails.rb:6:in `<top (required)>'
/app/config/application.rb:7:in `<top (required)>'
/app/Rakefile:4:in `require'
/app/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)
4

2 に答える 2

0

私は解決策を見つけました。

実際にはherokuの環境の問題です。ローカルシステムではrubyのバージョンはruby 1.9.2p290で、herokuではruby 1.9.2p180です。Ruby 1.9.2p180 には「Forwardable」モジュールが含まれていません。したがって、アプリケーションに「転送可能」モジュールを含めるだけです。

于 2013-01-14T10:55:08.987 に答える
0

さらに明確にするために、adapters.rb (sunspot/lib/sunspot/adapters.rb) の先頭に、次の行を追加します。

 require 'forwardable'


 module Sunspot
   #
   # Sunspot works by saving references to the primary key (or natural ID) of
于 2013-03-23T23:23:31.237 に答える