Sinatra服务器运行后执行代码

JP.*_*JP. 6 ruby sinatra

我附上了一个Sinatra应用程序Sinatra::Base,我想在服务器启动后运行一些代码,我该怎么做呢?

这是一个例子:

require 'sinatra'
require 'launchy'

class MyServer < Sinatra::Base
  get '/' do
    "My server"
  end

  # This is the bit I'm not sure how to do
  after_server_running do
    # Launches a browser with this webapp in it upon server start
    Launchy.open("http://#{settings.host}:#{settings.port}/")
  end
end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Raf*_*ira 5

使用配置块不是执行此操作的正确方法。每当您加载文件时,都会运行命令。

尝试扩展 run!

require 'sinatra'
require 'launchy'

class MyServer < Sinatra::Base

  def self.run!
    Launchy.open("http://#{settings.host}:#{settings.port}/")
    super
  end

  get '/' do
    "My server"
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望您的代码在 _after_ 启动后运行,您可能希望首先在方法中调用 `super`。 (2认同)