【问题标题】:Sinatra doesn't load when running a ruby app运行 ruby​​ 应用程序时不加载 Sinatra
【发布时间】:2011-08-10 14:45:21
【问题描述】:

我正在尝试在 Ubuntu 10.10 中运行需要 Sinatra 的 Ruby 应用程序。我是这 3 种技术的新手,所以我知道这个问题对您来说是否愚蠢。

昨天我安装了 ruby​​ 做... sudo apt-get install ruby1.9.1-full

和辛纳屈做... sudo gem install sinatra

这是我要运行的代码:

require 'rubygems'
require 'sinatra'

get '/' do
    "Hi Alex!"
end

当我执行 ruby1.9.1 -rubygems app.rb 时,没有任何反应(Ruby 已正确安装,因为我尝试运行不需要 sinatra 的应用程序并且它们工作正常)。

$ ls
app.rb
$ 
$ ruby1.9.1 app.rb
$
$ ruby1.9.1 -rubygems app.rb
$ 

我知道它应该打开 Sinatra 并告诉我它正在监听哪个端口。

我一直在通过网络寻求帮助,并阅读了该论坛中创建的几个主题,但我尝试过的任何方法都没有为我解决。

这里会发生什么?

谢谢

【问题讨论】:

  • 您具体得到了什么?你运行那个命令,实际上什么也没发生?
  • 你安装 sinatra gem 没有问题吗?
  • 这与您的问题无关,但请注意,在 Ruby 1.9 中,您不需要专门要求 ruby​​gems,无论是在命令行还是在您的脚本中。
  • @Mike Lewis:我一无所获。我复制的输出就是我收到的一切。
  • 在 ruby​​ 1.9.2 上的 sinatra 1.0 也有类似的问题。答案是将enable :run 添加到您的代码中,这可能值得一试(我自己无法编译 1.9.1 版本来测试它)。

标签: ruby rubygems sinatra


【解决方案1】:

在 ruby​​ 1.9.2 上的 sinatra 1.0 也有类似的问题。答案是将enable :run 添加到您的代码中。

查看docs for the :run configuration - 如果您要部署到服务器,您需要执行enable :run if __FILE__ == $0 之类的操作,以便仅在开发期间需要时启动内置服务器.

严格来说,您的代码是正确的,应该可以正常运行,实际上它适用于 ruby​​ 1.8.7 和 1.9.2。 问题似乎是用 ruby​​ 1.9.1 运行的。一般来说 1.9.1 似乎已经过时了,如果可以的话,您应该考虑升级到 1.9.2。如果 Ubuntu 没有任何适用于 1.9.2 的软件包,请查看 rvm(事实上,如果您打算进行 ruby​​ 开发,rvm 无论如何都值得一看)。


更新:

我设法编译了 ruby​​ 1.9.1 来测试这一点,并且您的代码运行正常。还有一点谷歌搜索表明Ubuntu ruby1.9.1 package provides ruby 1.9.2 anyway。因此,在直接运行文件时似乎还有其他原因导致 :run 未设置,尽管我不知道那可能是什么。

另一个更新:

查看Ubuntu Sinatra package,它看起来像是在 1.0 版。可能是您的设置使用的是 Ubuntu 打包并忽略通过 ruby​​gems 安装的更新版本。这可以解释正在发生的事情。如果是这样,这不是我上面建议的 ruby​​ 1.9 和 sinatra 1.0 的“类似问题”,那就是同一个问题!

又一次更新:

我想到了几件事。您可以在 require 'sinatra' 之后使用puts Sinatra::VERSION 之类的内容检查您实际使用的Sinatra 版本。此外,它看起来像 there is a gem1.9.1 command 对应于 ruby1.9.1。看起来当您使用sudo gem install sinatra 安装 sinatra 时,最新版本已安装到 ruby​​ 1.8 安装中,而 ruby​​ 1.9 则与 Ubuntu 打包的 Sinatra 1.0 一起安装。如果你还没有切换到 rvm,你可以试试sudo gem1.9.1 install sinatra

【讨论】:

  • 再次感谢!正如我之前所说,您的解决方案运行良好。我现在正在阅读有关 rvm 的内容,它似乎非常有用。也谢谢你...
  • @Menfiesto 我不知道我的编辑是否会在您的收件箱中引起通知。如果不是,此评论只是为了引起您的注意。
  • 再次感谢。你给我的这个信息对我正在处理的其他一些宝石非常有用。
猜你喜欢
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 2015-09-28
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多