Проблема с require rack/openid в Rails 3 [native require work properly]


Я устанавливаю плагин open_id_authentication и получаю такую ошибку:

/usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.beta/lib/active_support/dependencies.rb:167:in `require': no such file to load -- rack/openid (LoadError)

Когда я пытаюсь начать rails server На самом деле, rack-openid установлен в моей системе, и я могу загрузить его из irb:

irb(main):001:0> require 'rack/openid'
=> true

Я попытался добавить hack в Gemfile, как это было с ruby-openid, но это не помогло:

gem "ruby-openid", :require => "openid"
gem "rack-openid", :require => "rack/openid"

Я тоже пробовал

gem "ruby-openid", :require => "rack/openid"

Но:

/usr/lib/ruby/gems/1.9.1/gems/bundler-0.9.7/lib/bundler/runtime.rb:38:in `require': no such file to load -- rack/openid (LoadError)

В приложении rails 2.3.5 нет этой проблемы, и я не могу понять, почему это происходит в Rails 3.

3 7

3 ответа:

Проблема заключается в том, что этот код находится в верхней части init плагина.rb

if Rails.version < '3'
  config.gem 'rack-openid', :lib => 'rack/openid', :version => '>=0.2.1'
end

Bundler, похоже, не улавливает требования gem, поэтому вы пропускаете rack-openid gem.

Решение состоит в том, чтобы добавить следующее к вашему Gemfile вместо ruby-openid. (rack-openid зависит от ruby-openid, но gems знает об этом и установит его по мере необходимости)

gem 'rack-openid', '>=0.2.1', :require => 'rack/openid'

Не забудьте запустить bundle install после обновления вашего Gemfile.

Я понимаю вашу проблему, так как ruby openID может быть очень неустойчивым по небольшим причинам.. Я установил его на работе, но не могу получить его ПРЯМО ДОМА! Я приведу свой рабочий рецепт:

У меня есть плагины (только)
authlogic_openid from: http://github.com/binarylogic/authlogic_openid
открытого идентификатор: http://github.com/senthilnambi/open-id

Самоцветы :
authlogic (2.1.3)
authlogic-oid (1.0.4)
openid (0.0.1)
стойка (1.0.1)
rack-openid (1.0.1)
Рубин-openid (2.1.7)

В среде (только):
конфиг.драгоценный камень "authlogic"

ГЛ!

gem "rack-openid", :require => "rack/openid"