Warum "bundle install" ein Juwel anstelle von "gem install" für eine rails-3-app?
Ich bin ein Anfänger-Programmierer gehen durch die railstutorial von michael hartl, und beachten Sie, dass der Prozess für die Verwendung der Edelsteine in der Anwendung ist durch hinzufügen in das gemfile, und dann ein:
$ bundle install
Irgendeinen Grund, warum man nicht einfach ein:
$ [sudo] gem install [the_gem]
und dann einfach fügen Sie es auf der Gem-Datei? Ich weiß, das war etwas den Prozess wieder in rails 2.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mittels bundler anstelle der gem-Befehl, um direkt installieren Sie Ihre Edelsteine gibt Ihnen eine ganze Menge Vorteile.
In diesem speziellen Fall, wo Sie vorschlagen, über den gem-Befehl zu installieren und später zu dem Gemfile, bundler wird lösen alle Abhängigkeiten für Sie, wenn Sie installieren ein Juwel, das Sie möglicherweise manuell beheben sonst.
Ihnen ein Beispiel zu geben, nehmen wir die folgenden Abhängigkeiten:
Beide webrat und sunspot_rails Edelsteine erfordern unterschiedliche Versionen von nokogiri als Abhängigkeit. Wenn Sie nur den Befehl gem zu installieren, ist es möglicherweise installieren Sie beide Versionen von nokogiri oder noch schlimmer beschweren sich über versionskonflikte. Bundler wird klug genug, um zu beheben diese Abhängigkeit, Konflikt und installieren Sie die richtige version (z.B. nokogiri 1.3) und stellen Sie beide sunspot_rails und webrat glücklich!
Sorry für die lange Erklärung. Aber, hoffe du bekommst das hin! 🙂
Und btw solltest du einen Blick in diese Datei
Gemfile.lock
um zu sehen, was bundler hinter den kulissen für Sie.Mit dem Gemfile, können Sie sicherstellen, dass jeder andere Entwickler arbeiten an Ihrer app haben die gleiche version von jedem gem. Es stellt auch sicher, dass du nicht ein anderes [the_gem] in Ihr Edelstein-Befehl aus dem, was Sie in Ihrem Gemfile.
Einige Edelstein-Kombinationen machen nur Sinn in bestimmten Umgebungen - z.B. eine bestimmte db in der Entwicklung und eine andere, in der Produktion.
Dem Gemfile ist eine Aufzeichnung darüber, was Ihre Anwendung in jeder Umgebung, und
bundle install
installiert genau das, was nötig ist, kümmert sich um Abhängigkeiten.Wenn einer der Edelsteine in Ihrem Gemfile ist bereits installiert in Ihrem aktuellen gemset (über
gem install
), dann die bundler verwenden Sie (statt der Neuinstallation von Ihnen).