learnxinyminutes-docs/de/ruby-ecosystem.md
2024-12-08 20:29:09 -07:00

6.5 KiB

category tool contributors translators filename lang
tool Ruby ecosystem
Jon Smock
http://github.com/jonsmock
Rafal Chmiel
http://github.com/rafalchmiel
Christian Albrecht
https://github.com/coastalchief
ruby-ecosystem-de.txt de-de

Hier gibt es einen Überblick über die gängigsten Tools zur Verwaltung
von verschiedenen Ruby Versionen, Gems und Dependencies.

Ruby Managers

Einige Betriebssysteme haben bereits eine Ruby Version vorinstalliert
oder bieten sie als Package zum Download an. Die meisten Rubyisten
benutzen diese aber eher nicht und wenn, dann um damit einen Ruby
Manager zu installieren. Damit kann man komfortabel zwischen den
verschiedenen Versionen hin und herspringen.

Dies sind die beliebtesten:

  • RVM - Installiert und wechselt zwischen rubies RVM kennt verschiedene Ruby Versionen und hat das Konzept der gemsets,
    um gem Abhängigkeiten pro Projekt zu managen.
  • ruby-build
    Installiert nur rubies, kann diese aber sehr gut verwalten
  • rbenv - Wechselt Ruby Versionen. Wird zusammen mit ruby-build benutzt. Hiermit kann man kontrollieren,
    wie rubies laden.
  • chruby - Wechselt Ruby Versionen. Ähnlich rbenv.

Ruby Versionen

Ruby wurde von Yukihiro "Matz" Matsumoto vor gut 20 Jahren veröffentlicht.
Matz ist nach wie vor in die Entwicklung involviert. Daher kommt auch der
Name der Referenzimplementierung: MRI (Matz' Reference Implementation).

Die aktuellste Version ist 2.2.3 und wurde im August 2015 veröffentlicht!

Hier eine kurze Versionshistorie:

Die Veränderung zwischen 1.8.7 und 1.9.x war sehr groß und eine Migration
nicht so einfach möglich. Der Versionssprung auf 2.0.0 war verglichen dazu
weit weniger dramatisch.
Beispielsweise hat 1.9. Encodings und eine Bytecode VM eingeführt.
Es gibt immer noch Projekte die auf der stabilen Version 1.8.7 laufen,
aber diese sind mittlerweile in der Minderheit. Die meisten Projekte
laufen auf 1.9.x oder auf 2.x.

Ruby Implementierungen

Das Ruby Ecosystem beinhaltet viele verschiedene Implementierungen von Ruby,
jedes mit seinen eigenen Vorteilen und verschiedenen Graden von
Kompatibilität. Auch wenn alle diese Implementierungen in verschiedenen
Sprachen geschrieben sind, sind sie doch alle Ruby.
Jede Implementierung bietet neben ihren speziellen Features immer auch
die Möglichkeit normale ruby Dateien auszuführen.

Am ausgereiftesten und stabilsten:

  • MRI - Geschrieben in C, das ist die Referenz Implementierung. Sie ist 100% kompatibel (mit sich selbst ;-). Alle anderen rubies bleiben kompatibel mit MRI (siehe Ruby Spec weiter unten).
  • JRuby - Geschrieben in Java and Ruby, Robust und ziemlich schnell. Der größte Vorteil von JRuby ist die Interoperabilität mit JVM/Java und damit die
    Benutzung von Ruby im Java Ecosystem.
  • Rubinius - Geschrieben in Ruby mit C++ bytecode VM. Auch sehr ausgereift und schnell.

Mittel ausgereift / kompatibel:

  • Maglev - Baut auf Gemstone, ein Smalltalk VM. Dieses Projekt versucht das großartige Smalltalk Tooling in die Ruby Welt
    zu bringen.
  • RubyMotion - Ruby in der iOS Entwicklung.

Weniger ausgereift/kompatibel:

  • Topaz - Geschrieben in RPython (via PyPy) Topaz ist noch ziemlich jung und versucht die schnellste Implementierung
    zu werden.
  • IronRuby - Geschrieben in C# für die .NET Plattform
    Das letzte Release von IronRuby ist mittlerweile 5 Jahre her.

Die Ruby Implementierungen haben ihre eigenen Versionsnummern, sind aber
trotzdem immer zu einer MRI Version kompatibel.
Viele können sogar zwischen verschiedenen Modi wechseln (1.8 mode -> 1.9 mode)

Ruby Spec

Die meisten Ruby Implementierungen vertrauen der Ruby Spec. sehr stark. Da Ruby keine offizielle Spezifikation hat, hat die
Community ausführbare Specs (in Ruby) geschrieben, um so die Kompatibilität
zur MRI testen zu können.

RubyGems

RubyGems ist der Community Paket Manager von Ruby.
RubyGems kommt mit Ruby zusammen, so dass kein extra Tool nötig ist.

Ruby Pakete werden "gems" genannt und könnten auf RubyGems.org
veröffentlicht werden. Jedes Gem enthält den Source Code und Meta Daten,
wie die Versionsnummer, weitere Abhängigkeiten, Autoren und Lizenzen.

Bundler

Bundler ist ein Tool um Abhängigkeiten zwischen
Gems aufzulösen und zu managen. Dazu werden diese in einem gemfile
zusammengefasst und Bundler kümmert sich darum die Abhängigkeiten
untereinander rekursiv aufzulösen. Entweder es klappt und alle gems
konnten runtergeladen werden, oder es wird abgebrochen und
der Konflikt gemeldet.
Zum Beispiel:
Wenn Gem A die Version 3 oder höher von Gem Z braucht, aber Gem B
von Gem Z die Version 2, dann ist das ein Konflikt.

Testing

Test-Driven Development ist ein essentieller Teil der Ruby Kultur.
Ruby bringt sein eigenes Unit-Test framework mit, minitest. Darüberhinaus
gibt es noch viele weitere Testframeworks mit unterschiedlichsten Zielen:

  • TestUnit - Eingebaut in Ruby 1.8 "Unit-style" Testframework
  • minitest - Eingebaut in Ruby 1.9/2.0 "Unit-style" Testframework
  • RSpec - Ein Testframework welches auf verständliche Testdefinition setzt
  • Cucumber - Ein BDD Testframework welches Gherkin tests parsen kann

Be Nice

Die Ruby Community ist stolz darauf eine offene, vielfältige und einladende
Community zu sein. Es gibt viele aktive Ruby User Gruppen und diverse
Ruby Konferenzen. Matz selbst ist so oft es geht dabei.