2014-06-15 4 views
6

Ich versuche, Rails-Anwendung, aber seine stecken mit dem Fehlerrbenv: Bundle: Befehl nicht auf Produktionsserver gefunden

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" 
bereitstellen

Produktion.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 

Es ist richtig Rubin version.But mit i Edelsteine ​​zu installieren erraten versuchen, in einem anderen Ordner. Wie kann ich es beheben?

Antwort

9

Haben Sie versucht, den Edelstein "Bundler" zuerst auf Ihrem Server zu installieren? Dieses Juwel wird benötigt, um den Befehl bundle auszuführen. SSH auf Ihren Server und führen Sie den folgenden Befehl ein:

gem install bundler 

Hoffnung, die

+0

'@ movieseat bereitstellen:/$ sudo gem bundler installieren [sudo] Passwort für deploy: erfolgreich installiert Bündler-1.7.4 1 Juwel installiert ' Aber ich bekomme immer noch den Fehler. Irgendwelche Vorschläge? –

+0

Verwenden Sie RVM oder rbenv? –

+0

Ich benutze rbenv. vielleicht kannst du dir hier meine Frage ansehen> http://stackoverflow.com/questions/26689521/error-deploying-rails-app –

1

-Update hilft:
finde ich den Grund: meine .gemrc umfassen "Juwel: --user-install", so das Bündel nicht in rbenv installieren, und dann kann rbenv das Bundle-Binary in 2.1.2 Pfad nicht finden, entfernen Sie die --user-install config, und installieren Sie das Bündel resovle das Problem erneut.

===================================
fand ich, dass die RBENV_VERSION env Ursache Bündel gescheitert , aber weiß nicht warum. Ich entferne die RBENV_VERSION und exec die cmd auf dem Server, es gelingt.

+0

Warum wird dieser Kommentar abgelehnt? –

3

Wenn Sie bereits bundler installiert haben (Bündler -v) geben diesem einen Versuch (es für mich auf Ubuntu 12.04 LTS gearbeitet):

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

das funktionierte für mich.Ich wollte nicht von Platz 1 starten :). – longJOURNEY

1

Es ist für mich gearbeitet. Ich benutze Ubuntu 16.04.Change Benutzer unten mit Ihrem Benutzernamen.

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