Ruby on rails 在rails中设置全局实例的最佳方法是什么?

Ruby on rails 在rails中设置全局实例的最佳方法是什么?,ruby-on-rails,Ruby On Rails,我有一个发布类: 类发布 def初始化(应用程序id、密钥) @应用程序id=应用程序id @秘密密钥=秘密密钥 结束 def发布(源文件、目标链接) # ... 结束 结束 我想要一个Publish的全局实例变量,所以我在initializer中做了一些事情: Publish.class\u eval do class\u属性:实例 结束 Publish.instance=Publish.new(Settings.app\u id、Settings.secret\u key) 所以我可以在

我有一个发布类:

类发布
def初始化(应用程序id、密钥)
@应用程序id=应用程序id
@秘密密钥=秘密密钥
结束
def发布(源文件、目标链接)
# ...
结束
结束
我想要一个Publish的全局实例变量,所以我在initializer中做了一些事情:

Publish.class\u eval do
class\u属性:实例
结束
Publish.instance=Publish.new(Settings.app\u id、Settings.secret\u key)
所以我可以在任何地方检索实例:

Publish.instance.Publish(源文件、目标链接)

但是,如果我更改Publish的代码,由于自动重新加载,它将抛出一个错误
Publish的未定义方法“instance”

将实例创建/分配放在
块中,以便\u prepare
块。这样,在生产中只需创建一次,但在开发模式下重新加载应用程序的任何时候都可以

Rails.application.config.to_prepare do
  Publish.instance = Publish.new(Settings.app_id, Settings.secret_key)
end

(我会将
class\u属性
移动到类定义中,但如果您愿意,您也可以将其放在
中,以准备

也许这是最好的选择。