如何在 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”
我正在接管一个旧的 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”