2012-07-19 21 views
7

Sono un neofita del rubino e ho bisogno di eseguire il debug di alcune app rubiniche confezionate come gemme.Qual è l'equivalente di Ruby di python setup.py sviluppare?

Sto usando rvm, dove ho installato il pacchetto come gemma e ho anche un nuovo controllo github di quel pacchetto. Come posso dire al mio ambiente rvm di usare il codice nel repository github invece della gem installata?

Questo è l'equivalente di python setup.py develop per le persone che hanno familiarità con Python.

Setuptools consente di distribuire i progetti per l'utilizzo in una directory comune o area di gestione temporanea, ma senza copiare alcun file. Così, è possibile modificare il codice di ogni progetto nella sua directory cassa

https://pythonhosted.org/setuptools/setuptools.html#development-mode

risposta

7

Yup, è possibile.

Check out Bundler. È lo standard de facto usarlo.

+0

Ho cercato un bundler e ho fatto quanto segue: in primo luogo, creare un nuovo gemset all'interno di rvm, quindi gem install bundler e quindi installare il bundler. Installa tutte le dipendenze come previsto, ma quando provo a eseguire effettivamente l'applicazione in cui ho eseguito l'installazione di bundle, ottengo un traceback. Non sono sicuro se proviene dal mio utilizzo di rvm/gemset/qualunque. Il traceback è qualcosa come "/Users/cournape/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in' to_specs ': Impossibile trovare vagrant (> = 0) tra [...] (essendo vagabondo l'app che sto cercando) –

+0

Hm. Come stai correndo? Se lo hai verificato, dopo l'installazione di bundle, dovresti essere in grado di fai 'bin/vagrant' ed esegui il codice che hai appena estratto.Puoi anche eseguire' bundle exec bin/vagrant', che dovrebbe essere ancora migliore, anche se il gemset dovrebbe renderlo irrilevante (sandboxes 'bundle exec' le gemme disponibili per quelli in 'Gemfile.lock', ma se hai un nuovo gioiello, dovrebbe essere praticamente lo stesso) –

+0

Penso di aver fatto qualcosa di sbagliato, non vedo più il problema. In ogni caso, il tuo consiglio sull'utilizzo del bundle exec funziona perfettamente Grazie –

0

In aggiunta alla risposta precedente.

A volte gemme/pacchetti forniscono eseguibili. La cosa buona con python setup.py develop è che avrai sempre l'ultima versione di quell'eseguibile nel tuo percorso. È abbastanza utile per lo sviluppo. Per quanto ne so, Gem non fornisce tale funzionalità. Per emulare che è possibile utilizzare Bundler ed è come:

  • Innanzitutto creare un nuovo Gemfile: bundle init
  • quindi modificare il file e aggiungere il gioiello locale si sta lavorando (per me è Nanoc): gem "nanoc", path: "path/to/local/nanoc"
  • Poi per accedere al file eseguibile fornito dalla Gem è possibile utilizzare Bundler in questo modo: bundle exec nanoc ...

Qui bundle exec avrà la versione Gem dal Gemfile e utilizzarlo. Se quella gemma è specificata con un'opzione :path, verrà utilizzata.

È sicuramente meno conveniente che in Python è la soluzione più vicina che ho trovato in Ruby.

Problemi correlati