如何在生产中运行delayed_job?

时间:2016-02-24 07:48:55

标签: ruby-on-rails ruby delayed-job

我正在尝试使用$ 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>'

这可能不是延迟工作的问题,但我无法在这个权限问题的任何地方找到答案,我希望有人可能知道如何才能使其在生产中发挥作用。

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

2 个答案:

答案 0 :(得分:3)

这是一个缺少的文件夹,而不是权限问题。您应该使用ssh登录到远程并在那里运行:

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

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

答案 1 :(得分:2)

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