如何判断rails应用程序使用的gem版本

Ste*_*wer 114 rubygems ruby-on-rails

我正在调查一个rails应用程序 - prod服务器安装了两个特定gem的版本,我怎么知道prod应用程序使用的是哪个版本?

BJ *_*ark 165

在Rails 3和Rails 4中,使用 bundle show

在Rails 2中,rake gems将打印出安装,冻结等所有宝石,依赖项和版本.

  • 只有在environment.rb文件中指定了gem时,这才有效.如果开发人员只是在某个地方需要它,那么rake gem就不行了. (2认同)
  • 如果要过滤列表,请执行`bundle show | grep gem_name`,指南针的例子:`bundle show | grep指南针` (2认同)

小智 37

如果您使用bundler,那么您可以从中获取版本

bundle show [gemname]
Run Code Online (Sandbox Code Playgroud)


Sna*_*hot 37

我花了比预期更长的时间来查找和整理这些信息,所以我想把它发布在一个地方供其他人查看.我还想为Rails 3澄清一点:

  • 脚本/关于已被替换为rake about 详细信息在这里.如果您对Rails 3的所有命令行更改列表感兴趣,可以在此处找到它们.

  • rake gems 在Rails 3中不起作用.相反,你应该使用 bundle show

例如,您可以将所有版本的gem保存到文件中以供查看:

gem list > all_gems.txt

你可以看到你的Rails应用程序使用的版本:

bundle show > project_gems.txt

使用像Vim这样的编辑器,您可以轻松使用vimdiff查看更改


gtd*_*gtd 5

可能有更直接的方法来找到它,但如果你加载一个控制台并需要一个特定的版本,如下所示:

gem 'RedCloth', '3.0.4'
Run Code Online (Sandbox Code Playgroud)

它会告诉你已激活的版本:

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2
Run Code Online (Sandbox Code Playgroud)


Soo*_*uNe 5

还有一个列表Gemfile.lock,位于应用程序的根目录中.

出于这个原因,我离开Gemfile.lock了我的.gitignore.当我忘记指定宝石版本时GemFile,这已经不止一次地拯救了我,并且宝石更新了更改.


Xin*_*g L 5

在终端

bundle show [gem-name]
bundle show | grep [gem-name]
Run Code Online (Sandbox Code Playgroud)

要么

gem list | grep [gem-name]
Run Code Online (Sandbox Code Playgroud)

[gem-name]应该替换为您要查找的gem名称。