2011-06-29 9 views
0

私は宝石を書いたと私は自動ロードに私のメインの宝石のロジックにこれをやっているファイル内:Rubyのバージョン1.8.7とREEのために1.8.7またはRuby EnterpriseでRubyの自動ロードが機能していませんか?

$:.push File.expand_path('lib', __FILE__) 

require "oa-casport/version" 
require 'omniauth/core' 

module OmniAuth 
    module Strategies 
    autoload :Casport, 'omniauth/strategies/casport' 
    end 
end 

を、それは「ロードするそのようなファイルをプリントアウトしない - omniauth /戦略/ casport」
しかし、それはバージョン1.9.2でこのメッセージを印刷しません。自動ロードを呼び出すの場所で何かオフはありますか?

宝石のためのレポはhttps://github.com/stevenhaddox/oa-casport

に位置していますEDIT:私のgemはバージョンに関係なくRails 2と3で動作しますが、SinatraではRuby/REE 1.8.7を使用すると動作しません。何か案は?

答えて

2

$LOAD_PATHに間違ったパスを追加しています。

File.expand_path('lib', __FILE__)は、明らかに存在しない${GEM_PATH}/lib/oa-casport.rb/libと評価されます。

代わりに、あなたのgemspecであなたのパスを指定します。

Gem::Specification.new do |spec| 
    # ... 
    spec.require_paths = [ 'lib' ] 
    # ... 
end 

PS:ちょうど最初の問題を解決するために:あなたはおそらく$LOAD_PATHに以下を追加するためのもの:File.expand_path(File.dirname __FILE__)を。

0

コードをチェックしたところ、Rails 2またはRails 3でRuby 1.8.7および1.9.2で正常に読み込まれているようですが、SinatraでRuby 1.8.7で問題が発生しています。 2)。

私はまだ不一致がなぜ分かっていないのですが、私がチャンスを得たときにそれを調べ続けます。上記の環境のほとんどで動作するという事実は$:プッシュラインが本当に問題を引き起こすわけではないことを私に教えているようです(ただしgitを使ってgemファイルをパッケージ化しているので必要ないかもしれません)。 gemspec)。

関連する問題