ruby-on-rails - Capistrano + Whenever gems - bin/rails : Permission denied

标签 ruby-on-rails ruby cron capistrano3

我配置了一个可以正常部署和工作的生产环境。虽然我遇到了一个我想不通的附属问题。

我正在运行 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/

相关文章:

php - 将 C++ 程序作为 cronjob 运行时出现问题

python - 使用 crontab 运行脚本时无法导入 Python MySQL 模块

ruby-on-rails - 数据库中的大数组不会在 Rails View 中加载

使用 activerecord 模型验证器的 Javascript 验证

ruby-on-rails - 如何修复 rails 中的 "Function not implemented - Failed to initialize inotify (Errno::ENOSYS)"

ruby - 使用 axlsx 电子表格 ruby​​ gem 将单元格格式化为文本?

ruby-on-rails - Rails attr_accessible :object vs :object_id

ruby-on-rails - 将 Sidekiq 升级到 v6 后,它不会在生产环境中自动启动

ruby - 有没有一种方法可以编写一个 Ruby 循环,该循环在最大设定时间内运行一次迭代?

php - 安排一个 php 页面调用 mysql 中的存储过程每 x 秒运行一次