【发布时间】:2009-10-15 15:10:25
【问题描述】:
我有一个engine style Rails plugin,我可以从中使用Jeweler 创建一个gem。但是当我在我的 Rails 环境(或 erb)中需要它时,插件中的模型不会被加载。我遵循了许多教程并阅读了有关该主题的所有内容。
# environment.rb
config.gem 'myengine'
# in irb
require 'myengine'
我已解压缩 gem 并验证所有文件都存在。我的 init.rb 已移至名为“rails”as per 的新文件夹中。 'lib' 中的所有文件都会自动添加到 $LOAD_PATH,因此 require 'myengine' 运行 lib/myengine.rb。我通过在其中添加puts 'hello' 来验证这一点。
是不是因为插件在已知位置的物理存在,Rails 可以将所有模型、控制器等添加到相关的 load_paths 中?使用 gem 时需要手动复制吗?
gemspec require_paths 是一种添加除 lib 之外的其他路径的方法吗?然而,我假设 Rails 不仅需要每个文件,而是按需加载它们,因此需要文件名和类名匹配?
【问题讨论】: