我已经安装了辛纳特拉宝石,在irb中,如果我输入,
require 'sinatra'它返回true。
但当我做的时候
rackup -d config.ru它告诉我
nil
Exception `LoadError' at /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36 - cannot load such file -- sinatra这是我的config.ru
require './app'
set :environment, ENV['RACK_ENV'].to_sym
set :app_file, 'app.rb'
disable :run
run Sinatra::Applicationapp.rb
require 'rubygems'
require 'sinatra'
get '' do
'Hello World'
end我不知道出了什么问题。
$ which ruby
/usr/local/bin/ruby
$ which rackup
/usr/local/bin/rackup
$ ruby -v
ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-linux]
$ rackup -v
Rack 1.2 (Release: 1.5)发布于 2013-07-05 18:47:02
我的猜测是,您的rackup脚本是安装在diffruby1.9xVM中的一个“齿条”创业板的二进制存根。
可能是较早版本的ruby1.9.2,因此无法看到安装了sinatra
我会在命令行上尝试‘哪一个’
发布于 2013-02-04 00:09:57
我认为这只是设置-d选项的详细输出。服务器是否实际启动(在产生输出负载后)?
现在发生的是这个。true。然后,机架尝试通过config.ru加载应用程序,这反过来会加载您的app.rb。app.rb中的第一件事是require 'sinatra'。
Rubygems用自己的方法替换了原始的require方法。当你叫require it 方法。如果gem尚未加载,这将引发一个LoadError,在加载创业板之前该Rubygems捕获。
在设置了$DEBUG标志之后,即使异常被拯救和处理,它也会产生一条消息,这就是您所看到的。
为了避免这种情况,只需在调用-d时忽略rackup标志(使用-w启用警告可能会给出足够详细的输出,而不会使您过于详细)。
如果服务器没有启动,那么这将是一个不同的问题,而不是找不到Sinatra。如果是这样的话,您将需要检查输出的其余部分,寻找线索。
(请注意,我最初以为发生了其他事情,这就是我在他的评论中所提出的问题。)
发布于 2014-05-13 08:51:46
这绝对是加载路径的问题。无论如何,尝试通过RVM和邦德勒设置所需的红宝石和宝石。它确保Ruby解释器和加载路径是一致的。
https://stackoverflow.com/questions/14677560
复制相似问题