Rails加载初始化类

时间:2014-03-25 13:10:36

标签: ruby-on-rails initializer

在我的Rails应用程序中,我创建了一个initalizer,其责任在于:

  1. 需要我的应用的服务层

    Dir[File.expand_path('services/*.rb',\__FILE__)].each { |file| require file }

  2. 创建这些服务并在其中注入依赖项

  3. 但是现在,当我在开发项目中更新我的项目中的文件时,我的rails服务器开始抱怨类不再可用了。

    为了使其工作,我必须删除我的tmp目录和再次运行rails服务器以使其再次运行。

    我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

哪个tmp /目录?里面有什么?

由于您正在使用初始化程序,因此重新启动并不令人意外。它们在启动时加载一次,就是这样。

也许https://github.com/guard/guard可以帮助您自动重新加载env。

也许这不是你正在寻找的初始化者......

答案取决于你想要达到的目标。这更像是一个架构问题而不是代码/ dev一个难以理解的问题。

答案 1 :(得分:0)

我认为创建初始化程序以加载这些文件的更好解决方案是在application.rb文件中使用以下语法:

module AppName
  class Application < Rails::Application
    #other config stuff here
    config.eager_load_paths << "path to your services directory"
  end
end

这将使rails在开发模式下为每个请求重新加载文件,并且通常在生产模式下要求它们。