Gemfile中"〜> 4.0.1","4.0.1"和没有版本说明符有什么区别?

JVK*_*JVK 32 ruby gem ruby-on-rails gemfile

在Rails Gemfile中,它们之间有什么区别:

gem "gemname", "~> 4.0.1"
Run Code Online (Sandbox Code Playgroud)

gem "gemname", "4.0.1"
Run Code Online (Sandbox Code Playgroud)

gem "gemname"
Run Code Online (Sandbox Code Playgroud)

还应该使用哪种方式以及遵循这种方式的好处?

tra*_*day 43

第一个将告诉bundler加载任何与最后(次要)数字不同的gem.所以4.0.x其中x是1或更大.

第二个只加载4.0.1.

第三个,将获得最高值(取决于你的Gemfile中其余gems的需求)或将获得Gemfile.lock中指定的任何内容(如果有的话).

我错过了你的第二个问题.坦率地说,这取决于.在大多数情况下,我选择第一个选项,因为它让我可以修复错误修复而不用担心它会如何影响我的其他宝石.