ruby-on-rails - 如何使用 thin 和 ssl 获得干净的输出?

标签 ruby-on-rails ssl thin

我使用 Rails 3.0.x,但我遇到了精简输出的问题。

当我使用时:

rails server thin

Thin 显示已处理请求的列表,并记录它们,几乎与 webrick 所做的完全一样。这很好,但是我没有找到任何方法通过此命令在 ssl 模式下使用 Thin。

在 ssl 模式下使用 Thin,如图所示 here ,我使用以下命令(加上 ssl 的参数):

thin start --ssl ...

使用此命令,日志仍然正常,但 Thin 不会在标准输出中输出任何内容。

所以我尝试了:

thin start --trace

但现在 Thin 将所有请求和所有响应(!) 写入标准输出,包括 javascript、图像等。

在 ssl 模式下使用 Thin,有没有办法像 webrick 那样输出所有已处理的请求?

最佳答案

使用命令启动 Thin 时:

rails server thin

可能的选项从 Rack 传播到 thin in Rack::Server#start:

server.run wrapped_app, options

但是在 Rack::Handler::Thin#run 中,我们可以看到处理程序没有使用这些选项:

 module Rack
  module Handler
    class Thin
      def self.run(app, options={})
        app = Rack::Chunked.new(Rack::ContentLength.new(app))
        server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
                                    options[:Port] || 8080,
                                    app)
        yield server if block_given?
        server.start
      end
    end
  end
end

当通过命令行在 ssl 模式下使用 Thin 时:

thin start --ssl

选项在 Thin::Runner#parser 中解析,然后在 Controllers::Controller#start 中使用

我建议猴子补丁 Rack::Handler::Thin#run 的内容类似于 Controllers::Controller#start。

结果会是这样的:

  module Rack
    module Handler
      class Thin
        def self.run(app, options={})
          app = Rack::Chunked.new(Rack::ContentLength.new(app))
          server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
                                      options[:Port] || 8080,
                                      app)
          server.ssl = true
          server.ssl_options = { :private_key_file => PATH_TO_KEY_FILE, :cert_chain_file => PATH_TO_CERT_FILE }
          yield server if block_given?
          server.start
        end
      end
    end
  end

关于ruby-on-rails - 如何使用 thin 和 ssl 获得干净的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647553/

相关文章:

java - Java 中的 Rails 闪存消息

javascript - "TypeError: ' 未定义 ' is not a function"尝试使用 jQuery UI 时

ruby-on-rails - Rails 模块自动加载保持状态

ssl - 如何通过 SSL 连接使用 Alembic?

ruby-on-rails - 如何使用 Xcode 4.5.1 在 OSX Lion 10.8.2 上编译 EventMachine gem

ruby-on-rails - 在没有 Thin gem 的情况下启动瘦服务器不起作用

ruby-on-rails - 时间戳列是否意味着响应 bool 方法调用?

http - 当通过 https 发出原始请求时,在 Location-header 中获取 http

jquery - 使用 FormData 对象发送 ajax 调用时出现 SSL 错误

ruby-on-rails - puma是唯一的多线程rails 4 http服务器吗?