 |
Announcing GlassFish Gem for Rails
Posted by arungupta on September 14, 2007 at 06:12 AM | Comments (4)
Jerome has been
working on GlassFish gem for
Rails. Read the interesting discussion on
dev@glassfish. This blog announces a technology preview of this gem and
describes the steps to try it out.
-
Download GlassFish Gem from
here.
-
If you already have JRuby on Rails configured, then skip this step.
Otherwise you need to install JRuby on Rails.
- Download and Unzip JRuby 1.0.1 from
here (lets
say JRUBY_HOME).
-
In JRUBY_HOME\bin directory, install Rails plugin using the following command:
jruby -S gem install rails -y --no-rdoc
--no-ri
The output of the command looks like:
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
-
Some platform specific changes listed below are required due to bugs in JRuby
1.0.1.
-
Only on Windows
- Edit "
JRUBY_HOME\bin\_jrubyvars.bat"
and replace
for /r "%JRUBY_HOME%\lib" %%i in (*.jar) do @call "%~dp0_jrubysetcp"
%%i
with
for %%i in ("%JRUBY_HOME%\lib"\*.jar) do @call "%~dp0_jrubysetcp" %%i
This change is required because "/r" switch causes the entire tree of the
directory to be parsed instead of just including the JARs in JRUBY_HOME/lib
directory. More details
here.
This is filed as bug
#1347.
- The value of CLASSPATH environment variable increases exponentially with
each execution of the gem. Then you start seeing the following error in your
command shell:
The input line is too long.
:gotCP
was unexpected at this time.
This is a filed as bug
#1350. A workaround is to start a new shell when you start seeing the
error.
-
Only on Macintosh: "JRUBY_HOME\bin\glassfish_rails"
script executable permissions need to be set explicitly. This is filed as
bug #1348.
-
Install the GlassFish gem using the command:
c:\Downloads>\jruby-1.0.1\bin\gem install
glassfish-gem-10.0-SNAPSHOT.gem
The output of the command looks like:
Successfully installed GlassFish, version 10.0.0
Notice, you need to invoke this command from the directory where the gem was
downloaded.
-
Create a new rails app using the following command:
%JRUBY_HOME%\bin\jruby -S rails hello
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
-
Start GlassFish for this newly created app using the
following command:
%JRUBY_HOME%\bin\jruby -S glassfish_rails
hello
You need to invoke the command from outside the application
directory instead of the natural way (script\server start).
This will be fixed in the future builds. The output of the command looks
like:
Sep 13, 2007 1:32:42 PM com.sun.enterprise.v3.services.impl.GrizzlyAdapter
postConstruct
INFO: Listening on port 8080
Sep 13, 2007 1:32:42 PM
com.sun.enterprise.v3.services.impl.DeploymentService postConstruct
INFO: Supported containers : jruby,web,php,phobos
Sep 13, 2007 1:32:43 PM com.sun.grizzly.standalone.StaticResourcesAdapter
<init>
INFO: New Servicing page from: C:\workarea\samples\rails\hello\public
C:/jruby-1.0.1/lib/ruby/gems/1.8/gems/actionmailer-1.3.3/lib/action_mail
er.rb:49 warning: already initialized constant MAX_LINE_LEN
Sep 13, 2007 1:32:51 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: Glassfish v3 started in 8996 ms
-
Now you can view the default GlassFish web page at "http://localhost:8080".
This verifies the basic installation of the GlassFish gem. Lets
add a simple controller to our application.
-
Add a controller to the application by changing to the directory
"hello" and giving the command:
jruby script\generate controller say helloThe 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
- The page is now accessible at "
http://localhost:8080/hello/say/hello".
This is hosted using GlassFish. Of course, the same application can be
deployed on WEBrick by giving the command:
jruby script\server webrick start
Try your applications on GlasFish gem and let us know by leaving a comment on
this blog or sending an email to
users@glassfish or posting to
GlassFish forum.
You can also download GlassFish V3 standalone builds from
here.
The instructions to deploy a Rails application on GlassFish V3 are available
here
and on V2
here.
Technorati:
jruby
ruby
rubyonrails
glassfish
jrubyonglassfish
rubygem
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Hi Arun,
I am basically a Rails guy who has never touched Java, but have good experience with apache, mongrel etc
I am trying it with a existing rails application which uses rails 1.1.6
glassfish server starts and available at port 8080
I see a default glassfish home page, not my rails application, I have tried to access with known routes
all I get back is 404
Glassfish v3 Error : NotFound : /account/signup
and in console window
INFO: No adapter registered for : /account/signup
Oct 3, 2007 4:21:11 PM com.sun.enterprise.v3.services.impl.GrizzlyAdapter service
not sure if I am missing some instructions
For Your Information
jruby script/server
webrick fails with
`require': Could not find RubyGem jruby-openssl (>= 0.0.0) (Gem::LoadError)
regards
Senthil
http://blog.railsfactory.com
Posted by: senthilnayagam on October 03, 2007 at 04:48 AM
-
Thanks for trying out Java!
The general format of the URL is http://:///. It seems your URL does not contain the .
I tried with Rails 1.2.3, could that be an issue with "jruby-openssl" gem ? Can you try with Rails 1.2.3 ? In the meanwhile, if you can send me the instructions on how to install Rails 1.1.6 then I'll try it in your environment.
Posted by: arungupta on October 03, 2007 at 06:39 AM
-
I'm just getting started with Jruby/Rails and the Glassfish Gem and I ran into concurrent connection problems.
Here's the code I have in my controller:
def slow
x = Time.now + 20
while Time.now < x; end
render_text 'that was slow!'
end
def hello
render_text 'hello world!'
end
I start Glassfish, then I go to 'slow' in the browser. I quickly hop to another tab and go to 'hello'. When 'slow' is running, 'hello' returns 200 but without any content rendered. The headers of 'hello' don't mention Grizzly either (unlike 'slow').
Not sure if this is related to the gem or Glassfish itself. Any idea what might be going on here? Is there a way for me to set the number of concurrent connections I want?
thanks!
Posted by: cmercier on November 22, 2007 at 02:13 PM
-
cmercier, The issue reported above is now partially resolved. See http://blogs.sun.com/arungupta/entry/glassfish_v3_gem_updated for more details.
Posted by: arungupta on January 05, 2008 at 06:26 AM
|