如何分辨宝石的版本一个Rails应用程序正在使用(How to tell which version

2019-09-01 03:38发布

我调查的一个Rails应用程序 - 督促服务器安装了两个版本,一个特定的宝石,我怎么能告诉督促程序是使用哪个版本?

Answer 1:

在Rails 3和导轨4,使用bundle show

在Rails 2, rake gems会打印出所安装的宝石,相关性和版本,冷冻等。



Answer 2:

如果使用捆绑,那么你就可以从版本

bundle show [gemname]


Answer 3:

我花了比预期更长找到并通过这个信息进行排序,所以我想在这里发布在一个地方供他人浏览。 我也想澄清一下有点Rails的3:

  • 脚本/约已被替换rake about的细节在这里 。 如果你有兴趣的为Rails 3可以找到他们所有的命令行更改列表在这里 。

  • rake gems不会对Rails 3下工作。相反,你应该使用bundle show

举个例子,您可以将宝石的所有版本保存到一个文件用于查看:

gem list > all_gems.txt

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

bundle show > project_gems.txt

使用Vim的一样的编辑器,你可以很容易地用Vimdiff看到的变化



Answer 4:

有可能是一个更直接的方式发现了这一点,但如果你加载了一个控制台,需要一个特定的版本,像这样:

gem 'RedCloth', '3.0.4'

它会告诉你什么版本已经被激活:

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


Answer 5:

还有在列表中Gemfile.lock ,它位于应用程序的根目录。

出于这个原因,我离开Gemfile.lock我不懂.gitignore 。 这救了我不止一次的时候我忘了指定的宝石版本GemFile和宝石得到了与重大更改更新。



Answer 6:

在终端

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

要么

gem list | grep [gem-name]

[宝石名称]应更换为宝石名称你要去找。



Answer 7:

尝试使用script/about 。 你config/environment.rb也有关于它的信息。

在你config/environment.rb ,你可以指定一个特定的哪一个版本gem应用程序应该使用。 但是,如果你有多个版本的gem安装在你的机器上,你不指定版本,创业板的最新版本将被应用程序使用。



Answer 8:

gem list <gemname>

它会显示例如,所有匹配的宝石,如果有一个人做

gem list rack

然后个输出将是如下

*** LOCAL GEMS ***

rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)


Answer 9:

script/about将告诉你,你用的是什么,Rails核心和机架宝石的版本,而不是别的。 理想的情况是,如果你在寻找config/environment.rb ,应该有看起来像这样的一段:

# 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"

运气好的话,应用程序的作者将有包括任何所需的宝石和版本出现。 然而,版本可选在这个文件中,最终没有什么可以阻止从刚掴一名没有经验的开发人员require 'rubygems'; require 'some_random_thing' require 'rubygems'; require 'some_random_thing'在任何给定文件的顶部。

如果你看到正在需要的宝石,但没有指定版本,您可以键入gem list来查看系统上所有的宝石的所有版本。 默认情况下,它会使用最新的一个可用。



Answer 10:

bundle exec gem which gem_name

可能是你可以用什么:

$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb


Answer 11:

试试这个地方的宝石:

gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'

如果您使用的包:

bundle exec gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'


Answer 12:

捆绑秀gemname即,对于色器件,你必须编写像

bundle show devise

它会打印出当前宝石版本。



Answer 13:

在Gemfile中,应该有答案了:

gem 'rails', '4.0.0.rc1'


文章来源: How to tell which version of a gem a rails app is using