我使用Rails 3.0.x,我的瘦输出有问题。
当我使用时:
rails server thin
Thin显示已处理请求的列表,并记录它们,几乎与webrick完全一样。这很好,但我没有找到任何方法在ssl模式下使用Thin命令。
要在ssl模式下使用Thin,如here所示,我使用以下命令(加上ssl的参数):
thin start --ssl ...
使用此命令,日志仍然很好,但Thin不会在标准输出中输出任何内容。
所以我试过了:
thin start --trace
但是现在Thin在标准输出中写入所有请求和所有响应(!),包括javascript,图像等。
使用Thin in ssl模式,有没有办法输出所有处理过的请求,就像webrick那样?
答案 0 :(得分:1)
使用以下命令启动Thin:
rails server thin
在Rack :: Server #start:
中,可能的选项从Rack传播到thinserver.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
中使用我建议使用类似于Controllers :: Controller #start的内容修补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)
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