Rails 3 の requirerack/openid に関する問題 [ネイティブ require が適切に動作する]
-
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
Ruby-openid の場合と同様に 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 でなぜ発生するのか理解できません。
解決
問題は、プラグインの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
に依存するが、宝石は、このことを認識し、必要に応じてそれをインストールします)。
gem 'rack-openid', '>=0.2.1', :require => 'rack/openid'
DOは、あなたのGemfileを更新した後bundle install
を実行することを忘れないで。
他のヒント
Ruby openID は小さな理由で非常に不安定になる可能性があるため、問題は理解しています。職場では設置しているのですが、家では設置できない!私の実際のレシピを紹介します。
私が持っています プラグイン (のみ)
authlogic_openid から: http://github.com/binarylogic/authlogic_openid
オープン ID: http://github.com/senthilnambi/open-id
の 宝石:
認証ロジック (2.1.3)
authlogic-oid (1.0.4)
オープンID (0.0.1)
ラック (1.0.1)
ラックオープンID (1.0.1)
ルビー-openid (2.1.7)
で 環境 (のみ):
config.gem「認証ロジック」
GL!
gem "rack-openid", :require => "rack/openid"