Ruby on rails 保持rails服务器运行的Cron作业

Ruby on rails 保持rails服务器运行的Cron作业,ruby-on-rails,Ruby On Rails,我正在尝试为rails应用程序的crontab添加以下行: * * * * * lsof -i tcp | grep -v grep | grep -q puma || /home/me/app_name/bin/rails s 。。。简言之,我有一个错误,偶尔会关闭我的rails服务器,我希望每分钟都运行这个命令,以确保服务器尽可能保持可用。(实际错误是另一天的问题。) 起初,我犯了一个错误: shared_helpers.rb: 34 in 'default_gemfile': coul

我正在尝试为rails应用程序的crontab添加以下行:

* * * * * lsof -i tcp | grep -v grep | grep -q puma || /home/me/app_name/bin/rails s
。。。简言之,我有一个错误,偶尔会关闭我的rails服务器,我希望每分钟都运行这个命令,以确保服务器尽可能保持可用。(实际错误是另一天的问题。)

起初,我犯了一个错误:

shared_helpers.rb: 34 
in 'default_gemfile': could not locate Gemfile (Bundler::GemfileNotFound)
。。。可追溯到箱子/轨道中的第4行:

load File.expand_path('../spring', __FILE__)
我将(“../spring”)更改为(“./spring”),因为spring脚本与rails脚本位于同一目录中,而不是父目录中。(奇怪的是,无论我在路径中使用“..”还是“.”,从命令行运行
rails s

这至少消除了上面的错误,但现在我有以下几点:

/bin/sh: 1: lsof: not found
/bin/sh: 1: grep: not found
/bin/sh: 1: grep: not found
/usr/bin/env: 'ruby_executable_hooks': No such file or directory
我每分钟会收到一次这些错误,所以至少我知道我输入的时间格式是正确的

我的crontab的相关部分如下所示:

PATH=$PATH:/usr/share/rvm/rubies/ruby-2.4.1/bin/
GEM_PATH=$GEM_PATH:/usr/share/rvm/gems/ruby- 
2.4.1:/usr/share/rvm/gems/ruby-2.4.1@global
* * * * * lsof -i tcp | grep -v grep | grep -q puma || /home/me/app/bin/rails s
我还尝试:

* * * * * lsof -i tcp | grep -v grep | grep -q puma || /usr/share/rvm/gems/ruby-2.4.1/bin/rails s
。。。但是得到同样的错误

正如我提到的,我可以从命令行运行
rails s
。我知道从登录的shell运行命令有读取登录脚本和设置环境变量的好处,但我不知道需要做什么才能让这个crontab中的环境协同工作


注意:我没有在任何时候使用
gem来实现这一点,因为我使用的是外部命令,如
grep
lsof
;如果有一个等效的基于rails的解决方案(测试服务器是否正在运行,如果没有,则启动它),我可以这样做,而不是使用crontab。(但我不知道那会是什么。)

我觉得这是一种相当奇怪的方法。更确切地说,我希望你能挽救这个错误——这将消除所有这些的必要性。我不知道错误是什么。它没有出现在日志中,也没有什么可以继续的。它可能与应用程序相关、与服务器相关或其他内容相关,但除非我找到解决方法,否则这是我能想到的最好的解决方法。这就是为什么我说“实际的错误是另一天的问题。”