GlassFish gem is a lightweight and robust deployment solution for Ruby on Rails applications deployed on JRuby runtime. It is based on GlassFish v3 application server.
GlassFish v3 is a Java based application server that allows deployment, administration and monitoring of JavaEE as well as dynamic languages based web frameworks such as Ruby On Rails, Grails etc.
GlassFish gem is based on GlassFish v3 nucleus. GlassFish v3 nucleus is the core module of GlassFish v3.
For more information on GlassFish v3 application server see GlassFish project page.
JDK 6 is required.
- Rails
- Merb
- Sinatra
-
Install the gem:
gem install glassfish
-
Run glassfish in the top directory of your Rails or Merb application:
a.
jruby -S glassfish
b. For applications that use Bundler:
jruby -S bundle exec glassfish
GlassFish gem's glassfish
command autodetects the application you trying to
run on it. Internally it uses Grizzly handler to plug into Rack interface of
the application frameworks such as Rails, Merb or Sinatra.
$ glassfish
That's all you need to run your application.
$ glassfish -h
To run your rackup script
$ rackup -s Glassfish
or $ glassfish
glassfish: GlassFish v3 server for Rack based frameworks such as: Rails,
Merb, Sinatra...
Usage:
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, or equivalent name as string.
Default is 3 (or INFO).
0 (OFF), 1 (SEVERE), 2 (WARNING), 3 (INFO),
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'
$ jruby -S gfrake -T
rake clean # Clean GlassFish generated temporary files (tmp/.glassfish)
rake config # Generate a configuration file to customize GlassFish gem
rake version # Display version of GlassFish gem
-
Note: Although help screen shows
rake
command, you need to usegfrake
instead. -
gfrake config
will placeglassfish.yml
in the application's config directory.glassfish.yml
contains default options. Use it as template. You can also use--config
option with theglassfish
command
Rails, Merb and Sinatra applications are detected automatically and configured appropriately.
You can provide a rack-up script *.ru
in to the application directory to plug in any other framework.
Some key points:
-
Rails version < 2.2 is single threaded, for improved scaling you can
configure the JRuby runtime pool using--runtimes
,--runtimes-min
or--runtimes-max
options. -
Multi-thread-safe execution (as introduced in Rails 2.2 or for Merb) is detected and runtime pooling is disabled. You would still need to tell Rails to enable multi-threading by commenting out the following line from
config/environments/production.rb
.#config.threadsafe!
Or you can simply call
config.threadsafe!
form any Rails initialization script.
- Running
glassfish
in a directory that is neither a Rails or Merb application does not report a meaningful error. See this issue.
This fork is available on Github.
GlassFish v3 gem is provided with CDDL 1.0 and GPL 2.0 dual license.