在Rails中为不同环境存储全局变量

时间:2015-03-16 22:50:09

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

在我的Rails应用程序中,我也尝试测试我对Redis的调用。例如,在我的用户模型中,我有:

def self.add_to_visibles user #To show in the menu
    $redis.lpush("user_visibles", user.to_json(only: [:vorname, :nachname, :id, :created_at]))
end

现在,当我运行此测试时,测试数据也会插入到redis存储区"user_visibles"中。这意味着当我在开发时,我也可以看到这些数据。

这就是为什么我想将我的方法改为:

def self.add_to_visibles user #To show in the menu
    $redis.lpush($user_visibles, user.to_json(only: [:vorname, :nachname, :id, :created_at]))
end

并存储在$user_visibles

进行测试:$user_visibles = "user_visibles_test"

和生产$user_visibles = "user_visibles"

我最好存储这个变量?那怎么会对环境有所不同?

1 个答案:

答案 0 :(得分:0)

我做这样的事情:

配置/ user_variables.rb

Rails.configuration.user_variable =  YAML::load_file("#{Rails.root}/config/user_variables.yml")[Rails.env]

并像这样创建config / user_variables.yml

production: 'user_visibles'
test: 'user_visibles_test'

请记住重新启动服务器

您必须在需要的地方使用Rails.configuration.user_variable获取值