 |
First JRuby on Rails App in GlassFish V3
Posted by arungupta on August 13, 2007 at 09:28 AM | Comments (6)
In a
previous screencast, I showed how a Rails application can be deployed as WAR
file on GlassFish V2. In
GlassFish V3, the Grizzly connector
by-passes the need to bundle a Rails application as WAR. Instead it directly
invokes JRuby interpreter and deploys a Rails application without any
modification.
This blog entry describes the exact steps to deploy your first JRuby
application in
GlassFish V3 Technology Preview builds.
- Download, Install and Configure JRuby
- If you already have downloaded JRuby1.0,
then skip this step. Otherwise download and install JRuby1.0 in
a directory, say '
c:\jruby-bin-1.0' (lets say JRUBY_HOME).
- Add "
JRUBY_HOME/bin" in your environment PATH.
- If you have already configured Rails in your JRuby installation, then
skip this step. Otherwise install Rails by giving the command:
jruby -S gem install rails -y --no-rdoc
"-S" switch
instructs JRuby to run the command in it's "bin" directory. The output of the command looks like:
C:\glassfish\lib\jruby>gem install rails -y --no-rdoc
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.2.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
Installing ri documentation for activesupport-1.4.2...
Installing ri documentation for activerecord-1.15.3...
Installing ri documentation for actionpack-1.13.3...
While generating documentation for actionpack-1.13.3
... MESSAGE: java.lang.ArrayIndexOutOfBoundsException: null
... RDOC args: --ri --op C://glassfish/lib/jruby/lib/ruby/gems/1.8/doc/actionpack-1.13.3/ri --quiet lib
(continuing with the rest of the installation)
Installing ri documentation for actionmailer-1.3.3...
Installing ri documentation for actionwebservice-1.2.3...
- Download, Install and Configure GlassFish V3
- Download
GlassFish V3 Technology Preview 1, Build 2.
- Install by giving the command:
java -jar glassfish-installer-v3-preview1-b2.jar This will create a new directory by the name "glassfish" in your
current directory.
- Add "
GLASSFISH_HOME/bin" in your environment PATH.
- Edit "
config/asenv.bat" and add "set JRUBY_HOME=C:\jruby-bin-1.0"
as the last line. Make sure to change the directory location to match your
JRUBY_HOME.
- Create a Rails application
- Create a standard Rails application by giving the command:
jruby -S rails hello This creates a new directory
"hello" in your current directory.
The output of the command looks like:
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/breakpointer
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
- Add a controller to the application by changing to the directory "hello" and
giving the command:
jruby script/generate controller say hello The output of the command looks like:
exists app/controllers/
exists app/helpers/
create app/views/say
exists test/functional/
create app/controllers/say_controller.rb
create test/functional/say_controller_test.rb
create app/helpers/say_helper.rb
create app/views/say/hello.rhtml
- In
hello\app\views\say directory, edit "hello.rhtml" such that it looks like:
<h1>Say#hello</h1>
<p>Find me in app/views/say/hello.rhtml</p>
<%= @hello_string %>
- In
hello\app\controllers directory, edit "say_controller.rb"
such that it looks like:
class SayController < ApplicationController
def hello
@hello_string = "Hello from Controller!"
end
end
Run the application in GlassFish V3
- In GLASSFISH_HOME, start V3 container by giving the command:
java -jar lib\glassfish-10.0-SNAPSHOT.jar The output of the command looks like:
[#|2007-08-10T15:00:52.551-0700|INFO|GlassFish10.0|javax.enterprise.system.core|_ThreadID=10;_ThreadName=Thread-2;|Listening on port 8080|#]
[#|2007-08-10T15:00:52.736-0700|INFO|GlassFish10.0|javax.enterprise.system.core|_ThreadID=10;_ThreadName=Thread-2;|Supported containers : phobos,web,jruby,php|#]
[#|2007-08-10T15:00:52.753-0700|INFO|GlassFish10.0|javax.enterprise.system.core|_ThreadID=10;_ThreadName=Thread-2;|Glassfish v3 started in 802 ms|#]
- In the parent directory of "hello", deploy the application by giving the
following command:
asadmin deploy --path hello The output of the command looks like:
C:\workarea\samples\gfv3>java -jar C:\testbed\v3-p1-v2\glassfish\bin\\..\lib\admin-cli-10.0-SNAPSHOT.jar
deploy --path hello SUCCESS : Application hello deployed successfully The GlassFish console shows the following entry:
[#|2007-08-10T15:01:53.833-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=11;_ThreadName=httpWorkerThread-8080-0;|New Servicing page from: C:\workarea\samples\gfv3\hello\public|#]
C:/testbed/v3-p1-v2/glassfish/lib/jruby/lib/ruby/gems/1.8/gems/actionmailer-1.3.3/lib/action_mailer.rb:49 warning: already initialized constant MAX_LINE_LEN
[#|2007-08-10T15:02:15.740-0700|INFO|GlassFish10.0|javax.enterprise.system.tools.deployment|_ThreadID=11;_ThreadName=httpWorkerThread-8080-0;|hello jruby application loaded in 22083 ms|#]
The application can now be accessed at
"http://localhost:8080/hello/say/hello". The GlassFish console shows the
following entry:
/hello/say/hello
[#|2007-08-10T15:03:22.222-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=12;_ThreadName=httpWorkerThread-8080-1;|
Processing SayController#hello (for 127.0.0.1 at 2007-08-10 15:03:22) [GET]
|#]
[#|2007-08-10T15:03:22.225-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=12;_ThreadName=httpWorkerThread-8080-1;| Session ID: a78627d02071347f6fb5f0268fa47f18
|#]
[#|2007-08-10T15:03:22.227-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=12;_ThreadName=httpWorkerThread-8080-1;| Parameters: {"action"=>"hello", "controller"=>"say"}
|#]
[#|2007-08-10T15:03:22.253-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=12;_ThreadName=httpWorkerThread-8080-1;|Rendering say/hello
|#]
[#|2007-08-10T15:03:22.295-0700|INFO|GlassFish10.0|GRIZZLY|_ThreadID=12;_ThreadName=httpWorkerThread-8080-1;|Completed in 0.06500 (15 reqs/sec) | Rendering: 0.0 6300 (96%) | 200 OK [http://localhost/hello/say/hello]
|#] The main point to notice here is that the Rails application request is
served directly by the Grizzly connector.
This concludes all the steps required to run a simple JRuby on Rails
application on GlassFish. If you want to run the same application using the WEBrick
container, then follow the additional steps given below:
- In the directory "hello", start WEBrick by giving the command:
jruby script/server
The output of the command looks like:
=> Booting WEBrick... => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2007-08-10 14:14:26] INFO WEBrick 1.3.1 [2007-08-10 14:14:26] INFO ruby 1.8.5 (2007-06-07) [java] [2007-08-10 14:14:26] INFO WEBrick::HTTPServer#start: pid=6336176 port=3000
- Open "
http://localhost:3000/say/hello" in a browser window and it shows the
message:
Hello from Controller!
The WEBrick console shows the following output:
127.0.0.1 - - [10/Aug/2007:14:15:25 PDT] "GET /say/hello HTTP/1.1" 200 89 - -> /say/hello 127.0.0.1 - - [10/Aug/2007:14:15:27 PDT] "GET /favicon.ico HTTP/1.1" 200 0 - -> /favicon.ico
In the process, I found
Ruby on Rails Cheatsheet
very handy for a quick summary of commands.
The NetBeans IDE provides a comprehensive
support for Ruby code
completion,
refactoring,
debugging, Rails
support,
support
for RHTML files,
code templates,
unit test execution,
shortcuts, and
much more.
Technorati: jruby
ruby
glassfish
grizzly
jrubyonglassfish
netbeans
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
See this report on success: http://angryruby.blogspot.com/2007/09/jrubyrails-on-glassfish-actually-works.html
Posted by: pelegri on September 01, 2007 at 02:19 PM
-
On Debian 4.0, (JRuby 1.0.1 and jdk1.6.0_02) here the slight differences:
1. I set the environment variables in .bashrc
JAVA_HOME=~/jdk6
JRUBY_HOME=~/java/jruby
GLASSFISH_HOME=~/java/glassfish
PATH=$PATH:$JAVA_HOME/bin/:$JRUBY_HOME/bin:$GLASSFISH_HOME/bin
2. Install rails (added --no-ri)
# jruby -S gem install rails -y --no-ri --no-rdoc
3. Modify glassfish/config/asenv.conf instead of asenv.bat
JRUBY_HOME="/root/java/jruby"
4.Make asadmin exectuable (chmod u+x/700)
Posted by: matthewdfranz on September 01, 2007 at 03:25 PM
-
Thanks a lot Mathew!
Posted by: arungupta on September 01, 2007 at 03:40 PM
-
Hi, this page is extremely helpful.
However under #3: Create a Rails application, you said:
Create a standard Rails application by giving the command:
jruby \glassfish\lib\jruby\bin\rails hello
I believe you meant to say:
jruby -S rails hello
At least, there's no "rails" in my \glassfish\lib\jruby\bin directory.
Am I missing something?
Posted by: sangudo on November 08, 2007 at 12:02 PM
-
Fixed the typo, thanks for the catch!
I changed the instructions after following the previous comment but forgot to filter down the effect. Now fixed.
Posted by: arungupta on November 08, 2007 at 02:45 PM
-
I'm so grateful for all that you've done. Thanks again for that nice essay and I would be most grateful if you would send me the latter ones....
mirc
mırc
mirç
mırç
mirc indir
chat yap
islami sohbet
dini sohbet
kelebek
kelebek sohbet
kelebek mirc
kameralı mirc
kameralı sohbet
chat yap
çet
çet odaları
sohbet kanalları
sohbet odaları
yarışma
sevgili
arkadaş
arkadaş ara
arkadaşlık
Posted by: jklmno on June 19, 2008 at 09:03 AM
|