2017-03-01 4 views
-1

Ich habe gelesen auf rubygems.org über die Nutzung der semantischen Versionierungsmuster für Ruby Edelsteine.Was hat die Version eines Rubins mit der Version von Ruby zu tun, die während der Entwicklung verwendet wurde?

Zum Beispiel möchte ich vielleicht einige Ruby Gem namens library, die alle kleinere Updates ab v2.2 bis einschließlich v3.0 enthält. Ich kann es als eine Laufzeitabhängigkeit hinzufügen in meinem gemspec oder meine Gemfile:

some_gem.gemspec:

spec.add_runtime_dependency 'library','~> 2.2' 

Gemfile:

gem 'library', '~> 2.2' 

Ich weiß, wir können auch angeben, welche Version von Ruby möchten wir mit einem Ruby-Versionsmanagement wie rbenv verwenden.

Zum Beispiel habe ich gesetzt auch die lokale Ruby-Version zu system (auf macOS) vor mit:

rbenv local system 

, die erzeugte eine .ruby-version Datei im Projektstamm.

Ich bin verwirrt darüber, was die Ruby-Version, die ein Edelstein-Autor verwendet, mit der Edelstein-Version zu tun hat. Sind sie verwandt? Wie würde ein Edelsteinautor die Version von Ruby verwalten? Veröffentlichen Edelstein-Juwelen Edelsteine ​​für mehrere Ruby-Versionen?

Zum Beispiel, wenn ein Autor 2.3.1 verwendet, um ihr Juwel zu bauen bedeutet das jemand mit nur system Ruby wäre nicht in der Lage, es zu benutzen?

Antwort

1

Die Ruby-Versionsspezifikation ist optional und wird nur verwendet, um Entwicklern die Verwendung des Gems zu erleichtern. Zum Beispiel gibt es viele 2,3 Edelsteine, die nicht den required_ruby_version Satz haben. Wenn Sie versuchen, diese auf 1.9 auszuführen, erhalten Sie möglicherweise Fehler, aber sie werden nicht explizit sagen, dass die Ruby-Version falsch ist, so dass sie schwerer zu debuggen sind.

Übrigens können Sie 2.3 als Systemrubin haben - sudo apt-get install ruby2.3

Verwandte Themen