2012-05-25 12 views
5

Despliego mi aplicación a un Ubuntu VPS. Seguí el lanzamiento de "implementar a VPS".Inicializador o gema no cargada con Unicorn causando 500 error de servidor interno

Todo fue sin problemas, hasta que he añadido la siguiente joya: https://github.com/marceldegraaf/sisow

En mi máquina de desarrollo local funciona como un encanto, pero después de que haya desplegado en mi entorno de producción, la aplicación de los carriles ya no arrancan (Error interno de servidor 500).

He intentado una serie de "ajustes" en mi configuración de unicornio, deploy.rb y muchos otros archivos, pero nada parece funcionar.

Lo extraño es que cuando uso:

RAILS_ENV=production bundle exec rails c 

puedo usar la gema sin ningún problema

unicorn.log

E, [2012-05-25T16:38:14.742805 #27916] ERROR -- : reaped #<Process::Status: pid 5777 exit 1> worker=1 
I, [2012-05-25T16:38:14.742998 #27916] INFO -- : worker=1 spawning... 
I, [2012-05-25T16:38:14.746132 #5803] INFO -- : worker=1 spawned pid=5803 
I, [2012-05-25T16:38:14.746557 #5803] INFO -- : Refreshing Gem list 
/home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- sisow (LoadError) 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `block in require' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:236:in `load_dependency' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:251:in `require' 
    from /home/deployer/apps/my_app/releases/20120525140057/config/initializers/sisow.rb:1:in `<top (required)>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:245:in `load' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:245:in `block in load' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:236:in `load_dependency' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.0/lib/active_support/dependencies.rb:245:in `load' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/engine.rb:588:in `block (2 levels) in <class:Engine>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/engine.rb:587:in `each' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/engine.rb:587:in `block in <class:Engine>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:30:in `instance_exec' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:30:in `run' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:55:in `block in run_initializers' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:54:in `each' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/initializable.rb:54:in `run_initializers' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/application.rb:136:in `initialize!' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/railties-3.2.0/lib/rails/railtie/configurable.rb:30:in `method_missing' 
    from /home/deployer/apps/my_app/releases/20120525140057/config/environment.rb:5:in `<top (required)>' 
    from config.ru:4:in `require' 
    from config.ru:4:in `block in <main>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize' 
    from config.ru:1:in `new' 
    from config.ru:1:in `<main>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn.rb:44:in `eval' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn.rb:44:in `block in builder' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:696:in `call' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:696:in `build_app!' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:569:in `init_worker_process' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:589:in `worker_loop' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:487:in `spawn_missing_workers' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:498:in `maintain_worker_count' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:272:in `join' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/bin/unicorn:121:in `<top (required)>' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `load' 
    from /home/deployer/apps/my_app/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `<main>' 
E, [201 

unicornio (?). rb

app_path = "/home/deployer/apps/my_app" 
root = "/home/deployer/apps/my_app/current" 
bundle_path = "#{app_path}/shared/bundle" 
working_directory root 
pid "#{root}/tmp/pids/unicorn.pid" 
stderr_path "#{root}/log/unicorn.log" 
stdout_path "#{root}/log/unicorn.log" 

listen "/tmp/unicorn.my_app.sock" 
worker_processes 4 
timeout 30 

before_exec do |server|               
    ENV["BUNDLE_GEMFILE"] = "#{root}/Gemfile"        
end 

unicorn_init.sh

#!/bin/sh 
set -e 

# Feel free to change any of the following variables for your app: 
TIMEOUT=${TIMEOUT-60} 
APP_ROOT=/home/deployer/apps/my_app/current 
PID=$APP_ROOT/tmp/pids/unicorn.pid 
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production" 
AS_USER=deployer 
set -u 

OLD_PIN="$PID.oldbin" 

sig() { 
    test -s "$PID" && kill -$1 `cat $PID` 
} 

oldsig() { 
    test -s $OLD_PIN && kill -$1 `cat $OLD_PIN` 
} 

run() { 
    if [ "$(id -un)" = "$AS_USER" ]; then 
    eval $1 
    else 
    su -c "$1" - $AS_USER 
    fi 
} 

case "$1" in 
start) 
    sig 0 && echo >&2 "Already running" && exit 0 
    run "$CMD" 
    ;; 
stop) 
    sig QUIT && exit 0 
    echo >&2 "Not running" 
    ;; 
force-stop) 
    sig TERM && exit 0 
    echo >&2 "Not running" 
    ;; 
restart|reload) 
    sig HUP && echo reloaded OK && exit 0 
    echo >&2 "Couldn't reload, starting '$CMD' instead" 
    run "$CMD" 
    ;; 
upgrade) 
    if sig USR2 && sleep 2 && sig 0 && oldsig QUIT 
    then 
    n=$TIMEOUT 
    while test -s $OLD_PIN && test $n -ge 0 
    do 
     printf '.' && sleep 1 && n=$(($n - 1)) 
    done 
    echo 

    if test $n -lt 0 && test -s $OLD_PIN 
    then 
     echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds" 
     exit 1 
    fi 
    exit 0 
    fi 
    echo >&2 "Couldn't upgrade, starting '$CMD' instead" 
    run "$CMD" 
    ;; 
reopen-logs) 
    sig USR1 
    ;; 
*) 
    echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>" 
    exit 1 
    ;; 
esac 

Gemfile

source 'http://rubygems.org' 

gem 'rails', '3.2.0' 
gem "net-ssh", "~> 2.5.1" 

# Bundle edge Rails instead: 
# gem 'rails',  :git => 'git://github.com/rails/rails.git' 

gem 'pg' 
gem "cocoon" 
gem 'nokogiri' 
gem 'hpricot' 
gem "formtastic", "~> 2.1.1" 
gem "activeadmin", "~> 0.4.4" 
gem 'omniauth' 
gem 'country-select' 
gem "paperclip", "~> 3.0" 
gem 'cancan' 
gem 'rolify' 

gem "meta_search", '>= 1.1.0.pre' 
gem 'bourbon', "~> 2.0.0.rc1" 
gem "rails-boilerplate" 
gem 'geocoder' 
gem 'httparty' 
gem 'hashie' 
gem 'will_paginate', :git => "git://github.com/mislav/will_paginate.git" 
gem 'thinking-sphinx', '2.0.10' 
gem 'sanitize' 
gem 'feedzirra' 
gem "crypt19", "~> 1.2.1" 
gem 'wicked_pdf' 
gem 'forem', :git => "git://github.com/radar/forem.git" 
gem 'thin' 
gem 'whenever', :require => false 
gem "ckeditor", "3.7.1" 
gem 'sisow' 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'haml-rails' 
gem 'jquery-rails' 

group :development do 
    gem 'ruby_parser' 
end 


# To use ActiveModel has_secure_password 
# gem 'bcrypt-ruby', '~> 3.0.0' 

# Use unicorn as the web server 
gem 'unicorn' 

# Deploy with Capistrano 
gem 'capistrano' 

# To use debugger 
# gem 'ruby-debug19', :require => 'ruby-debug' 
+0

¿Qué dice la lista de gemas? Tal vez, solo tienes que ejecutar la instalación del paquete en tu servidor. – sailor

+0

La gema aparece en la lista de gemas –

Respuesta

1

que he tenido el mismo problema (aunque con diferente joya - icalendar). He intentado muchas cosas pero lo que me ayudó con el tiempo iba a volver a instalar el rubí (a través de rbenv), gemas de limpieza, eliminar la aplicación del servidor, añadir esto a mi unicorn.rb:

before_exec do |server| 
    ENV["BUNDLE_GEMFILE"] = "/path/to/app/current/Gemfile" 
end 

y, finalmente, hacer despliegue fresca desde el principio (deply: configuración).

No estoy 100% seguro de la solución (al final fue un desastre) pero espero que te ayude también.

Cuestiones relacionadas