创建一个将yaml配置传递给自定义类的初始化程序

时间:2012-03-07 20:44:41

标签: ruby-on-rails ruby yaml

我有一个我在/ lib文件夹中创建的自定义类:

/lib/user_service.rb

我的/ config文件夹中也有一个user_service.yml文件。

我想将此yml文件传递给我的UserService类,并设置一些类级变量。

我不确定如何创建类变量以及如何设置这些变量。

我的yaml文件包含:

user_service_url: http://www.example.com/user_service/

user_service_table: "UserTable1"

所以我的UserService类应该具有可公开访问的这两个属性,并且它们是类变量(因此您不需要实例来访问它,但实例应该能够引用它)。

有人可以帮我这个吗?

/lib/user_service.rb

module MYAPP
  class UserService
  end
end

1 个答案:

答案 0 :(得分:2)

您可以将yaml文件加载到类的哈希中,如下所示:

module MYAPP
  class UserService
    SERVICES = YAML::Load(File.open(filepath))
  end
end

然后您可以访问这两个变量,如下所示:

UserService::SERVICES['user_service_url']

如果您想在没有哈希引用样式的情况下访问它们,您可以编写深入研究哈希的方法,或者实现method_missing,以便在触发时进行哈希查找。