【问题标题】:Ruby/Sinatra app (file) does not run (start)Ruby/Sinatra 应用程序(文件)不运行(启动)
【发布时间】:2013-07-06 18:50:13
【问题描述】:

我正在使用:ruby-1.9.3-p392 和 sinatra-1.4.3。

当我运行我的文件时,我得到了这个错误:

/home/belka/.rvm/gems/ruby-1.9.3-p392@Rails3.2.13/gems/sinatra-1.4.3/lib/sinatra/base.rb:1408:in `run!': undefined method `run' for HTTP:Module (NoMethodError)

from /home/belka/.rvm/gems/ruby-1.9.3-p392@Rails3.2.13/gems/sinatra-1.4.3/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'

我的代码是 sinatra 新手最简单的代码 (hello.rb):

require 'rubygems'
require 'sinatra'

get '/' do
    'Hello World!'
end

【问题讨论】:

  • 你能显示你用来运行它的命令吗?此外,您不需要require 'rubygems',请参阅gist.github.com/rtomayko/54177
  • 我正在使用这个命令来运行我的 .rb 脚本:ruby hello.rb
  • 当您尝试启动服务器时,您似乎以某种方式加载了一个名为 HTTP 的模块。你的问题看起来有点像stackoverflow.com/questions/17334734/…,虽然我看不出你发布的代码会发生这样的事情。
  • 您可以尝试使用 Bundler 对其进行沙盒处理。添加一个 Gemfile,其中唯一的 gem 是 gem "sinatra",然后在 Hello World 项目的目录中运行 bundle install --binstubs --path vendor。然后尝试通过bundle exec ruby hello.rb 运行脚本。如果这样可行,那么您在该 RVM@Rails gemset 中安装的 gem 有问题。

标签: ruby sinatra


【解决方案1】:

我只需要添加这段代码,我的 sinatra 应用程序现在就可以运行了:

set :server, 'webrick'

【讨论】:

  • 我认为这表明您的设置有问题,如 this setting is set by default(略有不同,但仍然如此),应该可以正常工作。
  • 我的设置中出现了什么样的错误,我刚刚安装了 sinatra gem:gem install sinatra
  • 那是安装在那个环境/gemset 中的唯一 gem 吗?沙盒、沙盒、沙盒……;)
  • 不,当然,我已经在这个环境中安装了很多 gem,例如:rails、mechanize, ....
  • 好吧,第一个可能的问题是:宝石的交互。 RVM 和 Bundler 使您可以轻松地对 gem 进行沙箱化处理,因此现在我使用 Bundler 对每个新项目进行沙箱化处理(正如我在问题的 cmets 中提到的那样)。如果您遵循这一点并且在不需要配置变量的情况下没有收到错误,那么它就是 gems 交互。
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多