2014-06-15 19 views
6

Sto provando a schierare applicazione Rails, ma la sua bloccato con l'errorerbenv: bundle: comando non trovato sul server di produzione

DEBUG[1a70ba92] Command: cd /home/deploy/myapp/releases/20140615090226 && (PATH=$HOME/.rbenv /shims:$HOME/.rbenv/bin:$PATH RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.2 ~/.rbenv/bin/rbenv exec bundle install --binstubs /home/deploy/myapp/shared/bin --path /home/deploy/myapp/shared/bundle --without development test --deployment --quiet) 
DEBUG[1a70ba92]  rbenv: bundle: command not found 
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing on host xxx.xxx.xxx.xx: bundle exit status: 127 
bundle stdout: Nothing written 
bundle stderr: rbenv: bundle: command not found 

deploy.rb

# config valid only for Capistrano 3.1 
lock '3.1.0' 

set :application, 'myapp' 
set :repo_url, '[email protected]:username/myapp.git' 

# Default branch is :master 
# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp } 

# Default deploy_to directory is /var/www/my_app 
set :deploy_to, '/home/deploy/myapp' 

# Default value for :scm is :git 
# set :scm, :git 
set :branch, "master" 

# Default value for :format is :pretty 
# set :format, :pretty 

# Default value for :log_level is :debug 
# set :log_level, :debug 

# Default value for :pty is false 
# set :pty, true 

# Default value for :linked_files is [] 
set :linked_files, %w{config/database.yml} 

# Default value for linked_dirs is [] 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} 

# Default value for default_env is {} 
# set :default_env, { path: "/opt/ruby/bin:$PATH" } 
set :default_env, { path: "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" } 
# Default value for keep_releases is 5 
# set :keep_releases, 5 

namespace :deploy do 

    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     # Your restart mechanism here, for example: 
     execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 

    after :publishing, :restart 

    end 

    desc "Symlink shared config files" 
    task :symlink_config_files do 
     run "#{ try_sudo } ln -s #{ deploy_to }/shared/config/database.yml #{ current_path }/config/database.yml" 
    end 

end 

capfile

# Load DSL and Setup Up Stages 
require 'capistrano/setup' 

# Includes default deployment tasks 
require 'capistrano/deploy' 
require 'capistrano/bundler' 
require 'capistrano/rails' 
require 'capistrano/rbenv' 
set :rbenv_ruby, "2.1.2" 

Production.rb

set :stage, :production 
role :app, %w{[email protected]} 
role :web, %w{[email protected]} 
role :db, %w{[email protected]} 
set :password, ask('Server password', nil) 
server 'xxx.xxx.xxx.xx', user: 'deploy', password: fetch(:password), roles: %w{web app} 

/etc/nginx/nginx.conf

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; 
passenger_ruby /home/deploy/.rbenv/shims/ruby; 

/etc/nginx/sites-enabled/default

server { 
     listen 80 default_server; 
     listen [::]:80 default_server ipv6only=on; 

     server_name mydomain.com; 
     passenger_enabled on; 
     rails_env production; 
     root   /home/deploy/myapp/current/public; 

     # redirect server error pages to the static page /50x.html 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
} 


which ruby 
/home/deploy/.rbenv/shims/ruby 

ruby -v 
ruby 2.1.2p95 

Si sta usando proprio rubino version.But Credo che si tenta di installare le gemme in un'altra cartella. Come posso risolvere il problema?

risposta

9

Hai provato a installare prima il gem "bundler" sul tuo server? Questo gioiello è necessario per eseguire il comando bundle. SSH al server ed eseguire il seguente comando:

gem install bundler 

Speranza che aiuta

+0

'distribuire @ movieseat:/$ sudo gem install bundler [sudo] password per implementare: installato con successo bundler-1.7.4 1 gem installato ' Ma sto ancora ricevendo l'errore. Eventuali suggerimenti? –

+0

Stai usando RVM o rbenv? –

+0

Sto usando rbenv. forse puoi dare un'occhiata alla mia domanda qui> http://stackoverflow.com/questions/26689521/error-deploying-rails-app –

1

Aggiornamento:
trovo la ragione: i miei .gemrc includono "gemma: --user-install", in modo che il fascio non installare in rbenv e quindi rbenv non riesce a trovare il pacchetto binario nel percorso 2.1.2 rimuovere la configurazione --user-install e reinstallare il pacchetto resovle il problema.

===================================
ho scoperto che il RBENV_VERSION ENV causa fascio non è riuscita , ma non so perché. Rimuovere il RBENV_VERSION ed eseguire il cmd sul server, ha esito positivo.

+0

Perché questo commento è downvoted? –

3

Se avete già installato bundler (bundler -v) dare una prova (ha funzionato per me su Ubuntu 12.04 LTS):

1. gem uninstall bundler 
2. gem update 
3. gem install bundler 
4. redeploy 
+1

questo ha funzionato per me.Non volevo iniziare dalla piazza 1 :). – longJOURNEY

1

Ha funzionato per me. Sto usando Ubuntu 16.04.Change utente sotto con il tuo nome utente.

sudo pico /etc/profile.d/rbenv.sh

#File 
export RBENV_ROOT=/home/user/.rbenv 
export PATH=$RBENV_ROOT/shims:$RBENV_ROOT/bin:$PATH 
#End File 
Problemi correlati