如何在 Rails 应用程序中查看 ENV 变量?

How do I see the ENV vars in a Rails app?

我正在接管一个旧的 Rails 应用程序。一年内没有人碰过它。最后一位开发者于 2015 年 4 月离开,我无法联系到他。我确实可以通过 ssh 访问服务器,并且可以访问 Github 存储库。

usernames/passwords 我一个都不认识。

如果我通过 ssh 连接到服务器并 cat database.yml 文件,我会看到如下内容:

  staging:
        adapter: mysql2
        encoding: utf8
        pool: 5
        socket: /var/lib/mysql/mysql.sock
        database: o_wawa_stage
        username: wawa_stage
        password: <%= ENV['STAGE_DATABASE_PASSWORD'] %>
        host: access.dmedia.com

如果我 运行 "printenv" 命令,那么我看不到任何这些变量。我假设它们仅由 Rails 环境加载。

我想我可以编辑模板以使用一堆 "put" 语句吐出值,但我认为必须有更明显的方法来执行此操作,而不是在其中打印数据public 能看到吗?

如果我尝试 运行 "rails console" 我得到:

  Rails Error: Unable to access log file. Please ensure that /var/www/haha/production/releases/20150118213616/log/development.log exists and is writable (ie, make it writable for user and group: chmod 0664 /var/www/haha/production/releases/20150118213616/log/development.log). The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

我在这个盒子上没有sudo,所以我无法解决这个错误。

yourapp/config/env.yml 或 application.yml 等...

寻找类似于

的代码
AWS_KEY_ID: blahblah23rkjewfojerflbah
AWS_SECRET_KEY_ID: blahblah2394082fkwejfoblah

假设暂存环境,正如您的示例所指出的那样。您需要通过将 RAILS_ENV 环境变量添加到 rails console 命令来加载控制台。

RAILS_ENV=staging rails console

这应该可以让您进入。进入后,您可以直接访问 ENV 变量。

2.2.2 (main):0 > ENV

这将为您转储环境变量。请注意,您的提示可能看起来有所不同。如果你想访问特定的值,比如数据库密码,你可以:

2.2.2 (main):0 > ENV['STAGE_DATABASE_PASSWORD']

在您的应用程序目录中,只需启动 Rails 控制台:

rails c

然后在提示符下:

ENV

这将列出您上次导出的环境的所有已加载环境变量。

抱歉,在发布这篇文章后,我意识到作者已经尝试使用 rails 控制台但出现错误...但我相当确定这应该始终有效。您不能在控制台中请求 printenv 或 env,您 必须 使用全部大写的“ENV”