How to tell which version of a gem a rails app is

2019-01-21 21:24发布

I'm investigating a rails app - the prod server has two version of a specific gem installed, how can I tell which version the prod app is using?

12条回答
老娘就宠你
2楼-- · 2019-01-21 21:46

In Rails 3 and Rails 4, use bundle show

In Rails 2, rake gems will print out what gems, dependencies, and versions are installed, frozen, etc.

查看更多
Luminary・发光体
3楼-- · 2019-01-21 21:46

There's also a list in Gemfile.lock, located in the root directory of your app.

For this reason I leave Gemfile.lock out of my .gitignore. This has saved me more than once when I forgot to specify the gem version in GemFile, and a gem got updated with breaking changes.

查看更多
Ridiculous、
4楼-- · 2019-01-21 21:49

If you use bundler, then you can get the version from

bundle show [gemname]
查看更多
等我变得足够好
5楼-- · 2019-01-21 21:50

In the terminal

bundle show [gem-name]
bundle show | grep [gem-name]

or

gem list | grep [gem-name]

[gem-name] should be replaced as gem name you are going to look for.

查看更多
家丑人穷心不美
6楼-- · 2019-01-21 21:54

script/about will tell you what versions of the core Rails and Rack gems you're using, but not anything else. Ideally, if you look in config/environment.rb, there should be a section that looks like this:

# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"

With any luck, the author of the app will have included any required gems and versions there. However, the versions are optional in this file, and ultimately nothing stops an inexperienced developer from just slapping a require 'rubygems'; require 'some_random_thing' at the top of any given file.

If you see that a gem is being required, but no version is specified, you can type gem list to see all the versions of all the gems on the system. By default, it will be using the latest one available.

查看更多
做个烂人
7楼-- · 2019-01-21 21:55

It took me longer than expected to find and sort through this information so I wanted to post it here in one place for others to view. I also wanted to clarify this a bit for Rails 3:

  • script/about has been replaced with rake about The details are here. If you are interested a list of all the command line changes for Rails 3 they can be found here.

  • rake gems does not work in Rails 3. Instead you should use bundle show

As an example, you can save all versions of your gems to a file for viewing with:

gem list > all_gems.txt

and you can see what versions your Rails app is using with:

bundle show > project_gems.txt

Using an editor like Vim you can easily use vimdiff to see the changes

查看更多
登录 后发表回答