Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails gem未使用环境变量_Ruby On Rails_Ruby_Gem_Environment Variables - Fatal编程技术网

Ruby on rails Rails gem未使用环境变量

Ruby on rails Rails gem未使用环境变量,ruby-on-rails,ruby,gem,environment-variables,Ruby On Rails,Ruby,Gem,Environment Variables,我创建了一个Rails gem和一个使用该gem的Rails应用程序。gem部署在Gemfury,我成功地捆绑安装了gem。在gem中,我将一个变量设置为环境变量。当我在本地运行我的应用程序时,应用程序中使用环境变量的位置可以读取Figaro管理的我的环境变量,但gem无法读取。我可能遗漏了什么或做错了什么 例如,如果我在gem中执行此操作: cache_enabled = ENV['CACHE_ENABLED'] || false 即使我的环境变量CACHE_ENABLED=true,它也

我创建了一个Rails gem和一个使用该gem的Rails应用程序。gem部署在Gemfury,我成功地捆绑安装了gem。在gem中,我将一个变量设置为环境变量。当我在本地运行我的应用程序时,应用程序中使用环境变量的位置可以读取Figaro管理的我的环境变量,但gem无法读取。我可能遗漏了什么或做错了什么

例如,如果我在gem中执行此操作:

 cache_enabled = ENV['CACHE_ENABLED'] || false
即使我的环境变量CACHE_ENABLED=true,它也将以false结束。我的Rails应用程序读取环境变量没有问题


如果有区别的话,我使用的是Rails 4。

如果您使用的是Rails 4.1或更高版本,那么可能是

您应该能够$spring stop,然后正确运行您的应用程序,因为spring将使用新的env vars重新启动

您可以根据永久移除弹簧


作为旁注,我倾向于在本地使用foreman run命令,包括不太为人所知的foreman run命令,如果这样做,那么您可以将DISABLE_SPRING=1预先添加到您的.env中,并且无论何时使用foreman,SPRING都将被绕过。

因此,环境变量是在本地设置的,是吗?生产应用程序位于何处?能否验证设置变量的环境是否与运行库的环境相同?@Mallanaga我正在本地设置环境变量并在本地运行。当我进入生产环境时,我将把它放在Heroku中并设置Heroku环境变量。@zeantsoi如果我正在运行在Gemfile中指定gem的Rails应用程序,这些gem与应用程序运行在同一环境中,对吗?请在代码行后添加调试行:p ENV['CACHE_ENABLED'].class和p CACHE_ENABLED。给我们看一个结果。