1

我不想修补帕德里诺。

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

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

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

我在处理设置这些选项的 Padrino 核心深处找到了该文件,但我真的不想对应用程序进行修补。

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

到目前为止,我还没有找到任何关于如何做到这一点的文档,或者这是否可能。

4

2 回答 2

1

嗯,你应该能够做到这一点。

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

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

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

然后从命令行:

$ rackup
于 2012-09-07T21:41:17.547 回答
0

I know this is old, but in case anybody is trying to do this cleanly, here is what I use:

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

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

  # ...
end

You can also inject settings prior to runtime:

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

I frequently use the second example for injecting a custom logger into my application for specs.

For example:

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!

See this source link for more info about server_settings usage in Application::self.run!.

于 2014-09-17T15:56:34.223 回答