如何在生产中运行 delayed_job?

How to run delayed_job in production?

我正在尝试 运行 使用 $ RAILS_ENV=production bin/delayed_job start 延迟生产作业(Elastic Beanstalk,AWS),但是我收到以下权限错误:

/opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `mkdir': Permission denied @ dir_s_mkdir - /var/app/current/tmp/pids (Errno::EACCES)
    from /opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `daemonize'
    from bin/delayed_job:5:in `<main>'

这可能不是 Delayed Job 的问题,但我真的无法在任何地方找到此权限问题的答案,我希望有人知道我可以做些什么来让它工作生产。

非常感谢任何帮助!谢谢!

这与其说是权限问题,不如说是文件夹丢失。您应该使用 ssh 和 运行 登录远程:

sudo mkdir -p /var/app/current/tmp/pids
sudo chmod +xw /var/app/current/tmp/pids

在喂食偏执狂的情况下,也可能 chown 给用户,实际上 运行s ruby 代码在那里,但在这种情况下没有必要,因为这都是关于存储 PID。

  1. 检查哪个用户 delay_job 以
  2. 开头
  3. 检查/var/app/current/tmp/pids权限,权限必须适合用户。
  4. 如果pids不存在,检查/var/app/current/tmp权限