Ale*_*del 3 ruby rubygems sinatra
我正在尝试在Ubuntu 10.10中运行需要Sinatra的Ruby应用程序.我是这些技术中的3种新手,所以我理解这个问题对你来说是否显得愚蠢.
昨天我安装了ruby做......
sudo apt-get install ruby1.9.1-full
和sinatra做...
sudo gem install sinatra
这是我正在尝试运行的代码:
require 'rubygems'
require 'sinatra'
get '/' do
"Hi Alex!"
end
Run Code Online (Sandbox Code Playgroud)
当我ruby1.9.1 -rubygems app.rb没有做任何事情时(Ruby已正确安装,因为我尝试运行不需要sinatra的应用程序,它们工作正常).
$ ls
app.rb
$
$ ruby1.9.1 app.rb
$
$ ruby1.9.1 -rubygems app.rb
$
Run Code Online (Sandbox Code Playgroud)
我知道它应该打开Sinatra并告诉我它正在听哪个端口.
我一直在寻找网上的帮助,并阅读在这个论坛中创建的几个主题,但我尝试过的任何东西都没有为我解决.
这可能发生什么?
谢谢
在ruby 1.9.2上有sinatra 1.0的类似问题.答案就是添加enable :run到您的代码中.
查看配置文档:run - 如果您要部署到服务器,则需要执行类似的操作,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软件包无论如何都提供了ruby 1.9.2.因此,:run在直接运行文件时似乎还有其他因素导致无法设置,但我不知道那可能是什么.
看看Ubuntu Sinatra软件包,看起来它的版本是1.0.可能是您的设置正在使用Ubuntu软件包并忽略通过rubygems安装的更新版本.这可以解释发生了什么.如果是这样,这不是像我上面提到的ruby 1.9和sinatra 1.0的"类似问题",那就是同样的问题!
我发生了一些事情.你可以检查你实际的东西,如使用的是什么版本的末日puts Sinatra::VERSION之后require 'sinatra'.此外,看起来有一个gem1.9.1命令对应ruby1.9.1.看起来当你安装sinatra sudo gem install sinatra并将最新版本安装到ruby 1.8安装中,然后使用Ubuntu打包的Sinatra 1.0保留了ruby 1.9.如果你还没有切换到rvm,你可以试试sudo gem1.9.1 install sinatra.
| 归档时间: |
|
| 查看次数: |
1863 次 |
| 最近记录: |