【发布时间】:2011-12-26 23:00:50
【问题描述】:
我有一个项目,我有一个 sinatra 应用程序,我想通过一个管理 ruby 脚本文件来启动它。我希望能够启动、停止和重新启动它,如果被要求也能够守护它。这是,我想在我的脚本中有这样的东西:
bin/myscript
require 'MyCLI'
MyCLI.new(ARGV).run
lib/mycli.rb
class MyCLI
# instantiate and other methods (inspired by thin runner)
...
def run
# parse commands and options
...
# then process command
case @command
when 'start'
@server = Thin::Server.new(host, port, MyModule::MyAppClass)
@server.start
when 'stop'
# ?
when 'restart'
# ?
else
raise "Unknown command"
end
end
end
但我正在努力解决一些问题,
-
我是否需要守护它,这取决于某些命令选项,并且在阅读文档并挖掘一些代码后,我无法找到是否可以将某些参数传递给
#new。 停止就像
@server.stop一样简单,但是当我的脚本在每个命令行请求时实例化一个 mycli 对象时,我没有一个对象,所以@server 在启动请求之后消失了,所以我认为唯一的解决方案是控制 PID(对吗??),但无法找到管理它的方式。此外,我认为在前台运行它不适用于这种 pid 方法。重新启动它的正确方法是什么?
有没有人为此提供最佳解决方案?
【问题讨论】:
-
神god.rubyforge.org试过了吗?
-
嗨,我想缩小依赖关系,所以我想只保留精简代码。是否有一个简单的等待?
-
您是否尝试过使用
qx或system等来调用命令行客户端?我知道这并不花哨,但它会起作用。