在Capistrano的项目暂存部署期间,要解决常见的数据库访问错误,我注意到了rake stderr行:
rake stderr: config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly..
Run Code Online (Sandbox Code Playgroud)
但是,我的config/environments/*rb文件已根据需要正确设置..为什么这条消息?我错过了什么?
我的config/environments/development.rb
config.eager_load = false
Run Code Online (Sandbox Code Playgroud)
我的config/environments/production.rb
config.eager_load = true
Run Code Online (Sandbox Code Playgroud)
我的config/environments/test.rb
config.eager_load = false
Run Code Online (Sandbox Code Playgroud)
这是控制台日志的摘录
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
SSHKit::Command::Failed: rake exit status: 1
rake stdout: Nothing written
rake stderr: config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:
* development - set it to false
* test - set it to false (unless you use a tool that preloads your test environment)
* production - set it to true
rake aborted!
Mysql2::Error: Access denied for user 'root'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)
我在部署时遇到了类似的问题
cap staging deploy
Run Code Online (Sandbox Code Playgroud)
问题是 capistrano 正在寻找数据库myapp_staging
,而我需要myapp_production
。
我通过添加修复了它
set :stage, "production"
Run Code Online (Sandbox Code Playgroud)
在config/deploy/staging.rb
。
(在评论中回答。已转换为社区 wiki 答案。请参阅没有答案的问题,但问题已在评论中解决(或在聊天中扩展))
@amoebe 写道:
我认为这里的主要问题是 MySQL 凭据错误。
OP 写道:
你是对的,我必须通过任务
capistrano
(setup:upload_yml
)来管理我的生产/暂存部署凭据,以将secrets.yml
和database.ym
l 上传到我的远程服务器......现在运行良好......