Rails“无法自动加载常量XXX”不稳定行为

时间:2015-10-12 21:51:09

标签: ruby-on-rails ruby

  • 应用程序在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解决文件中“缺少常量”依赖关系的方式中存在一些非确定性行为?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我通过用旧版本替换宝石解决了这个问题。该项目使用的是先前版本的宝石,我使用bundle update对其进行了更新。这导致只有一些宝石被更新到最新版本,这导致了ROM宝石的上述问题。当我恢复到旧版本的宝石时,它解决了这个问题。