【问题标题】:How to run system commands before program start using Ruby GOD gem如何在程序开始使用 Ruby GOD gem 之前运行系统命令
【发布时间】:2013-11-20 08:52:23
【问题描述】:

我用GOD看过程=>rake resque:scheduler

在运行 'rake resque:scheduler' 之前,我必须运行 rake resque_schedule:setup

但以下设置不起作用。

我使用 ps aux 列出进程,但调度程序未按预期工作。

它应该定期生成任务。

如果我在 shell 中键入 2 个命令,它就可以工作。

我没有想法

God.watch do |w|


  system("rake resque_schedule:setup ") # run the rake to load environment

  w.name = 'resque-scheduler'
  w.interval = 5.seconds
  w.dir = File.expand_path(File.join(File.dirname(__FILE__),'..'))
  # w.start = "rake resque_schedule:setup ; rake resque:scheduler "
  w.start = "rake resque:scheduler "
  w.start_grace = 10.seconds
  w.log = File.expand_path(File.join(File.dirname(__FILE__), '.','log','resque-scheduler.log'))
  w.keepalive(:memory_max => 150.megabytes,
              :cpu_max => 50.percent)


end

【问题讨论】:

  • 为什么是system 命令?如果您想加载环境,可以通过rake environment resque:scheduler 之类的简单方式完成

标签: ruby god


【解决方案1】:

您应该在拨打god.start 之前拨打rake resque_schedule:setup

例如:

system("rake resque_schedule:setup")
god.start

【讨论】:

  • 在我终止进程之前调用系统命令是否仍然有效?
  • 你的意思是......当上帝进程被杀死时,你想杀死resque_schedule:setup
  • 没有。上帝看着rake resque:scheduler。如果我杀死rake resque:scheduler 的pid。 GOD会在重启前运行`system("rake resque_schedule:setup")`吗rake resque:scheduler.
  • 我认为你必须在w.start_if块中做。
  • 你能试试这个吗(将两个命令合并为一个):w.start = "rake resque_schedule:setup; rake resque:scheduler"
猜你喜欢
  • 2016-07-05
  • 2012-05-25
  • 1970-01-01
  • 2020-09-26
  • 2021-03-15
  • 2020-07-27
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
相关资源
最近更新 更多