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