我最近注意到卡皮斯特拉诺有些奇怪的东西。但在我解释之前,让我先从它的确切位置出发。
作为在每次部署时更新"onNetworkLost()"
的一部分。我决定使用whenever/capistrano
食谱。
但出于某种原因(我不知道,但我在github中看到issue描述相同的内容)。每当我尝试这样做时,我都会看到以下错误。
"数据库配置未指定适配器"
重要的一点。这里命令的外观如何
"onNetworkAvailable()"
请注意这个命令。
crontab
现在,为了解决这个问题。我设置 whenever_command,一个capistrano变量看起来像这样。
INFO [a558a04a] Running ~/.rvm/bin/rvm 2.2.2@thrasher do bundle exec whenever --update-crontab thrasher --set environment=production --roles=app,web,db as deploy@x.x.x.x
DEBUG [a558a04a] Command: cd /home/deploy/project-scp/thrasher/releases/20160129130817 && ~/.rvm/bin/rvm 2.2.2@thrasher do bundle exec whenever --update-crontab thrasher --set environment=production --roles=app,web,db
DEBUG [a558a04a] scheduling frequent upload job
scheduling daily upload job
DEBUG [a558a04a] [write] crontab file updated
INFO [a558a04a] Finished in 2.411 seconds with exit status 0 (successful).
而且......
当我再次运行capistrano时,我看到了这一点。
~/.rvm/bin/rvm 2.2.2@thrasher do bundle exec whenever ...
执行的命令是
set :whenever_command,["RAILS_ENV=#{fetch(:stage)",:bundle,:exec,:whenever]
为什么2次命令看起来不像这样。
Running /usr/bin/env RAILS=production bundle exec whenever --update-crontab thrasher --set environment=production --roles=app,web,db as deploy@x.x.x.x
DEBUG [b67e3351] Command: cd /home/deploy/project-scp/thrasher/releases/20160129131301 && /usr/bin/env RAILS=production bundle exec whenever --update-crontab thrasher --set environment=production --roles=app,web,db
/usr/bin/env RAILS=production bundle exec whenever ...
~/.rvm/bin/rvm 2.2.2@thrasher do RAILS_ENV=production bundle exec whenever
Rails 4.0.4
也使用
Capistrano Version: 3.4.0 (Rake Version: 10.5.0)
按照@will_in_wi的回答。要解决Ruby ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
问题,我也尝试过这样做。(在capistrano/rvm
文件中。)
whenever
答案 0 :(得分:3)
简短回答:在:whenever_command
中放置环境变量不是正确的方法。根据when / capistrano代码,您应该使用:whenever_command_environment_variables
。
删除:whenever_command
并尝试此操作:
set :whenever_command_environment_variables, -> { { :rails_env => fetch(:stage) } }
答案很长:你使用的是capistrano / rvm,它与Capistrano" s"命令图"使用~/.rvm/bin/rvm...
自动为某些命令添加前缀。例如,这些特定命令之一是bundle
。如果将when命令更改为不再以:bundle
开头,则映射将不再有效。
答案 1 :(得分:0)
如果没有看到您的Capfile,您可能需要启用某些capistrano / rails子集。这将强制设置RAILS_ENV:https://github.com/capistrano/rails/blob/master/lib/capistrano/tasks/set_rails_env.rake