我正在尝试使用cron和systemd在我的Rails模型中启动一个类方法。
不幸的是,当cron尝试激活正确的Rails方法时,似乎存在一些路径问题。
下面是我的跑步者脚本,造成问题的一行是第3名:
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/runner'
完成后出现以下错误消息:
Apr 01 09:00:01 myapp systemd[1]: Started Myapp ModelA method b.
Apr 01 09:00:02 myapp runner[25783]: /srv/myapp/current/script/runner:3:in `require': cannot load such file -- commands/runner (LoadError)
Apr 01 09:00:02 myapp runner[25783]: from /srv/myapp/current/script/runner:3:in `<main>'
或者也许是因为Rails正在玩愚人节的第一个笑话?
答案 0 :(得分:0)
问题是myapp最近从Rails 2.3更新到Rails 4.1,作为遗留问题,/script
文件夹仍然用于启动跑步者。
在Rails 4中启动runner的正确方法是使用这样的bin / rails脚本:
bin/rails runner "Model.method"
我遇到的另一个问题是我的bin/*
文件中指定了.gitignore
,因此bin/rails
脚本甚至不在服务器中。