2012-05-25 11 views
5

Ich stelle meine Anwendung auf einem Ubuntu VPS. Ich folgte dem Railscast "Deploy to VPS".Initializer oder Gem nicht mit Unicorn geladen verursacht 500 internen Server Fehler

Alles lief glatt, bis ich das folgende Juwel hinzugefügt: https://github.com/marceldegraaf/sisow

Auf meiner lokalen Entwicklung Maschine es funktioniert wie ein Charme, aber nachdem ich es auf meine Produktionsumgebung bereitgestellt wird die Rails-Anwendung nicht mehr starten (500 Interner Serverfehler).

Ich habe eine Reihe von "Tweaks" zu meiner Einhorn-Konfiguration, deploy.rb und eine Reihe anderer Dateien versucht, aber nichts scheint zu funktionieren.

Das Seltsame ist, dass, wenn ich benutze:

RAILS_ENV=production bundle exec rails c 

ich den Edelstein ohne Probleme verwenden können

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 

Einhorn (?). rb

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

Was sagt Gem Liste? Vielleicht müssen Sie nur die Bundle-Installation auf Ihrem Server ausführen. – sailor

+0

Das Juwel ist in der "Gem-Liste" –

Antwort

1

ich genau das gleiche Problem hatte (wenn auch mit unterschiedlichen gem - icalendar). Ich habe versucht, viele Dinge, aber was mir half, war schließlich Rubin neu zu installieren (über rbenv), Bereinigung Edelsteine, entfernen Sie die App-Server, fügen Sie diese auf meine unicorn.rb:

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

und schließlich frisch deploy von Anfang an machen (deply: Setup).

Ich bin mir nicht 100% sicher über die Lösung (es war am Ende ziemlich durcheinander), aber ich hoffe, es wird dir auch helfen.