重新加载 rails 初始化程序 [英] Reload rails initializers

查看:54
本文介绍了重新加载 rails 初始化程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 application.rb 中,我有

In application.rb, I have

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

所以当我修改 lib 下的类时,我的代码会重新加载.

So when I modify a class under lib, my code is reloaded.

但是,当我尝试将配置/初始化程序添加到自动加载时,我注意到我的代码没有更新.

However, when I tried adding config/initializers to autoload, I noticed my code doesn't get updated.

如果我正在为 string 类编写扩展,则每次修改代码时都必须重新启动 rails.

If I'm writing an extension for the string class, I have to restart rails every time I modify my code.

请指教?

推荐答案

Initializers 仅在启动 rails 时加载(并且永远不会重新加载).在修改 config/initializers 时,您将每次都重新启动 rails.

Initializers are only loaded when starting rails (and never reloaded). When tinkering in config/initializers you will to restart rails every time.

当然,您可以确保您的代码在 /lib 中定义,这样您仍然可以通过使用您的测试套件来确保它工作.

Of course you could make sure your code is defined in /lib so you can still make sure it works, by using your test-suite.

例如在 lib/speaker.rb

module Speaker
  def speak
    puts "Ahum, listen: #{self.to_s}"
  end
end

然后在你的初始化器中你可以做类似的事情

and in your initializer you could then do something like

class String
  include Speaker
end

虽然这仍然只会在启动 rails 时加载,但您可以更轻松地开发和测试您的模块.

While this will still only get loaded when starting rails, you can develop and test your module more easily.

希望这会有所帮助.

这篇关于重新加载 rails 初始化程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆