在Rails 3中需要rack / openid的问题[本机需要正常工作]

时间:2010-02-23 08:37:01

标签: ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3 rack

我安装插件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

我尝试像使用ruby-openid一样添加hack到Gemfile,但它没有帮助:

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 个答案:

答案 0 :(得分:7)

问题是这个代码位于插件顶部的init.rb

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

Bundler似乎没有注意到宝石的要求,所以你错过了rack-openid宝石。

解决方案是将以下内容添加到Gemfile以代替ruby-openid。 (rack-openid取决于ruby-openid,但宝石知道这一点,并会根据需要进行安装)

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

更新Gemfile后不要忘记运行bundle install

答案 1 :(得分:1)

我理解你的问题,因为ruby openID可能非常不稳定,原因很少..我在工作时安装它,但无法在家中使用它!我会给出我的工作秘诀:

我有插件(仅限)
authlogic_openid来自:http://github.com/binarylogic/authlogic_openid
open-id来自: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)
ruby-openid(2.1.7)

环境(仅限)
config.gem“authlogic”

GL!

答案 2 :(得分:0)

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