2011-08-04 93 views
8

我的设置:Rails 3.0.9,Ruby 1.9.2检查宝石版本号

我想通过Rails控制台检查我的应用程序的宝石版本。在我的gemfile中,我有

gem 'rack', '1.2.3' 

冉捆绑安装后。在Rails控制台中,

>> Rack.version 
=> "1.1" 

任何想法为什么?

UPDATE

Gemfile.lock 

GEM 
    remote: http://rubygems.org/ 
    specs: 
    actionpack (3.0.9) 
     ... 
     rack (~> 1.2.1) 
     ... 

    rack (1.2.3) 

    rack-mount (0.6.14) 
     rack (>= 1.0.0) 

    warden (1.0.4) 
     rack (>= 1.0) 

DEPENDENCIES 
... 
rack (= 1.2.3) 
... 

有在gemfile.lock列出的几个机架的版本。

+0

怎么样在'Gemfile.lock'机架版本的文件? –

+0

您用来运行控制台的完整命令是什么? – kain

+0

@nash,查看更新后的问题以获取详细信息。 @kain,用于开发的'rail console','heroku console --app '用于制作。 – Bob

回答

22
Rack.version 

将返回协议版本,

Rack.release 

可能是你看你是什么。

https://github.com/rack/rack/blob/master/lib/rack.rb#L14

否则:

Gem.loaded_specs["rack"] 

例子:

ruby-head :006 > Gem.loaded_specs["rack"] 
=> #<Gem::Specification name=rack version=1.3.2> 
ruby-head :007 > Gem.loaded_specs["rack"].version 
=> #<Gem::Version "1.3.2"> 
ruby-head :008 > Gem.loaded_specs["rack"].version.to_s 
=> "1.3.2" 
+0

感谢Kain,这正是我需要的,它返回1.2.3。 – Bob

+0

在另一个笔记上,你是否在Rails 3.1上,因为3.0.x不会安装Rack 1.3.x. – Bob

+0

是的,我正在使用rails master,标记为3.2.0beta – kain

-1

也许您安装了多个版本的机架,请尝试运行gem uninstall rack,看看它是否提供两种选项供您选择:机架1.1和机架1.2.3。如果是这样,请选择卸载Rack 1.1。

如果这仍然不起作用,只需卸载Rack并尝试运行软件包更新。

我有这个问题,当我使用多个耙子版本0.8.7和0.9.2,这帮助了我。

+0

我确实安装了Rack(和rake)的多个版本,但只有Rack 1.2.2和1.2.3,而不是1.1。我的命令是否正确地检查控制台中的Rack版本? – Bob

+0

不太确定,从来没有尝试过。 或者,你可以使用这种巧妙的把戏: ** gem list --local | grep'rack'** 这应该列出所有机架版本。 – rookieRailer