Im Gemfile
meines Rails-Projekts habe ich angefangen, Hilfs-Edelsteine wie "ruby-debug19", "perfmtools.rb" oder "irbtools" zu haben. All diese Dinge haben nichts mit dem Projekt zu tun, sondern sind Teil meiner lokalen Entwicklungsumgebung. Aber da ich Bündler verwende, kann ich diese Edelsteine nicht laden (obwohl sie systemweit installiert sind), wenn ich sie nicht zur Gemdatei hinzufüge. Aus meiner Sicht ist das ein bisschen ein Code-Geruch.
Ich würde zum Beispiel require 'irbtools'
in rails console
hinzufügen können, ohne "irbtools" zu meiner Gemfile hinzuzufügen.
Gibt es eine Möglichkeit, Hilfsgemme aus dem Gemfile zu entfernen und trotzdem in der Lage zu sein, sie zum Debuggen, Profilieren usw. zu laden, wenn ich sie brauche?
Tatsächlich können Sie in Ihrem group
like:
Gemfile
erstellen
%Vor%
Und dann bundle install --without auxiliary
, wenn Sie irbtools
nicht verwenden möchten. Warum denken Sie, dass das Hinzufügen zu Gemfile
ein Code-Geruch ist? Und wenn es möglich ist, dies zu tun, ohne Edelsteine zum Gemfile
hinzuzufügen, wird es viel mehr Code-Geruch sein, denke ich.
Dank diesem Beitrag habe ich eine tolle Sache Lösung.
Fügen Sie diese Zeile am Ende Ihrer Gemdatei hinzu:
%Vor%Erstellen Sie eine Datei namens Gemfile.local.
Fügen Sie Ihre Entwicklungs-Edelsteine zu Gemfile local hinzu. Zum Beispiel:
%Vor%Jetzt können Sie Ihre Hilfsentwicklungssteine hinzufügen, ohne die Gemdatei für andere Personen im Team zu ändern. Sehr cool.
Ich habe den unten stehenden Code in eine Datei im Stammverzeichnis meiner App eingefügt, sodass das Laden von irb
einfach ist.
Wenn Sie es in so etwas wie einem Rails-Server haben wollen, müssen Sie wahrscheinlich die load
-Anweisung zu environments/development.rb
usw. hinzufügen. Das schafft immer noch Probleme, wenn Sie es versehentlich einchecken, aber es ist weniger ärgerlich, als es hinzufügen zu müssen zum Gemfile und dazu, dass sich auch dein Gemfile.lock ändert.
Ich bin mir nicht sicher, ob das für dich funktionieren würde. Es hängt davon ab, ob Sie RVM verwenden oder nicht. Wenn dies der Fall ist, können Sie diese zusätzlichen Edelsteine im @global
gemset installieren, das automatisch für jeden Ruby-Interpreter erstellt wird. Die Edelsteine im @global
-Grundsatz stehen standardmäßig allen projektspezifischen Edelsteingruppen zur Verfügung. Auf diese Weise müssen Sie Ihre Gemfiles nicht überladen.
Tags und Links ruby ruby-on-rails rubygems bundler