JRuby 1.1.3 released - Getting Started with GlassFish
JRuby 1.1.3 was released last week - download here. The highlights are:
- 82 issues resolved since JRUby 1.1.2
- RubyGem 1.2 (phew, finally Gem installation is much faster again :)
- Bunch of Compatibility and Performance problems
Here are few simple steps to get you started:
- Download and unzip the distribution.
- Install Rails and GlassFish
gem:
~/testbed/jruby-1.1.3 >./bin/jruby -S gem install rails glassfish --no-ri --no-rdoc
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Successfully installed activesupport-2.1.0
Successfully installed activerecord-2.1.0
Successfully installed actionpack-2.1.0
Successfully installed actionmailer-2.1.0
Successfully installed activeresource-2.1.0
Successfully installed rails-2.1.0
Successfully installed glassfish-0.3.1-universal-java
7 gems installed - Create a new Rails app as:
~/testbed/jruby-1.1.3/samples/rails >../../bin/jruby -S rails helloworld -d mysql
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
. . .
create log/server.log
create log/production.log
create log/development.log
create log/test.log - Run Rails application on GlassFish gem as:
~/testbed/jruby-1.1.3/samples/rails >../../bin/jruby -S glassfish_rails helloworld
Jul 21, 2008 8:32:03 AM com.sun.enterprise.glassfish.bootstrap.ASMain main
INFO: Launching GlassFish on HK2 platform
Jul 21, 2008 8:32:03 AM com.sun.enterprise.glassfish.bootstrap.ASMainHK2 findDerbyClient
INFO: Cannot find javadb client jar file, jdbc driver not available
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 3000
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.services.impl.GrizzlyEmbeddedHttpConfigurator configureSSL
WARNING: pewebcontainer.all_ssl_protocols_disabled
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.services.impl.GrizzlyEmbeddedHttpConfigurator configureSSL
WARNING: pewebcontainer.all_ssl_ciphers_disabled
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 3131
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 3838
Jul 21, 2008 8:32:04 AM com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter setContextRoot
INFO: Admin Console Adapter: context root: /admin
Jul 21, 2008 8:32:05 AM com.sun.grizzly.jruby.RailsAdapter startRubyRuntimePool
INFO: Starting Rails instances
Jul 21, 2008 8:32:09 AM
SEVERE: JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Jul 21, 2008 8:32:10 AM com.sun.grizzly.jruby.RubyObjectPool$1 run
INFO: JRuby and Rails instance instantiation took : 5623ms
Jul 21, 2008 8:32:10 AM org.glassfish.scripting.rails.RailsDeployer load
INFO: Loading application helloworld at /
Jul 21, 2008 8:32:10 AM com.sun.enterprise.v3.server.AppServerStartup run
INFO: Glassfish v3 started in 7046 ms - Create a scaffold as:
- Start MySQL database, create and migrate the database:
~/testbed/jruby-1.1.3/samples/rails/helloworld >../../../bin/jruby -S rake db:create
(in /Users/arungupta/testbed/jruby-1.1.3/samples/rails/helloworld)
~/testbed/jruby-1.1.3/samples/rails/helloworld >../../../bin/jruby -S rake db:migrate
(in /Users/arungupta/testbed/jruby-1.1.3/samples/rails/helloworld)
== 20080721154435 CreateRunners: migrating ====================================
-- create_table(:runners)
-> 0.0097s
== 20080721154435 CreateRunners: migrated (0.0104s) ===========================
Now "http://localhost:3000/runners" page is shown as:

After adding couple of entries, the page looks like:

Now, let's try to run the same application on GlassFish v3 stand-alone build.
TOTD #33 explains how to build GlassFish v3 workspace. Alternatively nightly or promoted builds can be downloaded as well. - Start the v3 server as:
~/testbed/glassfish/v3/snapshot/glassfish >java -DJRUBY_HOME=/Users/arungupta/testbed/jruby-1.1.3 -jar modules/glassfish-10.0-SNAPSHOT.jar
Jul 21, 2008 9:40:41 AM com.sun.enterprise.glassfish.bootstrap.ASMain main
INFO: Launching GlassFish on Apache Felix OSGi platform
Jul 21, 2008 9:40:41 AM com.sun.enterprise.glassfish.bootstrap.ASMainOSGi getSharedRepos
INFO: /Users/arungupta/testbed/glassfish/v3/snapshot/glassfish/domains/domain1/lib does not exist
Welcome to Felix.
=================
. . .
INFO: Started bundle org.glassfish.common.container-common [91]
Jul 21, 2008 9:47:13 AM com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter setContextRoot
INFO: Admin Console Adapter: context root: /admin
Jul 21, 2008 9:47:13 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.deployment.deployment-common [71]
Jul 21, 2008 9:47:13 AM com.sun.enterprise.v3.server.AppServerStartup run
INFO: Glassfish v3 started in 1507 ms - Deploy the application as:
~/testbed/jruby-1.1.3/samples/rails >~/testbed/glassfish/v3/snapshot/glassfish/bin/asadmin deploy helloworld
Command deploy executed successfully.
and the GlassFish console shows the following output:
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.web.war-util [65]
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.persistence.jpa-connector [25]
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.scripting.gf-jruby-connector [13]
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.core.security [22]
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.web.gf-web-connector [86]
Jul 21, 2008 9:47:49 AM OSGiModuleImpl loadClass
INFO: Started bundle org.glassfish.connectors.gf-connectors-connector [53]
Jul 21, 2008 9:47:49 AM com.sun.grizzly.jruby.RailsAdapter startRubyRuntimePool
INFO: Starting Rails instances
Jul 21, 2008 9:48:01 AM
SEVERE: JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Jul 21, 2008 9:48:02 AM com.sun.grizzly.jruby.RubyObjectPool$1 run
INFO: JRuby and Rails instance instantiation took : 12852ms
Jul 21, 2008 9:48:02 AM org.glassfish.scripting.rails.RailsDeployer load
INFO: Loading application helloworld at /helloworld
Jul 21, 2008 9:48:02 AM com.sun.enterprise.v3.deployment.DeployCommand execute
INFO: Deployment of helloworld done is 13326 ms
| ~/testbed/jruby-1.1.3/samples/rails/helloworld
>../../../bin/jruby
script/generate scaffold runner distance:float minutes:integer JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/runners exists app/views/layouts/ exists test/functional/ exists test/unit/ exists public/stylesheets/ create app/views/runners/index.html.erb create app/views/runners/show.html.erb create app/views/runners/new.html.erb create app/views/runners/edit.html.erb create app/views/layouts/runners.html.erb create public/stylesheets/scaffold.css create app/controllers/runners_controller.rb create test/functional/runners_controller_test.rb create app/helpers/runners_helper.rb route map.resources :runners dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/runner.rb create test/unit/runner_test.rb create test/fixtures/runners.yml create db/migrate create db/migrate/20080721153737_create_runners.rb |
The deployed application at "http://localhost:8080/helloworld/runners" looks like:

Rails powered by the GlassFish Application Server explain in detail about the several benefits of using GlassFish for Rails development and deployment. Rails/GlassFish Deployment Stories gives a good idea of how to structure your own application.
Are you using GlassFish for development or deployment of Rails ? Drop a comment on this blog.
- arungupta's blog
- Login or register to post comments
- 601 reads
- Flag as offensive
- Email this Blog entry
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






