Проблема с требованием Rack/OpenID в Rails 3 [родное требование работает правильно]
-
22-09-2019 - |
Вопрос
Я устанавливаю плагин 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
Я попытался добавить хак в 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.
Решение
Проблема в этом коде в верхней части init.rb плагина.
if Rails.version < '3'
config.gem 'rack-openid', :lib => 'rack/openid', :version => '>=0.2.1'
end
Бандлер, похоже, не учитывает требования к драгоценным камням, поэтому вам не хватает rack-openid
драгоценный камень.
Решение состоит в том, чтобы добавить следующее в ваш Gemfile
на месте ruby-openid
. (rack-openid
зависит от ruby-openid
но gems об этом знает и установит при необходимости)
gem 'rack-openid', '>=0.2.1', :require => 'rack/openid'
Не забудь бежать bundle install
после обновления вашего Gemfile.
Другие советы
Я понимаю вашу проблему, поскольку Ruby openID может работать очень нестабильно по небольшим причинам.Я установил его на работе, но не могу установить его дома!Приведу свой рабочий рецепт:
у меня есть Плагины (ТОЛЬКО)
authlogic_openid из: http://github.com/binarylogic/authlogic_openid
открытый идентификатор из: http://github.com/senthilnambi/open-id
А Драгоценные камни:
аутлогика (2.1.3)
аутлогический-оид (1.0.4)
открытый идентификатор (0.0.1)
стойка (1.0.1)
стойка-openid (1.0.1)
рубин-опенид (2.1.7)
В окружающая среда (ТОЛЬКО):
config.gem "аутлогика"
ГЛ!
gem "rack-openid", :require => "rack/openid"