应用程序在Rails 4.0.12 / Ruby 2.0.0p481
在生产和一个开发笔记本上运行没有问题
与rbenv / bundle / svn完全隔离
尝试在另一台开发者电脑中使用
bundle exec rails s
LoadError - 无法自动加载常量Venta,预计 /home/sistemas/Projects/microgestion/trunk/app/models/concerns/modelos_impresion/venta.rb来定义它:
activesupport(4.0.13)lib / active_support / dependencies.rb:464:in load_missing_constant'
activesupport (4.0.13) lib/active_support/dependencies.rb:184:in
const_missing'
activesupport(4.0.13)lib / active_support / dependencies.rb:495:in load_missing_constant'
activesupport(4.0.13)lib / active_support / dependencies.rb:184:在`const_missing'
现在/home/sistemas/Projects/microgestion/trunk/app/models/concerns/modelos_impresion/venta.rb定义了这个:
module Concerns::ModelosImpresion::Venta
但正确的Venta类定义于:
/home/sistemas/Projects/microgestion/trunk/app/model/ventas/venta.rb:
class Venta < ActiveRecord::Base
...
end
在config / application.rb中我有:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += Dir["#{config.root}/app/models/**/", "#{config.root}/app/services/**/", "#{config.root}/lib/**/"]
我知道这两个文件具有相同的名称,但我看起来因为它们处于不同的层次结构中并不重要。
现在,百万美元的问题是,为什么如果在两个环境中正确解析对正确文件的依赖性,而不是在这个特定的PC中并且所有内容都被正确隔离?
Rails解决文件中“缺少常量”依赖关系的方式中存在一些非确定性行为?
答案 0 :(得分:0)
我遇到了类似的问题,我通过用旧版本替换宝石解决了这个问题。该项目使用的是先前版本的宝石,我使用bundle update
对其进行了更新。这导致只有一些宝石被更新到最新版本,这导致了ROM宝石的上述问题。当我恢复到旧版本的宝石时,它解决了这个问题。