我配置了一个可以正常部署和工作的生产环境。虽然我遇到了一个我想不通的附属问题。
我正在运行 Whenever gem 来执行几个 cron 作业,Whenever gem capistrano 实现使它们正确部署并且脚本正在执行。尽管在 whenever.log 中我收到以下输出:
/bin/bash: bin/rails: Permission denied
该脚本使用运行程序从 RSS 提要进行更新,尽管我使用 Capistrano 部署到新服务器,但它在以前的生产部署中没有发生任何事故。
我四处搜索并找到了这个 question ,尽管每次部署时,我都必须使 bin/rails 可执行(由于来自 Capistrano 的日期戳部署)。有没有办法让 Capistrano 在部署时为我制作可执行文件?或者使 bin/rails 可执行是否存在一些固有的安全风险?
最佳答案
我能够通过以下方式解决我的问题(为简洁起见,包括重新启动在内的命名空间):
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
# Passenger restart mechanism
execute :mkdir, '-p', "#{ release_path }/tmp"
execute :touch, current_path.join('tmp/restart.txt')
end
end
after :publishing, :restart
after :restart, :x_bin_rails do
on roles(:web), in: :groups, limit: 3, wait: 10 do
within release_path do
execute :chmod, "u+x bin/rails"
end
end
end
end
关于ruby-on-rails - Capistrano + Whenever gems - bin/rails : Permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495102/