我有一个在多台服务器上运行的Sinatra实用程序应用程序,我们将它用于一些内部任务。它执行一些命令行并将结果吐出到视图中。
在运行Ruby 1.8.7的服务器上它工作正常,但是当我将它部署到运行Ruby 1.9.3的新服务器时(通过乘客apache 2模块),它会返回空响应。两者都在运行Sinatra 1.3.2和Passenger 3.0.x.唯一的区别(我可以看到)是Ruby的版本。
Ruby 1.9.3中有没有任何与Sinatra或执行shell命令(通过backtics)会导致这种情况?
应用程序是沿着这些线的东西:
require 'rubygems'
require 'sinatra'
require 'erb'
require 'fileutils'
require 'digest/sha1'
require 'net/http'
require 'uri'
configure do
set :views, "#{File.dirname(__FILE__)}/views"
end
error do
e = request.env['sinatra.error']
Kernel.puts e.backtrace.join("\n")
'Application error'
end
# root page
get '/' do
erb :index
end
post '/create' do
kommand = "ls -lha /some/dir"
result = `#{kommand}`
# Render the done template
return erb :done
end再说一次,使用Ruby 1.8.7的服务器可以正常工作,但是我使用Ruby 1.9.3在新的服务器上获得了这个功能