2012-11-13 8 views
5

Ich versuche, meine erste App auf einem Server mit Capistrano zu implementieren, und ich bin ein bisschen verloren mit Verwaltung von Gemsets und Ruby-Version.Bundler/Capistrano installiert keine Edelsteine ​​mit korrekter Ruby-Version

Das sind meine (Server und Workstation) Versionen:

  • Rails 3.2.8
  • RVM 1.16.17
  • Gem 1.8.24
  • Bündler 1.2.1
  • pg gem 0.14.1

Meine Schmuckstücke sind:

Gemsets für Rubin-1.9.3-P194

  • (default)
  • global
  • = (in /usr/local/rvm/gems/ruby-1.9.3-p194 gefunden)> rail3dev20120606

stelle ich die Standard gemset mit:

rvm use [email protected] --default --passenger 

Als ich führen ein:

cap bundle:install 

Die Aufgabe Ende mit Erfolg, aber wenn ich ein:

gem list 

Es gibt viele fehlt gems obwohl sie in meinem Gemfile vorhanden sind. Wenn ich meine Edelsteine ​​in /var/www/Opf/shared/Bündel/Rubin überprüfen/ finde ich einen Ordner 1.9.1 und in /var/www/opf/shared/bundle/ruby/1.9 genannt .1/Edelsteine ​​/ Ich kann alle meine benötigten Edelsteine ​​anzünden (in Gemfile angegeben). Ich bin sicher, es gibt ein Problem mit der Ruby-Version, aber wie löse ich das?

Im Moment, wenn ich jeden Rake Befehl tun, bekam ich einen Rubin crash [Bug] Segmentation fault, da sie versuchen, die db und mit postgresql_adapter zuzugreifen:

/var/www/opf/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213: [BUG] Segmentation fault 

denke ich, so viele Edelsteine ​​sind da es dort fehlt, müssen einige Edelsteinabhängigkeiten nicht verifiziert sein, und vielleicht benutzt ein Edelstein eine inkompatible Rubinversion 1.9.1, obwohl es eine 1.9.3 erwartet.

Ich denke, das Problem besteht darin, Ruby-Versionen und Edelsteine ​​zu verwalten. Ich mache sicherlich einen Mix mit Gemset und meinem Capistrano Einsatz.

Ich vermisse Erfahrung und Informationen. Könnte jemand mir raten, wie man das auf dem Server behandelt? Was sind die besten Praktiken?

Wie soll ich meine Ruby-Version aktualisieren? mit Capistrano deploy.rb? manuell? mit/ohne rvm? Ich sah eine neue Version von Ruby 1.9.3-P327 hat gerade veröffentlicht.

Sollte ich Gemset verwenden oder nicht? Was ist mit dem: rvm_ruby_string in meiner deploy.rb. Ist es richtig geschrieben oder soll ich den p194 Teil entfernen? Soll ich den: rvm_ruby_string entfernen? Behalte es ? Verwenden Sie eine .rvmrc Datei ???

Ich bin wirklich verloren und eine Art Hilfe wäre willkommen.

Das ist meine config/deploy.rb in jedem Fall:

require 'bundler/capistrano' 
require File.join(File.dirname(__FILE__), 'deploy') + '/capistrano_database' 

set :rvm_type, :system 

set :rvm_ruby_string, '[email protected]' 
require 'rvm/capistrano' 

set :application, 'opf' 
set :deploy_to, '/var/www/opf' 
set :rails_env, 'production' 
set :user, 'the_user' 
set :use_sudo, false 

set :group_writable, false 
set :scm, :git 
set :repository, '[email protected]:user/opf.git' 
set :branch, 'master' 

default_run_options[:pty] = true 

set :deploy_via, :remote_cache 

server '192.168.5.200', :web, :app, :db, :primary => true 

# If you are using Passenger mod_rails uncomment this: 
namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

Vielen Dank für jede Hilfe

Antwort

4

die Edelsteine ​​installiert sind, aber sie sind mit einem Kontext der Bündler installiert:

bundle exec gem list 

Dies ist, weil Bundler seine Einstellungen in .bundle/config gespeichert und keine geteilten Edelsteine ​​installiert hat, sondern alle Edelsteine ​​in pro Projekt separaten Verzeichnis installiert sind Behandeln Sie es als In-Place-Edelstein.

+1

Danke für die Antwort. Irgendeine Idee, warum ich diesen Fehler dann bekam: /var/www/opf/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213: [BUG] Segmentierung Fehler. Und warum der Ordner heißt Ruby/1.9.1. Ist es Ruby 1.9.1, das anstelle von 1.9.3 verwendet wird? – Douglas

+0

1.9.1 ist ein Kompatibilitätsgrad aller 1.9.x Rubine, wie für die 'BUG' - es ist eine neue Frage – mpapis

+0

Es tut mir leid, aber ich verstehe Ihre erste Antwort nicht. Wie verwende ich meine Edelsteinsets? Ich möchte keine Edelsteine ​​in meinem App-Ordner speichern. Das macht nicht Sinn, denn Edelstein ist da, um Edelsteine ​​zu verwalten. – Douglas