我在rails控制台发出这些命令,我想知道为什么我需要实例化Article.new才能让rails加载我的'livemattr-models'宝石?
1.9.3p286 :011 > defined?(Article)
=> nil
1.9.3p286 :012 > require 'livemattr-models'
=> false
1.9.3p286 :013 > defined?(Article)
=> nil
1.9.3p286 :014 > Article.new
=> #<Article _id: 51b1d5c20be168263b000001>
1.9.3p286 :015 > defined?(Article)
=> "constant"
PS。我试图解决这个问题,因为我的耙子一直在轰炸,因为我的课程没有加载。
答案 0 :(得分:1)
当您在开发中运行控制台时,Rails不会在启动时加载所有类,但它会在您需要时动态加载它们。
因此,当您实例化文章时,它将加载classe。
如果要删除此行为,请将其添加到您的environment / development.rb
config.cache_classes = true
但它会阻止rails自动重新加载你的类,并且在启动时可能会慢一些!
您可能还想了解有关cache_classes的更多信息:http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html