生产环境下Rails lib类未被加载,在开发环境中正常运行

3

我在lib目录下有一个db_cache.rb类文件,定义了DbCache类。

我的Rails模型可以在开发模式和生产模式下的rails控制台中访问它。

但是当我运行生产模式的rails服务器时,模型类(例如Foo)会出现“未初始化常量”Foo::DbCache的错误提示。

org/jruby/RubyModule.java:2677:in `const_missing', 
org/jruby/RubyMethod.java:134:in `call'

我在application.rb中有这行代码:

config.autoload_paths += %W(#{Rails.root}/lib)

我尝试了链接的其他变体,但没有成功。
我正在使用jruby 1.7.3 (1.9.3p385) - Java 1.7.0_13-b20,在linux上。Rails版本为3.2.12。
我看过这些问题Rails - why would a model inside RAILS_ROOT/lib not be available in production mode?Best way to load module/class from lib folder in Rails 3?,但这似乎对我的情况没有帮助。
提前谢谢您对此的任何想法。
PS:目前我的临时解决方法是在我的模型类中要求 'db_cache' :(
2个回答

1

听起来你正在尝试扩展一个类。如果我没有看到db_cache.rb文件,就无法确定。

如果是这种情况,那么拥有以下内容是完全可以的:

extend DbCache

在您的模型类定义中。

0

问题似乎与在/config/environments/production.rb中启用config.threadsafe!有关。

这是我拥有的:

  # Enable threaded mode
  if defined?(Rails::Server)
    puts "Rails Server running - so enable threadsafe!"
    config.threadsafe!
  end

由于我正在使用jruby,所以我不认为这是一个大问题。至少,当我删除了这些代码后,事情变得更好了 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接