我在/ lib中有一个类,我正在通过控制台进行测试。我正在对类进行更改(例如添加调试器行)并使用reload!
但新的或删除的行不会反映在运行控制台的代码版本中。
试过这些:
config.cache_classes = false
reload!
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/lib/service_processors"]
config.autoload_paths << 'lib'
我正在运行一个保存的脚本,用于创建该类的实例。我尝试在我的脚本顶部加载类,但这似乎会导致一些意想不到的后果。
那么,我如何完全卸载一个类然后重新加载它?我认为该脚本将强制卸载该类,然后通过文件名加载该类。
答案 0 :(得分:1)
不确定是不是问题,但在application.rb
中您需要添加以下内容:
config.autoload_paths += %W( #{config.root}/lib )
其次,为了确保在重新加载时正确找到类/模块,命名必须遵循Rails约定。这意味着snake-casing一个模块或类名应该给出文件名,不同的命名空间(或嵌套)应该在不同的文件夹中。
使这一点更清晰的一些例子:)
class SomeClass --> /lib/some_class.rb
class SomeHTTPStuff --> /lib/some_http_stuff.rb
class API::Stuff --> /lib/api/stuff.rb
HTH。
答案 1 :(得分:0)
添加Rails标记后无效
好吧,加载一个类:
load "lib/class.rb"
重新加载:
load "lib/class.rb"
这些设置无关紧要。