У меня есть проект Rails 2, который я пытаюсь обновить до Rails 3, но у меня возникают некоторые проблемы с компоновщиком.
Когда я запускаю "rake", он отлично запускает тесты.Но когда я запускаю "bundle exec rake", он не может найти константу.
Ошибка заключается в следующем:
/Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/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/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `call'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `evaluate_method'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:166:in `call'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `each'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `send'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:276:in `run_callbacks'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `send'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `run_prepare_callbacks'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/rails-2.3.9/lib/initializer.rb:631:in `prepare_dispatcher'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/rails-2.3.9/lib/initializer.rb:185:in `process'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/gems/rails-2.3.9/lib/initializer.rb:113:in `send'
from /Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/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
Я вижу подобные вопросы:
Отсутствует константапри загрузке .. как я могу обойти это?
и
Требуется драгоценный камень в Rails 3 Сбой контроллера с "Constant Missing"
Но их решения не подходят для моей ситуации.
Я предполагаю, что проблема связана с плагинами, но мой ruby-fu слишком слаб.
UPDATE
Я подхожу ближе.
Похоже, использование версии плагина authlogic_openid не является текущим маршрутом - поэтому переключились на использование камня authlogic-oid.Также, похоже, имеется старая / другая версия open_id_authentication - обновлена настолько, что.
Теперь трассировка исключения / стека выглядит следующим образом:
/Users/kimptoc/.rvm/gems/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/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/ruby-1.8.7-p330@p-borisbikestats-pre-rails3/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'
Кроме того, вход в систему через app / openid теперь не работает- так что я думаю, мне нужно поиграть с этими версиями этих драгоценных камней еще немного ...
Заранее спасибо, Крис