2015-05-26 12 views
10

(Jako pierwsze, kwestia ta nie jest „co jest lepsze” pytanie. Chcę tylko wiedzieć, w jaki sposób są one podobne i różnią się w perspektywie funkcjonalności.)„PHP Kompozytor” w porównaniu z „Ruby klejnotów i Bundler”

Jestem php programistą i obecnie uczę się ruby ​​. W tych dniach wielu programistów php zachęcamy do korzystania z Composer do zarządzania zależnościami. Przed zadawaniem pytań chciałbym najpierw sprawdzić moją wiedzę.

Według mojego rozeznania,

  • Composer jest narzędziem do zarządzania zależność dla bibliotek PHP (lub opakowania).
  • Composer zainstalowana biblioteka php na podstawie projektu (tzw. Lokalnie). Mam na myśli bibliotekę php zainstalowaną dla projektu1 nie można ponownie użyć dla projektu2 bez ponownego instalowania dla projektu2.

Zauważyłem, że Ruby ma również bardzo dobre narzędzie do zarządzania zależność „RubyGems”. Według mojej wiedzy,

  • "RubyGems" to menedżer pakietów dla "Gems".
  • "Gem" to program w języku Ruby lub biblioteka spakowana w standardowym formacie do współdzielenia. (Rails jest również klejnotem.)
  • Gem może być zainstalowany przez takie polecenie, jak gem install sinatra.
  • Ale istnieje również tak zwany "", który jest również klejnotem do łączenia klejnotów dla aplikacji.
  • Po uruchomieniu polecenia bundle install (pod konkretnym katalogiem projektu ruby), wszystkie klejnoty wymienione w Gemfile są zainstalowane dla tego projektu ruby.

Moje pytania są tutaj.

  1. Composer jest podobny do tego, czy RubyGems lub ?
  2. Po uruchomieniu gem install sinatra, jest on instalowany na poziomie całego systemu?
  3. Po uruchomieniu bundle install klejnoty są instalowane zarówno lokalnie (tylko w tym projekcie), jak i na poziomie całego systemu?
  4. Jeśli potrzebuję dwóch wersji jednego gem (np. sinatra) dla różnych projektów, jak powinienem sobie poradzić?

(Przepraszam za moje długie pytanie. Jeśli moje rozumienie jest coś nie tak, jeszcze raz przepraszam i proszę podkreślić właściwą.)

+4

dzięki za twoje pytanie Jestem w miejscu, w którym byłeś 8 miesięcy temu. i zadałeś mi wszystkie pytania. :) Nie mogłem uwierzyć. to tak, jakbym sam zadawał to pytanie. – mhndev

+0

@mhndev Więc jestem :-) – robsch

Odpowiedz

9

1) Kompozytor jest bardziej podobna do Bundler. Composer wprowadza wszystko do projektu, bundler wprowadza wszystko do twojego systemu i "łączy" je w kontekście twojego projektu. Bundler pracuje z klejnotami z tyłu.

2) tak.gem install robi rzeczy w całym systemie (lub na użytkownika, jeśli używasz coś podobnego rbenv lub RVM)

3) 1. System szerokości i są prawidłowo zbierane według Gemfile po uruchomieniu rzeczy poprzez wiązki Exec

4) Polecam użycie Gemfile, umieszczenie wersji, która cię interesuje, i pozwolenie bundlerowi zrobić resztę (z tyłu zainstaluje kilka wersji i wybierze odpowiednią). Pamiętaj jednak, aby uruchomić "bundle exec". Masz również możliwość użycia gemstone rvm, jeśli masz rvm, ale jest to trudniejsze w obsłudze i będziesz miał bardzo zły czas podczas próby wdrożenia.

+0

Warto zauważyć, że dla # 2 może zainstalować go tylko dla użytkownika i tylko dla jednej wersji Ruby. Bardzo często używa się czegoś takiego jak [RVM] (https://rvm.io/) lub [rbenv] (https://github.com/sstephenson/rbenv) do zarządzania wieloma wersjami. – tadman

+1

tak. to prawda. starałem się to uprościć – Mircea

Powiązane problemy