私は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 ...事前に
おかげで、 クリス
私は同意しますが、間違った方法であなたのバージョンのRailsを入手したと思います。物の見た目では、Rails * 3 *と互換性がなく、* TWO *と互換性がありました。 –
Hmm - まだRails 3をスタックに入れておらず、Rails 2.3.9で稼働しています。これはあなたが宝石の非互換性を持っているようです - もしrake specが動作し、rake specが失敗したら、あなたはシステムのすべての宝石を調べ、バンドルが.gemsディレクトリに入れているバージョンと比較する必要があると思いますあなたのアプリのバージョン番号を「ピン(pin)」します。例えば。 'gem 'rack'、 '= 1.1.0''です。あなたはおそらくあなたが必要なものよりも新しいバージョンの宝石を手に入れているので、失敗しています。 – stef
アイデアをありがとう - Stefは正しいですが、コードのこのブランチではまだrails2にあります - バンドラの問題を修正することが私のレール3ブランチに役立つかどうかを見てください。 open_id_authプラグインをremvoしようとしましたが、それは問題を解決しました - しかし、私は私のログイン用のもののためにそれを必要と思う:(私は私のopenid authを壊してしまったようです。 –