Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 最佳实践,向gem文件中的每个gem添加一个版本?_Ruby On Rails_Gemfile - Fatal编程技术网

Ruby on rails 最佳实践,向gem文件中的每个gem添加一个版本?

Ruby on rails 最佳实践,向gem文件中的每个gem添加一个版本?,ruby-on-rails,gemfile,Ruby On Rails,Gemfile,我应该为我的gem文件中的每个gem添加版本吗?这是最佳实践吗?只是推荐?一般来说,您不需要这样做,除非得到指示(由gem作者或由于不兼容而收到的用户反馈)。有时,您可能会使用某些gems的edge版本,因此这并不重要: # Bundle edge Rails instead: gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'arel', :git => 'git://github.com/rails/are

我应该为我的gem文件中的每个gem添加版本吗?这是最佳实践吗?只是推荐?

一般来说,您不需要这样做,除非得到指示(由gem作者或由于不兼容而收到的用户反馈)。有时,您可能会使用某些gems的edge版本,因此这并不重要:

# Bundle edge Rails instead:
gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'arel',  :git => 'git://github.com/rails/arel.git'
gem "rack", :git => "git://github.com/rack/rack.git"

我认为您不应该指定每个gem的版本,因为在
Gemfile.lock
中已经指定了当前工作gem的版本


另外,如果您这样做,
bundle update
命令将毫无用处。您应该能够使用此命令更新gems。如果测试通过并且您的应用程序继续正常工作,只需提交新的
Gemfile.lock

我更喜欢将所有gem锁定到生产中的特定版本。考虑到可能会有新版本破坏与其他gem的兼容性或不推荐某些api,您希望100%确保在部署应用程序时不会因为gem不一致而意外损坏应用程序。更新gems只能在开发过程中本地完成,方法是更新Gemfile条目,并根据您的其他代码和库测试每个新版本。

Gemfile.lock
完全由
Gemfile
中指定的规则和最后一次
捆绑包更新生成,因此,无论是否指定版本,只需考虑
Gemfile
。这也是我要说的。。。您不应该指定每个gem的版本,这样
bundle update
也可以更新其中的一些版本。有时,需要获取源代码上可用的最新版本,因为它包含一个在编号的版本中不可用的急需修复程序。(will_paginate在某个时候遇到过)