2013-08-04 12 views
7

Si sta verificando un errore durante la distribuzione della mia app rails4 su VPS. L'errore che sto ricevendo èImpossibile distribuire il progetto rails4 con capistrano. rbenv: la versione `2.0.0 'non è installata

rbenv: version `2.0.0' is not installed 

Ma usando "ruby -v" ottengo

ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux] 

E nella mia Gemfile ho

source 'https://rubygems.org' 

ruby '2.0.0' 
gem 'rails', '4.0.0' 

Questo errore appare dopo bundle install ricetta

2013-08-04 23:23:56 executing `bundle:install' 
* executing "cd /home/yasinishyn/apps/kaiser/releases/20130804202355 && bundle install --gemfile /home/yasinishyn/apps/kaiser/releases/20130804202355/Gemfile --path /home/yasinishyn/apps/kaiser/shared/bundle --deployment --quiet --without development test" 
servers: ["xxx.xxx.xxx.xxx"] 
[198.211.125.183] executing command 
** [out :: xxx.xxx.xxx.xxx] rbenv: version `2.0.0' is not installed 
** [out :: xxx.xxx.xxx.xxx] 
command finished in 355ms 
*** [deploy:update_code] rolling back 
* executing "rm -rf /home/yasinishyn/apps/kaiser/releases/20130804202355; true" 
servers: ["xxx.xxx.xxx.xxx"] 
[xxx.xxx.xxx.xxx] executing command 
command finished in 342ms 

Per favore aiutami a capire questo.

+0

puoi pubblicare l'output di 'versioni rbenv' (eseguito sul server)? – mdemolin

risposta

6

Grazie Benjamin, ma l'errore è stato davvero stupido)). Localy Uso ruby ​​2.0.0-p195 che è stato installato da rvm. Sul mio server ho ruby ​​2.0.0-p0 utente che è stato installato da rbenv, perché rbenv non ha il pacchetto ruby ​​2.0.0-p195.

Così, mentre stavo creando nuova applicazione rails4 dalle rotaie-compositore, non notato che è stato creato con .ruby versione del file all'interno del quale era una linea con la versione ruby ​​ruby ​​2.0. 0-p195, quindi ho semplicemente * git rm .ruby-version * e tutto funziona.

4

Questo è sicuramente un problema di PERCORSO, capistrano invierà comandi tramite ssh senza aprire una sessione di console ei file di profilo non vengono caricati allo stesso modo se si apre una sessione di console ssh. Questo potrebbe spiegare perché attraverso la console ssh è possibile ottenere un ambiente rbenv corretto ma non attraverso capistrano.

le seguenti opere con Debian/Ubuntu, e la necessità di essere regolati per altre distro

Suppongo che si è aggiunto qualche export istruzione in uno dei tuoi file di profilo. In ~/.profile o ~/.bashrc forse.

Il export istruzioni che uso sono i seguenti, ma possono essere diversi nella configurazione, quindi se rbenv è correttamente lavorando quando si apre una console ssh allora si può mantenere il vostro set di export comandi. Il trucco che ho intenzione di dettagliare è solo per metterli nel posto giusto.

mie export istruzioni sono:

echo 'export RBENV_ROOT=/opt/rbenv' 
echo 'export PATH=/opt/rbenv/bin:$PATH' 
echo 'eval "$(rbenv init -)"' 

1-

rimuoverli da qualsiasi file dove è stato incluso in precedenza e metterli nel file /etc/profile.d/rbenv

2-

Modificare il file /root/.bashrc (o /home/your_user/.bashrc se si accede al server con un altro utente ER di "root") e aggiungere la linea source /etc/profile.d/rbenv appena prima della riga [ -z "$PS1" ] && return

3-

Modificare il file di /home/deployer/.bashrc (supponendo che si utilizza "deployer" utente per Capistrano, altrimenti adattare il percorso) e aggiungere la linea source /etc/profile.d/rbenv poco prima della linea di [ -z "$PS1" ] && return

4-

Verificare che sta lavorando con l'apertura di un'altra sessione di console ssh e cercando ruby -v.Poi Capistrano dovrebbero funzionare correttamente

Altra possibilità

rbenv deve rimaneggiamento dopo aver installato manualmente gemme, in modo da eseguire sul server rbenv rehash solo per essere sicuri

+0

Ho 5 app di altri binari su quel VPS, e i problemi apparivano solo con questo. Penso che sia perché uso qui rails4. –

+0

Sto usando 'default_run_options [: pty] = true ssh_options [: forward_agent] = true' nel mio file cap e in precedenza ho aggiunto il permesso come questo' cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'' e dopo 'ssh-add -K' –

+0

E questo approccio infrange davvero il mio ambiente (( –

Problemi correlati