2015-05-26 8 views
10

(Come prima, questa domanda non è "che è meglio" questione. Voglio solo sapere come sono simili e differiscono in prospettiva funzionalità.)"PHP Composer" rispetto a "Ruby gemme e Bundler"

Sono php sviluppatore e attualmente sto imparando rubino. In questi giorni, molti sviluppatori di PHP sono incoraggiati a usare Composer per la gestione delle dipendenze. Prima di fare domande, vorrei prima convalidare le mie conoscenze.

Secondo la mia comprensione,

  • Composer è uno strumento di gestione delle dipendenze di librerie PHP (o pacchetti).
  • Composer libreria php installata per progetto (cosiddetta localmente). Voglio dire, la libreria php installata per project1 non può essere riutilizzata per project2 senza installare nuovamente per project2.

ho notato che Rubino ha anche strumento molto buona gestione delle dipendenze "RubyGems". Secondo la mia conoscenza,

  • "RubyGems" è un gestore di pacchetti per "gemme".
  • "Gem" è un programma Ruby o biblioteca confezionato in un formato standard per la condivisione. (Rails è anche un gioiello.)
  • Gem può essere installato con il comando del genere gem install sinatra.
  • Ma, c'è anche la cosiddetta "", che è anche un gioiello per impacchettare le gemme per un'applicazione.
  • Quando il comando viene eseguito bundle install (sotto directory specifica del progetto rubino), tutte le gemme elencati nella Gemfile sono installati per questo progetto rubino.

Quindi, le mie domande sono qui.

  1. Composer è simile a se RubyGems o ?
  2. Quando viene eseguito gem install sinatra, è installato a livello di sistema?
  3. quando viene eseguito bundle install, le gemme sono installati sia a livello locale (in progetto) di livello a livello di sistema o?
  4. Se sono necessarie due versioni di una gem (ad esempio sinatra) per progetti diversi, come devo gestirmi?

(Scusate per la mia lunga domanda. Se la mia comprensione sono qualcosa di sbagliato, mi dispiace di nuovo e si prega di indicare la giusta.)

+4

grazie per la tua domanda sono a posto dove eri in 8 m mese fa. e hai fatto tutte le mie domande. :) Non potevo credere. è come se stessi facendo la domanda io stesso. – mhndev

+0

@mhndev Quindi sono così :-) – robsch

risposta

9

1) Composer è più simile a bundler. Compositore porta tutto nel tuo progetto, bundler porta tutto nel tuo sistema e "link" nel contesto del tuo progetto. Bundler sta lavorando con gemme nella parte posteriore.

2) sì.gem install fa le cose a livello di sistema (o per utente se si utilizza qualcosa come rbenv o RVM)

3) 1. a livello di sistema e siano correttamente scelto in base alla Gemfile quando si esegue le cose attraverso fascio exec

4) Raccomando di usare un Gemfile, mettendo la versione che ti interessa e lasciando che il bundler faccia il resto (nel retro installerà più versioni e scegli quella giusta). Assicurati di eseguire "bundle exec" però. Hai anche la possibilità di usare un rset gemma rvm se ti trovi in ​​rvm ma è più difficile da gestire e avrai davvero pessimi momenti durante il tentativo di distribuzione.

+0

Vale la pena notare che per # 2 può installarlo solo per l'utente e solo per una versione di Ruby. È molto comune utilizzare qualcosa come [RVM] (https://rvm.io/) o [rbenv] (https://github.com/sstephenson/rbenv) per gestire più versioni. – tadman

+1

sì. è vero. stava cercando di mantenerlo semplice – Mircea