我有一些常见模型的宝石,我试图集成到两个rails应用程序中。 (注意,其中一个应用程序是Rails 2.3)
此时似乎一切正常,但我得到了
can't dup NilClass
在使用给定模型的第二个请求上。
设置config.cache_classes = true
将解决此问题,但显然不适合开发模式。
在Google上搜索我发现了unloadable
指令的一些引用,所以我尝试将其添加到我的宝石模型中:
class User < ActiveRecord::Base
unloadable
#stuff
end
这导致Rails爆炸说它无法找到常数。
我真的只需要一种方法来告诉rails应用程序在开发模式下重新加载gem类,而不是像现在这样扔掉它们。
答案 0 :(得分:0)
好的,问题最终还是自动加载路径。
由于模型有一些难以满足的依赖,一次要求它们,我有一个看起来像的models.rb文件:
autoload :User, 'my_gem/models/user'
autoload :Role, 'my_gem_models/role'
这意味着它是手动自动加载的,而不是Rails autoload_path范例的一部分。只需拉入ActiveSupport :: Dependencies并将models目录附加到自动加载路径就可以了。
ActiveSupport::Dependencies.autoload_paths += Dir.glob "#{File.expand_path("../my_gem/models/", __FILE__)}/**/"