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



我正在接管一个旧的Rails应用程序。 一年来没有人碰过它。最后一位开发人员在 2015 年 4 月离开,我没有办法联系他。我确实有对服务器的 ssh 访问权限,并且我有权访问 Github 存储库。

我不知道任何用户名/密码。

如果我 ssh 到服务器并 cat 数据库.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 环境加载。

我想我可以编辑模板以用一堆"放置"语句吐出值,但我认为除了在公众可以看到的地方打印数据之外,还必须有一种更明显的方法来做到这一点?

如果我尝试运行"rails 控制台",我会得到:

  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,所以我无法解决这个错误。

假设暂

存环境,如您的示例所示。 您需要通过将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"

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

查找类似于

AWS_KEY_ID: blahblah23rkjewfojerflbah
AWS_SECRET_KEY_ID: blahblah2394082fkwejfoblah

相关内容

  • 没有找到相关文章

最新更新