问题已解决:
我已经想出如何解决我的问题:
在前钩子中的我分叉当前进程来启动我的sinatra web应用程序:
Before do
if $pid.nil?
$pid = fork do
App.run!
end
end
end
注意我必须将分叉的PID归因于一个全局变量,因此在黄瓜的每个场景之后它都不会被刷新。除此之外,我确保在整个黄瓜执行过程中启动我的sintra应用程序。
然后在黄瓜执行结束时,我终止了子进程并等待它在终止黄瓜会话之前被清除:
at_exit do
unless $pid.nil?
Process.kill "TERM", $pid
Process.wait $pid
end
end
原始问题:
我正在寻找一个包含内容的网络应用程序,然后我的应用程序将使用该内容从该存根中获取该内容并执行其操作...
我想要实现的是在黄瓜钩内启动Sinatra应用程序...然后在执行结束时停止它......这可能吗?
以下是我到目前为止的地方......
#myapp.rb
require 'sinatra'
class App < Sinatra::Base
set :server, 'webrick'
get '/' do
'Hello!!!'
end
end
然后挂钩:
Before do
App.run!
end
第一个问题是sinatra应用程序不会在后台运行...在解决了这个问题后,我需要了解它是否也足够容易停止sinatra会话。 ..