如何在生产服务器中设置和使用Rails环境变量?

时间:2015-12-10 12:24:18

标签: ruby-on-rails git ruby-on-rails-4 github

我需要为我的rails app设置一个环境变量。在我的本地机器和生产服务器中。我在互联网上阅读了一些教程,但NONE已经给出了如何在实际生产服务器中设置和使用这些变量的完整说明。我使用数字海洋和Linux服务器来托管我的rails应用程序。

我花了好几天时间试图解决这个问题,但仍然没有通过在我的本地机器上设置变量找到明确而完整的指令 - >把它推到git repo - >设置并使用生产服务器中的变量。所以,希望有人能在这里帮助我,谢谢!

更新

这就是我目前使用figoro gem在我的rails应用程序中设置环境变量的方法:

enter image description here

7 个答案:

答案 0 :(得分:2)

您可以在/etc/rc.local文件中设置系统范围的环境变量(在系统引导时执行)。如果您的Rails应用程序是Linux系统的唯一用户,那么这是存储API密钥等凭据的好地方,因为不存在将此文件包含在公共Git存储库中的风险,因为它位于应用程序目录之外。只有攻击者获得对Linux服务器的shell访问权限时,秘密才会受到攻击。

在/etc/rc.local中设置环境变量(不包括<>字符):

export SOME_LOGIN=<username>
export SOME_PASS=<password>

要查看环境变量的值,请在Linux shell中使用以下命令之一:

printenv MY_VAR
echo $MY_VAR

要在Rails中访问这些环境变量,请使用以下语法:

内部.rb文件或在rails控制台

ENV['MY_VAR']

内部.yml文件:

<%= ENV['MY_VAR'] %>

答案 1 :(得分:1)

答案 2 :(得分:1)

对于仍有这个问题的人来说,figaro现在有一个简单的方法来设置heroku中的生产变量。跑吧:

$ figaro heroku:set -e production

答案 3 :(得分:0)

您可以以相同的方式在生产环境中设置环境变量,您可以为本地系统执行此操作。然而,有几个宝石,这使得更容易跟踪和推动生产。看看figaro。这将有助于您设置和部署环境变量。

答案 4 :(得分:0)

您可以使用figaro gem执行此操作 或者在rails 4中,在config文件夹中有一个名为secret.yml的文件,你可以在.gitignore文件中默认定义你的环境变量。对于生产,出于安全原因你需要手动将该文件复制到服务器,以便敏感信息不适用于任何人

答案 5 :(得分:0)

首先创建变量,如:

MY_ENV_VAR="this is my var"

然后将其全球化:

export MY_ENV_VAR

您可以检查过程是否成功:

printenv

或者:

echo MY_ENV_VAR

答案 6 :(得分:0)

ryzalyusoff。

对于Unix

您可以在rails应用程序中使用 LINUX ENV

# .env
GITHUB_SECRET_KEY=SECRET
TWITTER_ACCESS_KEY=XXXXXXXXXXXX
# in rails code
puts ENV["TWITTER_ACCESS_KEY"] # => SECRET

为本地计算机和生产服务器创建.env文件。像这样导出环境变量(在服务器上使用ssh ):

export GITHUB_SECRET_KEY="XXXXXXXXXXXXXXXXXX"

无论如何,将密钥存储在配置中 - 糟糕的主意。只需添加.env.example,其他密钥配置即可添加到.gitignore。古德勒克。

Example with Rails

对于Windows

Syntax
  SET variable
  SET variable=string
  SET /A "variable=expression"
  SET "variable="
  SET /P variable=[promptString]
  SET "
Key
  variable    : A new or existing environment variable name e.g. _num
  string      : A text string to assign to the variable.
  expression  : Arithmetic expression

Windows CMD