我的设置:Rails 3.0.9,Ruby 1.9.2
我想通过Rails控制台检查我的应用程序的gem版本。在我的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
列出了几种机架版本。
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"
每个gem都有:: VERSION常量..所以只需在控制台中使用Rack :: VERSION或OpenSSL :: VERSION,它应该为你提供在该控制台中加载的gem版本。
也许您安装了多个版本的机架,尝试运行gem uninstall rack
并查看它是否提供了两个选项,Rack 1.1和Rack 1.2.3。如果是这样,请选择卸载Rack 1.1。
如果这仍然不起作用,只需卸载Rack并尝试运行bundle update。
当我使用多个rake版本0.8.7和0.9.2时,我遇到了这个问题,这对我很有帮助。