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.