Das GlassFish-Gem von Vivek Pandey ist in der Version 1.0.0 erschienen.

Neuerungen sind neben einigen BugFixes:
  1. die Implementierung mittels des neu erschienen Glassfish v3 Servers
  2. die Startzeit wurde um ca. 15% verbessert
  3. die Unterstützung von Rack (Ruby Webserver Interface) ist komplett
  4. es ist möglich, Glassfish mittels eines Codeblockes auszuführen
    GlassFish::Server.start(:address=>"127.0.0.1", :port=>4000) do
     use Rack::CommonLogger
     use Rack::ShowExceptions
     map "/hello" do
     use Rack::Lint
     run Proc.new {[200, {"Content-Type" => "text/html"}, "Hello"]}
     end
    end
    
  5. der Sinatra-Support wurde verbessert
  6. auf der Kommandozeile kann die IP Adresse mitgegeben werden
  7. die Konfiguration von Grizzly (NIO based HTTP Lib) kann mittels der glassfish.yml festgelegt werden
  8. man findet es nun auch bei GemCutter
Was ist eigentlich das GlassFish-Gem?

Das Gem kurz erklärt

Das GlassFish-Gem ist eine Deployment Strategy mit der man Ruby on Rails Anwendungen mittels JRuby direkt von der Kommandozeile starten kann. Analog zu Mongrel oder Webrick kann man seine Rails-Anwendung nur mit Hilfe eines Gems starten. Die Installation eines kompletten Java Application Servers kann entfallen.

Installation und erstes Starten

  1. Das Gem mittels gem install glassfish installieren.
  2. In das Rails-Anwendungsverzeichnis wechseln und mittels glassfish den GlassFish-Server starten. GlassFish startet mit den default Einstellungen.
  3. Unter 127.0.0.1:3000 ist der Server erreichbar.

Konfiguration

Beim Starten kann man dem GlassFish-Server einige Paramter mitgeben. Mittels glassfish -h bekommt man eine Übersicht der Möglichkeiten angezeigt.
glassfish [OPTION] APPLICATION_PATH
 -h, --help:             show help
 -c, --contextroot PATH: change the context root (default: '/')
 -p, --port PORT:        change server port (default: 3000)
 -a, --address HOST:     bind to HOST address (default: 0.0.0.0)
 -e, --environment ENV:  change rails environment (default: development)
 -n --runtimes NUMBER:   Number of JRuby runtimes to create initially
 --runtimes-min NUMBER:  Minimum JRuby runtimes to create
 --runtimes-max NUMBER:  Maximum number of JRuby runtimes to create
 -d, --daemon:           Run GlassFish as daemon. Currently works with
 Linux and Solaris OS.
 -P, --pid FILE:         PID file where PID will be written. Applicable
 when used with -d option. The default pid file
 is tmp/pids/glassfish-<PID>.pid
 -l, --log FILE:         Log file, where the server log messages will go.
 By default the server logs go to
 log/development.log file. To see the logs on
 console run with -l option without any argument.
 --log-level LEVEL:      Log level 0 to 7. 0:OFF, 1:SEVERE, 2:WARNING,
 3:INFO (default), 4:FINE, 5:FINER, 6:FINEST,
 7:ALL.
 --config FILE:          Configuration file location. Use glassfish.yml
 as template. Generate it using 'gfrake config'
 command.
 APPLICATION_PATH (optional): Path to the application to be run (default:
 current).
 For further configuration, run GlassFish rake command 'gfrake -T'
Man kann nun entweder die Parameter auf der Kommandozeile angeben (glassfish -p <port> -e production -c <context> -d) oder mittels des Rake-Tasks gfrake config eine glassfish.yml-Datei im /config-Verzeichnis der Rails-Anwendung erzeugen. Die dann in der glassfish.yml angegeben Einstellungen werden bei Ausführung von glassfish ausgelesen und genutzt.

Deployment mittels Capistrano

Jacob Kessler stellt in seinem Blog ein Capistrano-Rezept vor, mit dem das Deployment von Rails-Anwendungen auf den GlassFish zum Kinderspiel wird.
set :context_root, "/"
set :jruby_location, "/home/objectfab/jruby/"
set :gf_port, "3000"
set :environment, "production"
set :jruby_runtimes, "1"
set :jruby_min_runtimes, "1"
set :jruby_max_runtimes, "2"
namespace :gem do
 desc "Start Glassfish Gem from a shutdown state"
 task :cold do
 start
 end
 desc "Stop a server running Glassfish Gem"
 task :stop do
 run "kill -INT $(cat #{current_path}/capistrano-#{application})"
 end
 desc "Starts a server running Glassfish Gem"GlassFish Gem 1.0.0 is available
GlassFish Gem 1.0.0 Release Notes
RubyForge GlassFish Gem
GemCutter GlassFish Gem
GlassFish Wiki JRuby
JRuby on Rails With GlassFish Gem