目前有一个噩梦试图在另一台机器上运行代码。作为我正在做的实习的一部分,我一直在开发Sinatra应用程序。我正在开发一台Ubuntu 12.04机器,使用ruby1.9.3(通过RVM)。我的主管想在他的Debian Squeeze机器(开发服务器)上运行它。我列出了Gemfile中所有必需的gem,并推送了初始提交。但是,我们似乎无法让它在Debian盒子上运行。
最初安装了Ruby1.8,在我的主管意识到我们需要Ruby1.9及更高版本之前。安装了Ruby1.9.1-full debian软件包,但尝试使用ruby1.9.1 application.rb
运行Sinatra应用程序什么也没做。我添加了一些打印语句来调试它,ruby解释器到达文件的末尾 - 问题是它没有启动WEBrick。这个完全相同的代码在我的机器上运行没有问题,为什么它在Debian上有这么大的问题?
注意:不建议切换到RVM。我的主管坚持认为我们只使用官方套餐,所以这是我无法控制的。
答案 0 :(得分:0)
我的Sinatra应用配置有点不同。也就是说,我没有使用ruby application.rb
运行它们,而是我有一个config.ru
文件,其中包含对Rack中间件的说明。当我想运行我的应用程序时,我只需运行rackup
,服务器就会启动。
如in the Sinatra Readme所示的最小示例布局如下。
基本的Sinatra application.rb
文件:
require 'sinatra'
get '/' do
'Hello world!'
end
和config.ru
:
require './application'
run Sinatra::Application
我真的不知道这会对您的情况产生什么影响或者如何产生影响,但这是首先想到的事情。
P.S。
现在我想到了,你可以尝试的另一件事是使用除WEBrick之外的其他服务器。我想如果你添加
gem 'thin'
到Gemfile
它应该自动使用Thin代替。请务必先重新运行bundle install
。