我在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':(
答案 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时,我不相信这是一个很大的问题。至少,当我删除这些行时,事情会好得多:)