如何在黄瓜钩中启动/停止sinatra应用程序

时间:2015-07-01 14:13:48

标签: ruby sinatra cucumber

问题已解决:

我已经想出如何解决我的问题:

在前钩子中的

我分叉当前进程来启动我的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会话。 ..

0 个答案:

没有答案