1

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

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

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

4

2 回答 2

1

不确定这是问题所在,但application.rb您需要添加以下行:

config.autoload_paths += %W( #{config.root}/lib )

其次,为了确保在重新加载时正确找到类/模块,命名必须遵循 Rails 约定。这意味着蛇形封装模块或类名应该给出文件名,并且不同的命名空间(或嵌套)应该位于不同的文件夹中。

一些例子可以使这一点更清楚:)

class SomeClass     --> /lib/some_class.rb
class SomeHTTPStuff --> /lib/some_http_stuff.rb
class API::Stuff    --> /lib/api/stuff.rb

HTH。

于 2012-12-31T09:49:29.030 回答
0

添加 Rails 标签后无效

好吧,加载一个类:

load "lib/class.rb"

要重新加载:

load "lib/class.rb"

这些设置无关紧要。

于 2012-12-28T17:15:13.583 回答