我一直在争取左右两侧的导轨3和打捆。有几个宝石在那里,如果Rails应用程序尚未加载了不正常工作。 factory_girl和早该是两个例子,即使是在Rails3中分支。 以早该为例,试图运行rake test:units我收到以下错误时:点击 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 /早该/导轨,我看到这一点:点击 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 ==为零,因此使用RAILS_ROOT和RAILS_ROOT ==零,然后被上Shoulda.autoload_macros过去了。显然,Rails应用程序尚未被初始化。随着现在使用的捆扎机Rails3中,还有的是一些hubub过的捆扎机侧大约能够指定在其中所需的宝石的命令,但我不知道这是否会解决手头的问题。结果 最终,我的问题是:当究竟environment.rb文件中(实际上初始化应用程序)被拉进去吗?是否有任何伤害颠簸起来时,应用程序初始化,并在它的config / application.rb中的Bundler.require线之前发生的呢?我试图破解打捆到指定的顺序我自己,有宝石在第一拉轨,但它不会出现,我认为需要轨道宝石居然初始化应用程序。点击 由于这条线(在配置/ 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