33059
Gemfileやgemspecのバージョン固定、指定の記述方法について。

`~>`などの記述方法の意味はウェブ上でもいくつか解説がありましたが、  
１点しっくりこないものがあるので教えていただきたいです。

あるgem（<https://github.com/rpush/rpush>）のgemspecの記述です。

```

    s.add_runtime_dependency 'multi_json', '~> 1.0'
      s.add_runtime_dependency 'net-http-persistent', '< 3.0'
      s.add_runtime_dependency 'net-http2', '~> 0.14'
      s.add_runtime_dependency 'activesupport'
      s.add_runtime_dependency 'thor', ['>= 0.18.1', '< 2.0']
      s.add_runtime_dependency 'railties'
      s.add_runtime_dependency 'ansi'
    
```

この、`'net-http-persistent', '< 3.0'`箇所は、バージョン`3.0`を含むのでしょうか？  
実際、rpushをインストールすると`net-http-
persistent`は3.0.0でインストールされるので含まれるのでしょうが、表記方法との意味合いがしっくりきません・・・

「< 小なり」に関する解説記事が見つけられずモヤモヤしています。

よろしくお願いいたします。

追加補足）

Rpushのissueで`< 3.0`では`3.0.0`は含まれないのでgemspecの記述は正しいが、  
何かの理由で`3.0.0`が含まれてしまうようです。ということは記述はやはり「3.0未満」？

<https://github.com/rpush/rpush/issues/327>
CC BY-SA 3.0
2017-03-03T02:49:53.563
33055
2017-03-03T05:17:36.377
2017-03-03T04:47:06.483
512
512
question
ruby rubygems
Ruby gemspecのバージョン指定記述方法
2017/3/3時点で

```

    source 'https://rubygems.org'
    gem 'rpush'
    
```

という内容の Gemfile を使って bundle すると rpush 2.7.0 がインストールされますが、 [2.7.0
の依存関係](https://github.com/rpush/rpush/blob/v2.7.0/rpush.gemspec)では net-http-
persistent のバージョンは縛られていません。

bundle実行で生成された Gemfile.lock より抜粋:

```

    rpush (2.7.0)
      activesupport
      ansi
      multi_json (~> 1.0)
      net-http-persistent
      railties
      thor (>= 0.18.1, < 2.0)
    
```

ご覧になっている gemspec は master ブランチのもので、バージョン制限は、コミット b8f18f0 や af87539 で 2.7.0
のリリース後に追加されたもののようです。
CC BY-SA 3.0
2017-03-03T05:17:36.377
33059
2017-03-03T05:17:36.377
17037
33055
answer