2010-01-27 9 views
7

Soweit ich weiß, setzen rails:freeze:gems und Rechen gems:unpack die Edelsteine ​​auf /vendor. rails:freeze:gems platziert sie an /vendor/rails, gems:unpack Platzieren Sie sie an /vendor/gems. Der Punkt für mich scheint jedoch derselbe zu sein. In beiden Fällen besteht das Ziel darin, die Edelsteine ​​und ihre Versionen so zu reparieren, wie sie es während der Entwicklung waren. Gibt es einen anderen Unterschied? Es scheint mir eine Vervielfältigung jetzt ..Was ist der Unterschied zwischen den Rake Rails: Freeze: Gems und Rake Gems: auspacken?

Antwort

7

Von meinem Verständnis, Edelstein: entpacken wird jede dritte Partei Edelstein Ihre App Bedürfnisse in Vendor/Edelsteine ​​entpacken.
Rails: Freeze: Gems friert nur die Edelsteine ​​ein, die mit Rails selbst zu tun haben, also friert es deine App auf eine bestimmte Version von Rails ein. Also das unterschiedliche/vendor/rails-Verzeichnis.

Um ein bisschen mehr Kommentar:
Es gibt diese Zeile in config/environment.rb
# Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION

So standardmäßig werden Schienen prüfen, ob die Verkäufer/Schienen-Verzeichnis vorhanden ist, und verwenden Sie die Versionen diese Edelsteine, wenn es so ist. Wenn nicht, müssen Sie festlegen, welche Version der Schienen verwendet wird, und Schienen versuchen, die Edelsteine ​​von Ihrem lokalen System einzuziehen.

Also der einzige Unterschied zwischen den beiden Befehlen, die ich sehe, ist, dass rails:freeze:gems NUR die Rails-Dateien in Vendor/Rails, die genau dort, wo Schienen sie sein will, ablegt.

Der Grund, warum Sie gem:unpack verwenden möchten, besteht darin, Drittanbieter-Edelsteine ​​abzulegen, von denen Ihre Anwendung abhängig ist. Daher müssen diese Edelsteine ​​nicht lokal installiert werden, wenn Ihre App ausgeführt wird.

Sie können sich rails:freeze:gems als eine Abkürzung vorstellen, die einfach eine gem:unpack nur der Schienen Edelsteine ​​in die Verzeichnisschienen erwartet (/ vendor/rails), so dass Sie es nicht manuell tun müssen. Aber ja, hinter den Kulissen erwarte ich rails:freeze:gems wahrscheinlich gem:unpack

+0

Danke! Es klärt viele Dinge. Ich habe mit den Aufgaben herumgespielt. Allerdings scheint es mir, freak zu sein, die Schienen Edelsteine ​​und die anderen Edelsteine ​​anders zu behandeln. In gewisser Weise sind sowohl 3rd Party als auch Rails Edelsteine ​​nur Edelsteine. Ich denke, Bundler behandelt dies ohne Unterschied. – fifigyuri