ruby - Rails lib 类未在生产中加载,在开发中工作正常

标签 ruby ruby-on-rails-3.2 jruby

我在 lib 目录中有一个类: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)

我也尝试了链接的 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”:(

最佳答案

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

如果是这样的话,那就太好了

extend DbCache

在你的模型类定义中

关于ruby - Rails lib 类未在生产中加载,在开发中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533006/

相关文章:

ruby - 安装 vmc 时出错,vmc 需要 multi_json(~> 1.4.0,运行时)

ruby-on-rails - 来自 Rails 应用程序的神秘 GET 请求

javascript - 重新制作涂鸦 Accordion table

ruby-on-rails - 在 Centos 6.3 上运行 'rails s' 时出现 'Could not find a JavaScript runtime.' 错误

jruby - 在 Jruby 中使用自定义 Java 类文件

ruby-on-rails - 在 Bundler 中指定 JRuby 版本

ruby-on-rails - 在 Rails 中使用 partials

ruby-on-rails - 冲突的 Devise 和 restful Controller 路由 | rails 5.2

ruby - 在 Gemfile 中设置环境以根据自定义文件 bundle 安装/更新

jruby - Rails5 jruby 无法启动