2010-12-29 3 views
0

私はRails 3にアップグレードしようとしているRails 2プロジェクトを持っていますが、bundlerにはいくつか問題があります。ロード時の定数がありません。どうすればこの問題を回避できますか? (Rails :: Plugin :: OpenID)

"rake"を実行すると、テストは正常に実行されます。しかし、私が "bundle exec rake"を実行すると、定数を見つけることができません。私はこれらの宝石がインストールされている

/Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/dependencies.rb:131:in `const_missing': uninitialized constant Rails::Plugin::OpenID (NameError) 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/vendor/plugins/open_id_authentication/init.rb:16:in `evaluate_init_rb' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `call' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `evaluate_method' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:166:in `call' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `each' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:276:in `run_callbacks' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `run_prepare_callbacks' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:631:in `prepare_dispatcher' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:185:in `process' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:113:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:113:in `run' 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/config/environment.rb:9 
    from ./test/test_helper.rb:2:in `require' 
    from ./test/test_helper.rb:2 

エラーがこれです

$ gem list 

*** LOCAL GEMS *** 

actionmailer (2.3.9) 
actionpack (2.3.9) 
activerecord (2.3.9) 
activeresource (2.3.9) 
activesupport (2.3.9) 
authlogic (2.1.3) 
bundler (1.0.7) 
gravtastic (2.2.0) 
linecache (0.43) 
mocha (0.9.10) 
newrelic_rpm (2.13.4) 
parseexcel (0.5.2) 
rack (1.1.0) 
rack-openid (1.1.1) 
rails (2.3.9) 
rake (0.8.7) 
ruby-debug-base (0.10.5.jb2, 0.10.4) 
ruby-debug-ide (0.4.15) 
ruby-openid (2.1.8, 2.1.7, 2.0.4) 
sqlite3-ruby (1.3.2) 

バンドラ、次のようにGemfileは次のとおりです。

source 'http://rubygems.org' 

#gem 'rails', '3.0.3' 
gem "rails", "2.3.9" 
gem "activesupport", "2.3.9" 
gem "ruby-openid", "2.1.7", :require => "openid" 
#gem "authlogic-oid", "1.0.4" 

# Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3-ruby', :require => 'sqlite3' 

gem "authlogic", "= 2.1.3" 
gem "newrelic_rpm" 
# gem "facebooker" 
gem "parseexcel" 
gem 'gravtastic', '= 2.2.0' 
gem "rack-openid", '=1.1.1', :require => 'rack/openid' 

# not sure what this does... 
gem "mocha" 

私はこれらのプラグインがインストールされている:

2dc_jqgrid  
authlogic_openid  
open_id_authentication 
squirrel 

私は、これらの同様の質問を参照してください。

Missing a constant on load.. how can i get around this?

Requiring gem in Rails 3 Controller failing with "Constant Missing"

をしかし、彼らのソリューションは、私の状況のた​​めに働くように見えるいけません。

私はプラグインの周りに問題があると推測していますが、私のルビーフーは弱すぎます。

UPDATE

近づいて、私は思います。

プラグイン版のauthlogic_openidを使用しているようですが、現在のルートではないので、authlogic-oid gemを使用するように切り替えました。また、open_id_authenticationの旧バージョン/別バージョンがあるように見えました。次のように

は今例外/スタックトレースは次のとおりです。今、これらの宝石を使用して

/Users/kimptoc/.rvm/gems/[email protected]/gems/activerecord-2.3.9/lib/active_record/base.rb:1998:in `method_missing': undefined method `openid_required_fields=' for #<Class:0x1036cccb8> (NoMethodError) 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/app/models/user.rb:21 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/authlogic-2.1.6/lib/authlogic/acts_as_authentic/base.rb:33:in `acts_as_authentic' 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/app/models/user.rb:16 

authlogic (2.1.6) 
authlogic-oid (1.0.4) 
rack-openid (1.2.0) 
ruby-openid (2.1.8) 

はauthlogic-OID init'd /ロードされていないとの問題のように思えます。.. 。私のGemfileには次のようになります。また

gem "ruby-openid", :require => "openid" 
gem "authlogic-oid", :require => "authlogic_openid" 
gem "authlogic" 
gem "rack-openid", :require => 'rack/openid' 

、アプリ/ OpenIDでのログインのものは現在動作していない - ので、私は旧姓推測しますいくつかのより多くのこれらの宝石のこれらのバージョンでプレイするD ...事前に

おかげで、 クリス

答えて

1

(興味深いプロジェクト名!)

私は、プラグインのopen_id_authenticationであることをスタックトレースから考えますRails 2と互換性がなく、Rails 3が機能する必要があります。

Rails 3にアップグレードしている場合は、新しいバージョンのActive *とRailsを使用しているポイントまで、1つのプラグインだけの修正を試す前にプロジェクトを取得します。

+0

私は同意しますが、間違った方法であなたのバージョンのRailsを入手したと思います。物の見た目では、Rails * 3 *と互換性がなく、* TWO *と互換性がありました。 –

+0

Hmm - まだRails 3をスタックに入れておらず、Rails 2.3.9で稼働しています。これはあなたが宝石の非互換性を持っているようです - もしrake specが動作し、rake specが失敗したら、あなたはシステムのすべての宝石を調べ、バンドルが.gemsディレクトリに入れているバージョンと比較する必要があると思いますあなたのアプリのバージョン番号を「ピン(pin)」します。例えば。 'gem 'rack'、 '= 1.1.0''です。あなたはおそらくあなたが必要なものよりも新しいバージョンの宝石を手に入れているので、失敗しています。 – stef

+0

アイデアをありがとう - Stefは正しいですが、コードのこのブランチではまだrails2にあります - バンドラの問題を修正することが私のレール3ブランチに役立つかどうかを見てください。 open_id_authプラグインをremvoしようとしましたが、それは問題を解決しました - しかし、私は私のログイン用のもののためにそれを必要と思う:(私は私のopenid authを壊してしまったようです。 –

関連する問題