2012-09-21 69 views
1

在我的Web应用程序中,我想访问我的初始化器文件中的环境变量。 我intiailizer文件看起来像(初始化/ gcm_on_rails.rb)初始化器内的访问环境变量Ruby on Rails

configatron.gcm_on_rails.api_url = 'https://android.googleapis.com/gcm/send' 

#configatron.gcm_on_rails.api_key = 'abc' 

configatron.gcm_on_rails.api_key == ENV['GCM_API_KEY'] 

Rails.logger.debug"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ #{configatron.gcm_on_rails.api_key}" 

configatron.gcm_on_rails.app_name = 'com.xyz' 

configatron.gcm_on_rails.delivery_format = 'json' 

,并在我的.bashrc文件,我添加以下

export GCM_API_KEY="abc" 

,但我的记录没有给我任何值的键值。这意味着我无法访问这些环境变量。我想访问这些变量。需要帮助...谢谢.....

+0

你已经在第三行中使用 “==”,你指定ENV [ 'GCM_API_KEY']到configatron.gcm_on_rails.api_key? – Mohanraj

+0

@Mohanraj感谢您的重播。我想将configatron.gcm_on_rails.api_key设置为GCM_API_KEY,它被设置在.bashrc文件(即环境变量)中。任何解决方案。 – nilkash

+0

嗨,您的信息。 Rails根据版本从(〜/ .rvm/environments /)加载ENV。我已经检查过,当我在上面的目录下添加一些变量到默认的env文件时,它会反映在irb上,但它不会在rails控制台中加载。 – Mohanraj

回答

0

如果您在/ etc/bashrc或/ etc/profile中设置了环境变量,那么这些环境变量将在您的shell中可用。然而,在大多数操作系统中,Apache不是从shell启动的,也不会加载在bashrc/profile中定义的环境变量,这就是为什么在/ etc/bashrc和/ etc/profile中设置环境变量通常不会影响Apache(和通过归纳,乘客和铁路过程)。

参考: - http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

+0

我试过你的解决方案。我使用'GCM_API_KEY',但它给了我错误“未初始化的常量GCM_API_KEY”我在.bashrc文件中声明了这些变量,但仍然无法访问这些值..任何其他解决方案... – nilkash

相关问题