2013-03-23 3 views
7

Ich habe einen Server, der überwiegend Ruby 1.8.7 läuft, aber jetzt habe ich eine Rails 3.2 App, die 1.9.3 benötigt. Ich habe Passenger 4 installiert, da es die Möglichkeit unterstützt, mehrere Rubine auf einer virtuellen Serverbasis auszuführen.Passagier 4 mit PassengerRuby und verschiedenen Edelstein-Set

Es scheint jedoch so, dass Sie zwar einen bestimmten Ruby zuweisen können, die Anwendung jedoch keinen Zugriff auf den Ruby-Satz hat. So habe ich meine virtuelle Server mit der 1.9.3 Ruby-konfiguriert, wie auf der Fehlerseite bestätigt meine Bewerbung jetzt gibt:

Ruby interpreter command 
/home/aaron/.rvm/rubies/ruby-1.9.3-p0/bin/ruby 

Aber der GEM_HOME Parameter erzählt eine andere Geschichte:

GEM_HOME = /home/aaron/.rvm/gems/ruby-1.8.7-p352 

Blick durch In den Konfigurationsrichtlinien für Passenger 4 sehe ich keine Möglichkeit, einen anderen Edelstein festzulegen. Fehle ich etwas oder ist dieses Ding einfach nicht zur Primetime bereit?

+0

Verwenden Sie den Einsatz mit Capistrano? Standardmäßig werden Edelsteine ​​lokal installiert, wodurch der in GEM_HOME angegebene Pfad vollständig umgangen wird. Wenn es sich nicht um eine vollständige Lösung handelt, könnte dies eine praktikable Lösung sein. – depa

+0

Ich habe meine Anwendung eingerichtet, um über Capistrano zu arbeiten, aber das hat nicht funktioniert. Stellt sich heraus, Installation von Passenger 4 mit Ruby 1.8.7 ist das Problem. Wenn ich Passenger 4 unter 1.9.3 betreibe, funktioniert es gut. Aber es ist ein No-Go. :-( –

Antwort

21

Von Ihrem gemset dir laufen:

$ passenger-config --ruby-command 

Es wird Sie für Apache und Nginx rubin Weg erzählen.

Command: /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 
    Version: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 
    To use in Apache: PassengerRuby /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 
    To use in Nginx : passenger_ruby /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 

Nginx: Für Passagier 4 können Sie mehrere Ruby-Versionen angeben. Also für spezifische Serverkonfiguration:

your_site.conf:

server { 
    listen 80; 
    root /home/aaron/web/public; 
    passenger_enabled on; 
    passenger_ruby /home/aaron/.rvm/wrappers/[email protected]_gemset/ruby; 
} 

nginx.conf: (funktioniert für neue Personen 4.0.17)

http { 

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; 

} 

Führen Sie einfach von Ihrem gemset dir dies:

$ passenger-status 

Es wird geprüft, ob passenger_native_support.so verfügbar ist. Je nach Ihrer RVM Installation, müssen Sie es mit rvmsudo

$ rvmsudo passenger-status 

Für Debian/Ubuntu gibt es jetzt binary packages of nginx and passenger available die die Installation macht laufen viel einfacher.

6

Als Tombart wies darauf hin: Wenn Sie die precompiled Passenger modules (in meinem Fall für für Apache2) verwenden Sie am Ende mit einem System und läuft.

Wenn jedoch RVM mit stolperte ich über die Tatsache, dass Sie das "Wrapper-Verzeichnis" verwenden müssen, die richtige RVM Rubin Version und GEMET wie so in Ihrer Apache vhost config wählen:

PassengerRuby /home/of_your_ruby_user/.rvm/wrappers/[email protected]/ruby 

Auf diese Weise kann der Passagier den richtigen Edelsteinsatz in Bezug auf dieses Verzeichnis finden (../../gems/[email protected]/gems). Sonst würde Passenger den "Standard Ruby Gemset" verwenden, der ungerade ist, wenn Sie mehrere Apps mit derselben Ruby-Version ausführen möchten. Ich kann nur vermuten, dass dies für Nginx ähnlich ist.

Verwandte Themen