所以我有一小段Ruby / Sinatra代码,它返回一个JSON作为响应。代码工作,并且结果在WEBrick中是准确的,但在我的Passenger / Apache设置中,对于相同的代码,消息是空白的。这是我的代码和来自WEBrick和Passenger / apache的回复
这是我的代码
require 'sinatra/base'
require 'json'
require 'openssl'
class MyApp < Sinatra::Base
before do
content_type :json
end
post "/" do
payload = JSON.parse(request.body.read, :symbolize_names => true)
raw = payload[:pem]
pem = OpenSSL::X509::Certificate.new raw
File.open("cert.cer", "wb") { |f| f.print pem }
message = %x[ruby ../do-something.rb cert.cer]
{subject: sub_CN, message: message, success: "1" }.to_json
end
在WEBrick中运行时的输出是
{
"subject": "mail.google.com",
"message": "This certificate is good\tcurrently valid.\nIt appears the cert
will expire in\t2 months.\n",
"success": "1"
}
Passenger / Apache的输出是
{
"subject": "mail.google.com",
"message": "",
"success": "1"
}
请记住邮件中包含\ t和\ n。 Apache或Passenger这些混乱吗?
答案 0 :(得分:0)
正如其他人所提到的,您看到的行为很可能是因为命令%x[ruby ../do-something.rb cert.cer]
由于某种原因失败了。如果失败则应将某些东西打印到stderr,最终会在the global Apache log file。请查看该文件并检查是否可以找到相关的错误消息。