1

我正在学习 rails 并且遇到了一个小怪癖,我似乎无法在任何地方找到答案:

由于我正在学习 rails,我将在 localhost 运行时对代码进行一些调整(rails s),然后刷新浏览器以查看我想要进行的更改是否准确。这适用于视图、css、html、路由等的更改。

但是现在我正在对一个控制器文件进行更改,该文件正在调用我编写的另一个 ruby​​ 类,当我对 ruby​​ 类进行更改时,它们不会立即显示出来。我知道这一点的方式是,我在 Ruby 类中使​​用了各种 printf 函数来显示事物的当前状态,如果我添加一个并重新运行,它不会显示,除非我关闭服务器并重新启动它。

有什么想法吗?这是一个已知的问题?

4

1 回答 1

2

您必须自动加载包含自定义文件的文件夹:

# in config/application.rb:

# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/extras)

在那里你写你想要自动加载的文件夹。

警告:命名非常重要:其中的文件必须命名为它们定义的类/模块(如模型、控制器等):

  • foo.rb 必须定义 Foo 成本
  • foo/bar.rb 必须定义 Foo:Bar costant

并且您不能自动加载没有此命名约定的文件。原因与自动加载工作有关:当在您的代码中调用 feFoo常量并且该常量丢失时,Rails 会尝试查看其自动加载路径中是否存在遵循此命名约定的文件,如果存在则加载它.

于 2012-06-15T15:34:04.647 回答