質問

私は左右のレール3とバンドラと戦ってきました。 Railsアプリケーションがまだロードされていない場合は正常に動作しません。そこにいくつかの宝石があります。 factory_girlとshouldaはさえrails3の枝に、両方の例です。 私は次のエラーを取得するrake test:unitsを実行しようとすると、一例として、shouldaを取るます。
DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead. (called from autoload_macros at c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:40) c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'join': can't convert #<Class:0x232b7c0> into String (TypeError) from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'block in autoload_macros' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'map' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'autoload_macros' from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/rails.rb:17:in '<top (required)>'


のlib / shoulda /レールに少し深く掘り、私はこれを参照してください root = if defined?(Rails.root) && Rails.root
Rails.root
else
RAILS_ROOT
end
# load in the 3rd party macros from vendorized plugins and gems
Shoulda.autoload_macros root, File.join("vendor", "{plugins,gems}", "*")

だから... ...何、ここで起こっていることはRails.rootが定義されている間Rails.rootはnilに==、ですので、RAILS_ROOTが使用され、その後、Shoulda.autoload_macrosに渡されているRAILS_ROOT == nilで。明らかに、レールのアプリが初期化されていません。 Rails3は今バンドラーを使用して、そこに宝石が必要とされる順序を指定することができることについてバンドラー側の一部hububを経由して、私はこれは当面の問題を解決するかどうかわからないです。
最終的に私の質問はこれです:正確に(実際にアプリケーションを初期化)environment.rbにファイルを行うときに引っ張らますか?アプリが初期化され、それが設定/ application.rbでBundler.requireライン前に発生したときに、最大ぶつけへの害はありますか?私は順番を自分で指定し、GEMは最初に引っ張らレールを持っているバンドラをハックしようとしたが、レールの宝石を必要とすることは、実際にアプリケーションを初期化するように私には表示されません。
(のconfig / application.rbで)このラインとしてアプリが初期化される前に、レールを必要バンドラGemfileのいずれかの宝石がタンクに起こっている初期化すると呼ばれています。

# Auto-require default libraries and those for the current Rails environment. Bundler.require :default, Rails.env

役に立ちましたか?

解決

まあ、これを追跡するために、実際にはかなり簡単でした。すべてのレールライブラリはapplication.rbに引き込まれています。アプリ自体はenvironment.rbで初期化されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top