在模块中调用Rails常量

时间:2013-02-28 19:39:57

标签: ruby-on-rails ruby

我在app / concerns中声明了一个模块MigrationProcedures,我想用它来执行一些不受支持的ActiveRecord SQL语句。

在这个模块中,我需要调用常量

[RAILS_ENV]['database']

但是现在看来,rails告诉我方法中有一个未初始化的常量RAILS_ENV

我不应该在

下使用它
def self.included(base)
...
end

我尝试使用AppName::RAILS_ENV,但这告诉我MigrationProcedures::AppName不存在。我该怎么称呼它?

1 个答案:

答案 0 :(得分:2)

您可以通过以下几种方式访问​​Rails环境:

c = ::Rails.application.config
my_env = ::ENV

在第一种情况下,c.database_configuration[Rails.env]["database"]会为您提供所需内容。

::SOME_MODULE语法将您从当前的命名空间中转移到新的命名空间中。如果没有模块名称,它会将您带到Ruby环境的顶端。

This Stack Overflow discussion is very illuminating.