2010-08-27 9 views
28

Ruby Version Manager ermöglicht es uns, in jedem Projekt eine .rvmrc Datei zu verwenden, um festzulegen, welche Ruby Version und welches Juwel geladen werden soll. Soll diese Datei in die Quellcodeverwaltung eingecheckt werden? Oder setzt das zu viel von der Arbeitsumgebung anderer Entwickler voraus?Überprüfen Sie Ihre rvmrc-Datei?

Antwort

31

Source Control Management ist hauptsächlich über Reproduzierbarkeit: Können Sie eine Version einer Entwicklungsbemühung basierend auf dem, was Sie in Ihrem SCM gespeichert haben reproduzieren?

Wenn diese Datei .rvmrc benötigt wird, damit ein Entwickler in Ihrem Projekt arbeiten kann (mit den richtigen Artefakten), dann sollten Sie es versionieren.

Wie in RVM Best Practices erwähnt:

No. 2 - Überprüfen Sie Ihre rvmrc in die Quellcodeverwaltung.

die zuvor erwähnte rvmrc in die Quellcodeverwaltung an der Seite Ihrer App Durch die Überprüfung, Sie sicherstellen, dass alle Benutzer eine konsistente Umgebung haben, wenn sie rvm verwenden sind.

Durch die Automatisierung von Gemset-Installationen und Ähnlichem (z. B. das rvmrc im Repository der rvm-Site oder das Rvmrc der TEDxPerth-Repository), machen Sie den Einstieg ebenso einfach wie das Ändern des Verzeichnisses.

Darüber hinaus können Sie Ihre Bereitstellungen auch automatisch auf Ihre anwendungsspezifische Umgebung einrichten.

Andere Entwickler können mit der Verwendung von gemsets auf ihre RVM Wende:

echo rvm_ignore_gemsets_flag=1 >> ~/.rvmrc 

Dies wird ihnen Standard gemset immer verwenden machen.

+0

interessanter Punkt. Ich halte mein rvmrc in meinem Home-Verzeichnis, muss das anders machen. –

+4

Erzwingt dies nicht, dass andere Entwickler in Ihrem Team einen Edelsteinsatz mit dem gleichen Namen wie der .rvmrc-Ersteller verwenden? – ybakos

+3

Normalerweise füge ich in Rvmrc kein Gemset ein, wenn das Projekt Bundler verwendet. Wenn es keinen Bundler verwendet, geben Sie ihm einen Namen für den Gemset-Namen, der dem Projekt mit dem Flag "--create" entspricht, damit es automatisch erstellt wird. –

11

Ich würde tatsächlich davon abraten, .rvmrc in SCM zu halten. Zwei spezifische Gründe:

  1. Wenn Sie gemsets Sie andere Entwickler erzwingen die gleiche gemset zu verwenden (während einige könnten es vorziehen, alle in der globalen gemset ihre Edelsteine ​​haben).

  2. Sie machen es anderen Entwicklern schwer, das Projekt auf einer anderen Ruby-Version auszuführen. Sicher, bei der Produktion läuft es unter 1.9.2-p290, aber warum sollte ich die App nicht lokal auf 1.9.3-p0 ausführen dürfen?

Allgemeinen erzwingt es zu viel auf jedem Entwickler (gleiche Geschichte wie database.yml, die sollte auch nicht in SCM gehalten werden). Ein Hinweis in der README des Projekts der "production running" Ruby Version ist genug imo.

+0

Ich denke, es kommt auch auf das Projekt an.Ich habe eine Situation, in der Entwickler mehrere Ruby-Versionen des gleichen Projekts (verschiedene Plattformen, Anforderungen) von der Produktion - von Design - laufen lassen. Unsere * Tests * sagen uns, dass alles richtig funktioniert. Die Freiheit, Rubine zu wechseln, erlaubt es uns, versionsspezifische Probleme zu diagnostizieren und Benchmarks durchzuführen. – foz

Verwandte Themen