Rails 5需要应用程序控制器中的初始化程序

时间:2018-04-18 08:49:42

标签: ruby-on-rails ruby

我的应用程序需要在初始化时进行一些预计算。我有一个Ruby文件config/initializers/start_1.rb,在这个文件中,我require/config/lib/init_module.rb中的通用模块,如下所示:

require './lib/init_module.rb'
Init::Class1.new
Init::Class1.new

/config/lib/init_module.rb文件中,我为每个新对象增加一个值,如下所示:

module Init
  class Class1
    @@local = 0

    def initialize
      @@local += 1
    end

    def self.local
      @@local
    end
  end
end

在我的应用程序控制器中,对于来自客户端的每个请求,我想使用这个预先计算的值。

  1. 如果我在我的应用程序控制器中require /config/lib/init_module.rb,它将不会给我任何关于本地值的内容(= 0),因为每个请求都会创建一个新实例。 (实际上,我不明白为什么@@local是一个类变量。)
  2. 如果我在我的应用程序控制器中require /config/initializers/start_1.rb,它将为每个请求运行初始化程序,这将导致巨大的开销。
  3. 感谢您对我的问题的建议。

1 个答案:

答案 0 :(得分:0)

我使用.pow服务器为我的应用程序提供本地域名,问题是让.pow服务器为每个请求重新加载,从我的应用程序中删除tmp / restart.txt后,问题解决了!谢谢你的帮助。