2015-10-14 16 views
8

Sto usando Cygwin con la versione cygwin di ruby ​​su Windows.Esecuzione di gemme Ruby con Cygwin

$ ruby -v 
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-cygwin] 

Dopo aver installato correttamente rspec (gem install RSpec), ho provare a eseguire il comando di base init (--init RSpec) per iniziare, ma ottengo un messaggio di comando bash non trovato.

$ rspec --init 
-bash: rspec: command not found 

Sto indovinando questo sta accadendo perché non v'è alcun file "rspec" sotto il mio C: \ cygwin64 \ bin (in quanto v'è "ruby", "IRB", ecc file che deve guardare cygwin quando i comandi vengono digitati in esso).

Guardando attraverso le mie directory cygwin, posso vedere il file rspec "exe" in "C: \ cygwin64 \ home \ nomeutente \ .gem \ ruby ​​\ gems \ rspec-core-3.3.2 \ exe". Penso che questo significhi che si tratta semplicemente di aggiungere questo file al percorso di cygwin, ma non sono stato in grado di trovare un buon esempio di questo. Idealmente la soluzione gestirà questo gioiello (rspec) e tutte le installazioni future senza dover "hardcodificare" il percorso ogni volta.

Guardando il mio "ambiente gem", sembra che le gemme installate siano già sotto il mio "GEM PATHS". Sembra che ci sia una disconnessione tra questo e dove Cygwin sta guardando.

$ gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 2.4.7 
    - RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-cygwin] 
    - INSTALLATION DIRECTORY: /home/username/.gem/ruby 
    - RUBY EXECUTABLE: /usr/bin/ruby.exe 
    - EXECUTABLE DIRECTORY: /home/username/bin 
    - SPEC CACHE DIRECTORY: /home/username/.gem/specs 
    - SYSTEM CONFIGURATION DIRECTORY: /etc 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-cygwin 
    - GEM PATHS: 
    - /home/username/.gem/ruby 
    - /usr/share/gems 
    - /usr/local/share/gems 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 
    - SHELL PATH: 
    - /usr/local/bin 
    - /usr/bin 
    ... 

La cosa più vicina che ho trovato nella mia ricerca era un'altra questione StackOverflow qui:

What version of ruby use with cygwin?

ma da quello che ho capito della soluzione, sta andando a cercare i file con il bat estensione. Eseguirne alcune parti nel mio cygwin per provarlo non produce risultati utili.

Qualche consiglio su come far crescere Cygwin con quello che vedo nell'ambiente gemma?

risposta

10

Sebbene la mia risposta sia un po 'tardiva, immagino che potrebbe aiutare qualcuno che ha lo stesso problema.

Il problema per me era che gli eseguibili di tutti i rubini erano memorizzati in ~/bin., Che non era stato impostato nel mio percorso cygwin. Così ho cambiato la posizione di tutti gemme del rubino e le loro file eseguibili nella mia ~/.gemrc:

gemhome: /usr/local/rubygems 
gem: --bindir /usr/bin 

Dopo reinstallare le gemme, tutto ha funzionato bene da me in avanti. Questo installerà tutti gli eseguibili gem direttamente su /usr/bin. Questo è sicuramente un po 'sporco quando si tratta di configurazioni multiutente.

Se è necessaria una corretta configurazione multiutente, il modo migliore sarebbe quello di regolare PATH in modo che puntino allo stato ~./bin.

Approfondimenti:

6

Si può solo aggiungere quanto segue al .bashrc o simili:

PATH=$PATH:~/bin 

e fare source ~/.bashrc per aggiungerlo alla il percorso immediatamente ely.

Problemi correlati