.rvmrc e mac osx lion "ripristinare" il problema

0

Sei passato a Lion un paio di giorni fa e hai notato che quando esci da Terminal mentre ti trovi in una cartella, quando lo apri, dovrebbe tornare in quella cartella (insieme alle altre schede).

Questa è davvero una buona funzione, ma il problema è che non "aggiorna" i tuoi percorsi. il che significa che anche se nella cartella dell'app è presente un file .rvmrc, non sarà più possibile impostare ruby e gemset. dovrai effettivamente effettuare il cdout e tornare di nuovo, il che vanifica lo scopo di avere un rvmrc.

Si tratta di un bug noto e sono già disponibili correzioni / patch?

Modifica Seguendo il consiglio di Chris Page, ho aggiunto cd "$PWD" nell'ultima riga del mio .bashrc (che è caricato dal mio .bash_profile)

Questo a sua volta "carica" il rvmrc come previsto:

Last login: Tue Aug  9 11:29:09 on ttys003
Using /Users/eumir/.rvm/gems/ruby-1.9.2-p180 with gemset mygemset

eumir$ gem list
/Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12:in 'require': no such file to load -- rubygems (LoadError)
from /Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12

eumir$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]

Come puoi vedere, ha caricato la gemset (stampata da "Usando / Utenti ...") ma cercando di fare l'elenco delle gemme e mostrando la versione ruby dice che non è ancora stata caricata. (la versione ruby dovrebbe essere 1.9.2)

EDIT 2

Ho aggiornato il mio rvm e ora nessuna delle correzioni non funziona!

Stampa che sta usando il gemset nel mio rvm ma quando faccio un env gem, ottengo questo:

eumir$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
  - INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-11
  - GEM PATHS:
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/", "http://gemcutter.org"]
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/
     - http://gemcutter.org

facendo cd ../ e poi cd myfolder e poi gem env risulta con questo:

eumir$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.4.0]
  - INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
  - RUBY EXECUTABLE: /Users/eumir/.rvm/rubies/ruby-1.8.7-p174/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-10
  - GEM PATHS:
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/", "http://gemcutter.org"]
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/
     - http://gemcutter.org

che è l'ambiente corretto. Come puoi vedere, il pacchetto gemset è stato caricato correttamente (insieme alle gemme) ma sta ancora utilizzando il rubino di sistema invece del rubino rvmrc.

    
posta corroded 05.08.2011 - 05:20
fonte

4 risposte

1

Prova ad aggiornare l'installazione di RVM se esegui qualcosa di precedente alla 1.6.10 (controlla la tua versione attiva con rvm --version ).

In alcune shell:

rvm get latest

Quindi, riavvia le tue altre shell esistenti o esegui rvm reload in esse.

Nota: Un altro problema affrontato dall'OP era la manipolazione PATH dopo che RVM era stato caricato nella shell. Ciò ha creato l'effetto "giusta gemst selezionata, ma installazione errata di ruby" che è scomparso dopo "cd out, cd in" (poiché RVM avrebbe riaffermato la sua posizione nel PERCORSO in quel punto). Quando una shell viene avviata in una directory che contiene .rvmrc , è vitale che RVM sia l'ultima cosa per anteporre elementi al PERCORSO (almeno tutti gli elementi PATH che potrebbero contenere un ruby ( ecc.) in modo che l'installazione di Ruby selezionata in .rvmrc sia effettiva).

RVM dispone di file .rvmrc sorgente "agganciando" il comando cd della shell (una funzione di shell cd in bash , una voce in chpwd_functions per zsh ). Normalmente questo consente di catturare qualsiasi comando "normale" cd che lo si digiti o che venga eseguito tramite uno script di origine dopo aver caricato RVM.

Non ho Lion con cui testare, ma sospetto che il modo in cui funziona sia che forni Terminal , chiama chdir (2) , quindi esegue la shell per stabilire la directory di lavoro iniziale della nuova shell. Ciò significa che la directory è già stabilita dal momento in cui RVM è caricato nel file di inizializzazione della shell.

La cronologia sembra un po 'fangosa, ma RVM ha avuto qualche supporto per il sourcing del file .rvmrc nella directory di lavoro iniziale della shell quando viene caricato per la prima volta. Sembra che potrebbe essere screen specifico, ma in RVM commit cb649ba (Carica sempre il file .rvmrc se in una shell interattiva (apri nuova scheda nella stessa directory)., 2011-05-14) ha allentato il requisito in modo che esso dovrebbe contenere% file% di file per qualsiasi shell interattiva quando RVM viene caricato per la prima volta. Questo commit era presente per la prima volta nella versione 1.6.10 di RVM. Il codice è cambiato un po 'da allora, ma funziona ancora (più o meno) allo stesso modo nelle ultime versioni.

    
risposta data 09.08.2011 - 06:49
fonte
2

Lion Terminal seleziona / ripristina la directory di lavoro impostandola con chdir () prima dell'avvio della shell. Se vuoi eseguire automaticamente una sorta di lavoro aggiuntivo relativo alla directory di lavoro, devi personalizzare la shell con uno script di avvio che esegua alcuni comandi con $ PWD.

Supponendo che tu stia usando bash (il default), ciò che apparentemente vorresti fare è aggiungere qualcosa di simile in ~ / .bashrc:

cd "$PWD"

Non ho familiarità con rvmc, ma presumo che debba usare lo script di avvio della shell per personalizzare il comando "cd", quindi assicurati di emettere questo comando dopo. Inoltre, se non hai già script di avvio della shell, di solito vuoi creare ~ / .bash_profile e farlo eseguire ~ / .bashrc se esiste (guardati intorno su StackExchange o usa Google per trovare questo idioma comune).

    
risposta data 09.08.2011 - 01:14
fonte
0

So che non è una "correzione", ma puoi uscire dal terminale con il comando + opzione + q si chiuderà senza salvare le informazioni sul percorso.

Oppure puoi usare iTerm2 ( link ), ha alcune cose migliori del terminale predefinito.

    
risposta data 05.08.2011 - 18:42
fonte
0

Correzione 1: Ok, ho trovato la soluzione migliore. Così ho creato uno script chiamato .loadrvmrc e che conteneva solo "cd ./" (anche chmod + x it)

L'ho poi caricato nel mio .bash_profile, MA prendi nota che dovrebbe essere caricato in ordine.

Per prima cosa carica il tuo .bashrc:

source ~/.bashrc

quindi il tuo percorso (che carica rvm:

export PATH=/usr/local/mysql/bin:/usr/local/bin:/usr/local/sbin:/Users/eumir/.rvm/bin:$PATH

e quindi lo script .loadrvmrc:

source ~/.loadrvmrc

Voila! Puoi chiudere il tuo terminale e aprirlo con tutte le tue schede e tutti i rispettivi file .rvmrcs.

=========== Fix 2: (non programmatico)

L'ho risolto per ora. Forse è un problema di temporizzazione per rvm o bashrc, quindi non ne sono sicuro. Se qualcuno può pubblicare una soluzione / risposta migliore per questo, ti preghiamo di farlo e cambierò la risposta accettata per questa domanda.

Ad ogni modo nel Terminal predefinito, ho appena cambiato Terminal > Preferences > Settings , quindi ho controllato l'avvio e aggiunto cd ./ come script di avvio.

Questo è ancora brutto per me in quanto l'avvio del terminale avrà come risultato

Last login: Tue Aug  9 11:43:06 on ttys003
eumir$ cd ./
Using /Users/eumir/.rvm/gems/ruby-1.9.2-p180 with gemset mygemset
eumir$ 

che è abbastanza accettabile (finché non arriva una soluzione migliore).

    
risposta data 09.08.2011 - 05:47
fonte

Leggi altre domande sui tag