我如何卸载&加载一个类?

时间:2012-12-28 16:57:57

标签: ruby-on-rails ruby rails-console

我在/ 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'

我正在运行一个保存的脚本,用于创建该类的实例。我尝试在我的脚本顶部加载类,但这似乎会导致一些意想不到的后果。

那么,我如何完全卸载一个类然后重新加载它?我认为该脚本将强制卸载该类,然后通过文件名加载该类。

2 个答案:

答案 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"

这些设置无关紧要。