0
所以我有一個小塊的Ruby /西納特拉代碼,返回一個JSON作爲響應。代碼的工作原理和結果在WEBrick中是準確的,但是在我的Passenger/Apache設置中,相同代碼的消息是空白的。這裏是我的代碼和響應來自使用WEBrick和乘客/阿帕奇西納特拉JSON響應看起來準確的WEBrick,但在乘客不工作/阿帕奇
這裏是我的代碼
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"
}
而且從客運輸出/ Apache是
{
"subject": "mail.google.com",
"message": "",
"success": "1"
}
請記住該消息包含\ t和\ n。這些與Apache或乘客混亂嗎?
乘客似乎使用另一個'ruby'和'%×[紅寶石../do-something.rb cert.cer]'返回不可預知的結果。從調試'%x [which ruby]'或者像Passenger下開始。 – mudasobwa
好點,但是我已經檢查過,不認爲這是問題。事實上,這些環境使用不同的Ruby版本,但代碼在輸出到控制檯時的預期效果都是如此。 – sraj
你爲什麼要拋出一個紅寶石腳本?爲什麼不需要Ruby代碼並直接運行? –