Raumopol Webhosting Logo

Informationsportal: News, Fragen & Antworten und Hilfe

Hilfe zu Ruby-Versionen, Ruby Gems und Ruby on Rails

Verschiedene Versionen Ruby benutzen

Für größte Flexibilität stehen bei uns viele verschiedene Versionen von Ruby zur Auswahl. Im Moment kann man auswählen zwischen 1.8 und 1.9.1 und 1.9.3.
 
Um nun für Skripte festzulegen, welche Version benutzt werden soll, reicht folgender Eintrag am Anfang der Script-Datei (bei CGI des auszuführenden Scripts, bei FCGI dem FCGI-Starter, siehe unten):

Ruby 1.9.3
#!/usr/bin/ruby1.9.3
 
Ruby 1.9.1
#!/usr/bin/ruby1.9.1
 
Ruby 1.8
#!/usr/bin/ruby1.8
 

Zur Benutzung von Ruby on Rails und Ruby Gems

Ruby on Rails kann bei uns via FCGI benutzt werden.

Gems sind nicht systemweit sondern pro Benutzer oder sogar Projekt installierbar. (z.B. mit bundle) Ähnlich wie die Auswahl der im Projekt verwendeten Version gilt bei Gems analog gem1.8, gem1.9.1 und gem1.9.3 auf der Kommandozeile. Am besten ist es, wenn Sie dazu den SSH-Zugang verwenden. Wichtig ist, den Zusatz --user-install zu verwenden, damit die Gems im lokalen Verzeichnis installiert werden.

Folgender Eintrag in die .bashrc hilft, wenn die ausführbaren Dateien nicht gefunden werden:

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

Für bundle benötigt man den Pfadzusatz --path ~/.gem.

Die folgende dispatch.fcgi kann verwendet werden (muss im Ordner public liegen)

#!/usr/bin/ruby

ENV['RAILS_ENV'] ||= 'production'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.gems')
ENV['GEM_PATH'] = File.expand_path('~/.gems')

require 'rubygems'
Gem.clear_paths
require 'fcgi'

require File.join(File.dirname(__FILE__), '../config/environment.rb')

class Rack::PathInfoRewriter
 def initialize(app)
   @app = app
 end

 def call(env)
   env.delete('SCRIPT_NAME')
   parts = env['REQUEST_URI'].split('?')
   env['PATH_INFO'] = parts[0]
   env['QUERY_STRING'] = parts[1].to_s
   @app.call(env)
 end
end

Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(X::Application)  
# REPLACE X WITH YOUR APPLICATION'S NAME (found in config/application.rb)

Ebenfalls im Ordner public muss die .htaccess liegen:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L] 
 
ErrorDocument 500 "Rails application failed to start properly"

Gegebenenfalls muss hier noch die RewriteBase angepasst werden.


Raumopol Technologie