Ruby on Rails延迟更新

时间:2012-06-15 15:27:35

标签: ruby-on-rails ruby

我正在学习铁轨,而且我遇到了一个小怪癖,我无法在任何地方找到答案:

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

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

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

1 个答案:

答案 0 :(得分: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 costant
  • foo / bar.rb必须定义Foo:Bar costant

并且您无法自动加载没有此命名约定的文件。原因与自动加载工作有关:在你的代码中调用f.e. Foo常量,常量丢失,Rails尝试查看是否在其自动加载路径中有一个遵循此命名约定的文件,如果有,则加载它。