使用Sinatra在启动和关闭时添加全局变量?

时间:2015-04-02 15:54:10

标签: ruby sinatra rabbitmq rack

我创建了一个HTML应用程序,该应用程序可以在" production"中使用rackup config.ru -p 3000在本地运行。

这个应用程序通过Bunny gem与RabbitMQ通信,并在我通过Ajax访问各种端点时发布消息。

我还有两个名为initdeinit的方法,用于设置和销毁与RabbitMQ服务器相关的全局变量:$connection$channel$exchange

这些事情并不是每次都要完成的,事实上它至少会在50%的时间内崩溃RabbitMQ。

我需要的是在启动服务器时运行init,在deinit时运行CTRL+C,因此这些全局变量只创建一次并可用于由应用程序的其余部分使用(跨多个请求)。

我只是不知道该怎么做。

以下是我定义方法的方法。

def init
  $conn = Bunny.new(host: SETTINGS['host'])
  $conn.start
  $ch = $conn.create_channel
  $x  = $ch.default_exchange
end

def deinit
  puts "\nExiting..."
  $ch.close
  $conn.close
end

0 个答案:

没有答案