我创建了一个带有模型的 Gem(实际上是从主项目中提取的),以便在我们平台上的项目中共享。
我们有几十个模型,所以我没有一个一个地要求它们,而是编写了以下代码:
Gem.find_files("my_gem/models/*.rb").each { |path| require path }
我访问在 gem 文件中有 my_gem 的项目之一并运行rails c
我得到以下输出:
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/dynamic_matchers.rb:50:in `method_missing': undefined method `has_attached_file' for #<Class:0x007fad4b93ccb8> (NoMethodError)
我的一个模型是使用宝石回形针,奇怪的是:
- 如果我删除上面声明的行以自动加载所有模型,
rails c
运行良好 - 如果我尝试仅包含使用回形针的模型,
require "my_gem/models/paperclip_model"
我会收到相同的错误
所以然后我将我的 gem 更改为不加载任何模型,当我尝试从 rails 控制台引用任何模型时,它说类未加载,但随后我运行Gem.find_files("my_gem/models/*.rb").each { |path| require path }
或require "my_gem/models/paperclip_model"
'它们完美地工作并且我能够使用模型.
你们中有人见过同样的问题吗?