如何使用Padrino在run方法中设置WEBRick选项参数

时间:2012-09-07 19:12:33

标签: ruby ssl sinatra webrick padrino

我不想修补补丁Padrino。

我仍然希望能够从命令行使用命令padrino start -d。

我希望在padrino中启动并运行SSL。在Sinatra,我只是这样做:

Rack::Handler::WEBrick.run MyServer, MyServerOptionsWithAppropriateSSLStuffEtc

我发现Padrino核心内部的文件处理设置这些选项,但我真的不想修补应用程序。

理想情况下,我希望有一些方法可以在我的Padrino :: Application子类中设置选项。

到目前为止,我还没有找到任何关于如何执行此操作的文档,或者甚至是否可能。

2 个答案:

答案 0 :(得分:1)

mmm,你应该可以这样做。

在项目文件夹中,您应该看到config.ru

尝试编辑它,删除最后一行:

Rack::Handler::WEBrick.run Padrino.application, MyServerOptionsWithAppropriateSSLStuff

然后从命令行:

$ rackup

答案 1 :(得分:0)

我知道这已经过时了,但如果有人试图干净利落,我就会使用:

class MyApplication < ::Sinatra::Base
  # ...

  def self.server_settings
    { key: value, ... }
  end

  # ...
end

您还可以在运行时之前注入设置:

MyApplication.class_exec(server_settings) do |server_params|
  def self.server_settings
    server_params
  end
end

我经常使用第二个示例将自定义记录器注入我的应用程序以获取规范。

例如:

module CustomLogger
  def logger
    settings.try(:server_settings)[:Logger] || request.logger
  end
end

MyApplication.class_exec(CustomLogger) do |logger_module|
  helpers logger_module
  def self.server_settings
    # global specified in guard/spec helper
    { Logger: $LOGGER }
  end
end

class MyApplication < ::Sinatra::Base
  enable :logging

  get '/' do
    logger.info "FOO"
  end
end

MyApplication.run!

有关server_settingsApplication::self.run!用法的详情,请参阅this source link