gpt4 book ai didi

ruby - Rack : cannot load such file 'sinatra'

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:25 24 4
gpt4 key购买 nike

我已经在 irb 中安装了 sinatra gem,如果我输入,

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::Application

app.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)

最佳答案

我认为这只是设置 -d 选项的详细输出。服务器是否真正启动(在产生大量输出之后)?

事情是这样的。 Using -d sets Ruby’s $DEBUG flag to true .然后 Rack 尝试通过 config.ru 加载应用程序,这反过来会加载您的 app.rbapp.rb 中的第一件事是 require 'sinatra'

Rubygems 用自己的方法替换了原来的require 方法。当你调用 requiretries to load the file normally using the existing load path and the original require method .如果 gem 尚未加载,这将引发 LoadError,Rubygems catches在加载 gem 之前。

设置了 $DEBUG 标志后,Ruby 将在引发异常时生成一条消息,即使它已被挽救和处理,这就是您所看到的。

要避免这种情况,只需在调用 rackup 时省略 -d 标志(也许使用 -w 启用警告会给你足够的详细的输出不会让你淹没太多细节)。

如果服务器没有启动,那么这将是一个不同的问题,而不是找不到 Sinatra。如果是这种情况,您需要检查其余输出以寻找线索。

(请注意,我最初以为发生了其他事情,这就是我在评论中提出的问题。)

关于ruby - Rack : cannot load such file 'sinatra' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com