Ruby on rails 使用config(yaml)初始化类,并设置应为单个实例的变量
我对如何在初始值设定项中正确设置变量感到困惑,我希望这些变量是类级别的变量,而不是实例 然后我还想创建另一个对象的单个实例(它是一个连接对象,已经内置了连接池,所以我只需要对它进行一次引用)。 我的初始值设定项/初始值设定项/My_class.rbRuby on rails 使用config(yaml)初始化类,并设置应为单个实例的变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我对如何在初始值设定项中正确设置变量感到困惑,我希望这些变量是类级别的变量,而不是实例 然后我还想创建另一个对象的单个实例(它是一个连接对象,已经内置了连接池,所以我只需要对它进行一次引用)。 我的初始值设定项/初始值设定项/My_class.rb yml = YAML.load_file("#{Rails.root}/config/my_class.yml") MYMODULE::MyClass.init(yml) 这是我的课程.rb: module MYMODULE class My
yml = YAML.load_file("#{Rails.root}/config/my_class.yml")
MYMODULE::MyClass.init(yml)
这是我的课程.rb:
module MYMODULE
class MyClass
def self.init(yml)
@post_url = yml["defaults"]["post_url"]
end
def self.post_url
@post_url
end
# this should be a single instance
def connection_pool
# ???
end
end
end
self.class.post_url
MyClass.post_url
@post_url
post_url
self.post_url
self.class.post\u url
或MyClass.post\u url
将起作用。区别在于它们对子类的工作方式(在前一种情况下,子类将自动使用自己版本的该变量,在后一种情况下,它们将在MyClass
中共享该变量)
无法从实例直接访问类实例变量:您必须调用一个返回(或设置)它们的类方法。另请参见:cattr\u存取器
也就是说,如果这真的是一个单例,那么在类中配置它的一部分,然后在(单例)实例中引用该信息对我来说似乎有点奇怪。在实例上配置这些东西不是更有意义吗?或者将一个模块作为一个单例使用,而不创建实例?请您用一些代码片段解释一下,抱歉,没有得到它。