Gemfile 和 Gemfile.lock 中指定版本的“=”和“~>”的区别

Use*_*159 1 rubygems ruby-on-rails

嘿,堆垛机同胞们!

对于这样一个基本问题感到抱歉,但是 gemfile.lock 和/或 gemfile 中的这些行之间有什么区别?

 /Gemfile.lock or /Gemfile

 mygem (1.1.0)
 yourgem (= 1.3.4)
 hisgem (<= 4.2.1)
 hergem (>= 0.5.1)
 somegem (~> 4.1.5)
Run Code Online (Sandbox Code Playgroud)

我能想到

 hisgem (<= 4.2.1)
Run Code Online (Sandbox Code Playgroud)

意味着任何低于 4.2.1 的 gem 版本都可以工作。同样,hergem (>= 0.5.1) 意味着任何大于 0.5.1 的 gem 版本都应该可以工作。但有什么区别

 yourgem (= 1.3.4)
Run Code Online (Sandbox Code Playgroud)

 somegem (~> 4.1.5)
Run Code Online (Sandbox Code Playgroud)

他们都指定了 gem 的确切版本吗?它们有何不同?

Phi*_*rom 5

请参阅http://docs.rubygems.org/read/chapter/16#page74

\n\n

从那个页面...

\n\n
\n

gem \'库\', \'~> 2.2\'

\n\n

请注意,我们仅包含 2 位数字的版本。运算符将删除版本的最后一位数字,然后增加剩余的最后一位数字以获得上限版本号。因此 \xe2\x80\x98~> 2.2\xe2\x80\x99 等价于: [\xe2\x80\x98>= 2.2\xe2\x80\x99, \xe2\x80\x98< 3.0\xe2\ x80\x99]。如果我们说 \xe2\x80\x98~> 2.2.0\xe2\x80\x99,则它相当于: [\xe2\x80\x98>= 2.2.0\xe2\x80\x99, \ xe2\x80\x98< 2.3.0\xe2\x80\x99]。最后一位数字\n指定版本控制的粒度级别。(请记住,如果悲观运算符对您来说太有限,您始终可以提供明确的上限)。

\n
\n