如何在Rails应用程序中看到ENV vars?

lor*_*orm 12 env ruby-on-rails environment-variables

我正在接管一个旧的Rails应用程序.一年没人接触过它.最后一位开发者在2015年4月离职,我无法联系他.我确实有ssh访问服务器,我可以访问Github仓库.

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

如果我ssh到服务器并且我捕获了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
Run Code Online (Sandbox Code Playgroud)

如果我运行"printenv"命令,那么我没有看到任何这些变量.我假设它们只是由Rails环境加载.

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

如果我尝试运行"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.
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*den 15

假设登台环境,如您的示例所示.您需要通过将RAILS_ENV环境变量添加到rails console命令来加载控制台.

RAILS_ENV=staging rails console
Run Code Online (Sandbox Code Playgroud)

这应该让你进入.一旦你进入,你可以直接访问ENV变量.

2.2.2 (main):0 > ENV
Run Code Online (Sandbox Code Playgroud)

这将为您转储环境变量.请注意,您的提示可能会有所不同.如果要访问特定值(例如数据库密码),则可以:

2.2.2 (main):0 > ENV['STAGE_DATABASE_PASSWORD']
Run Code Online (Sandbox Code Playgroud)


小智 6

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

rails c
Run Code Online (Sandbox Code Playgroud)

然后根据提示:

ENV
Run Code Online (Sandbox Code Playgroud)

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

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