Rails lib类没有在生产中加载,在开发中工作正常

时间:2013-03-20 19:33:29

标签: ruby ruby-on-rails-3.2 jruby

我在lib目录中有一个类:lib \ db_cache.rb,它定义了类DbCache。

My Rails模型可以在开发模式下以及在生产模式下运行rails console时访问它。

但是当我运行生产模式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)

我也尝试了链接的SO问题中显示的其他变体 - 但没有快乐。

我在linux上使用jruby 1.7.3(1.9.3p385) - Java 1.7.0_13-b20。 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 个答案:

答案 0 :(得分:1)

听起来你正试图扩展课程。没有看到db_cache.rb文件,我无法确定。

如果是这样的话,那么

是完全没问题的
extend DbCache
模型类定义中的

答案 1 :(得分:0)

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

这就是我所拥有的:

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

当我使用jruby时,我不相信这是一个很大的问题。至少,当我删除这些行时,事情会好得多:)