Getting Started with JRuby

JRuby is something we’re very excited about as it bridges the gap between the Java and Ruby worlds, bringing a wide range of new advantages to developers.

You can take advantage of the mature JDBC, utilize Java Application Servers such as Glassfish for deployment with simple WAR’s rather than Capistrano, or use existing JavaBeans and business logic written in Java to plug into a much better framework.

We’re pleased to be the first infrastructure company to stand firmly behind JRuby, offering it as part of our standard Accelerator packages.

Getting started is easy. In our Accelerators you will JRuby 1.0.0RC2 in /opt/jruby. JRuby comes complete with the jruby interpreter which is used just like ruby, including friends gem, jirb, and more. Let’s take a look at how to get started:

[z010101CA:~] admin$ export PATH=/opt/jruby/bin:$PATH
[z010101CA:~] admin$ jirb
irb(main):001:0> string = 'JRuby Rules!'
=> "JRuby Rules\!"
irb(main):002:0> print string
JRuby Rules!=> nil
irb(main):003:0> string.upcase
=> "JRUBY RULES\!"
irb(main):004:0> quit

It’s really that simple.

Want to do some JRuby on Rails work?

[z010101CA:~] admin$ which gem
gem is /opt/jruby/bin/gem
[z010101CA:~] admin$ gem list --local
*** LOCAL GEMS ***
sources (0.0.1)
    This package provides download sources for remote gem installation
[z010101CA:~] admin$ sudo gem install rails -y
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.2.3
Successfully installed rake-0.7.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
...
[z010101CA:~] admin$ sudo chmod +r /opt/jruby/bin/*
Password:
[z010101CA:~] admin$ which rails
rails is hashed (/opt/jruby/bin/rails)
[z010101CA:~] admin$ rails webstore
      create
      create  app/controllers
      create  app/helpers
     ........
[z010101CA:~] admin$ cd webstore/
[z010101CA:~/webstore] admin$ jruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2007-05-27 07:00:52] INFO  WEBrick 1.3.1
[2007-05-27 07:00:52] INFO  ruby 1.8.5 (2007-05-16) [java]
[2007-05-27 07:00:52] INFO  WEBrick::HTTPServer#start: pid=33409388 port=3000
24.6.105.152 - - [27/May/2007:07:01:20 GMT] "GET / HTTP/1.1" 200 7552
- -> /
24.6.105.152 - - [27/May/2007:07:01:20 GMT] "GET /javascripts/prototype.js HTTP/1.1" 200 71260
http://8.12.34.20:3000/ -> /javascripts/prototype.js
24.6.105.152 - - [27/May/2007:07:01:20 GMT] "GET /javascripts/effects.js HTTP/1.1" 200 38200
http://8.12.34.20:3000/ -> /javascripts/effects.js
24.6.105.152 - - [27/May/2007:07:01:21 GMT] "GET /images/rails.png HTTP/1.1" 200 1787
http://8.12.34.20:3000/ -> /images/rails.png
24.6.105.152 - - [27/May/2007:07:01:21 GMT] "GET /favicon.ico HTTP/1.1" 200 0
- -> /favicon.ico
...

There you go. No tricks, no gimmicks. Just start playing.

For those who don’t have a Joyent Accelerator, download JRuby here: JRuby.org.

6 Comments

  1. Posted June 8, 2007 at 12:44 am | Permalink

    ok so I did this but when I do require ‘java’ in a controller I get: no such file to load — java.

    what else am I missing here?? (I’m on an AC200 M)

  2. Posted June 8, 2007 at 12:48 am | Permalink

    Never mind … move along nothing to see here. I missed the jruby script/server. Everything is working fine and dandy

  3. Tim
    Posted June 8, 2007 at 3:07 am | Permalink

    I assume someone would use this to (hopefully) help speedup the performance of Ruby.

    How does someone load balances JRuby? Does mongrel still apply? I would think not, though I’m not sure.

  4. Posted June 8, 2007 at 4:46 pm | Permalink

    @Tim: I haven’t looked closely at it, but from what Ben said about war file deployment on glassfish, I assume you could rely on a java appserver to do the load balancing for you. I’ve used JBoss in the past, and it was very rich in that department.

    @Joyent: In a similar vein to JRuby is a language called Groovy. It’s a very impressive project, and a really great environment to code in. Is there any likelihood of it appearing on TxD’s servers? Have you looked at Groovy at all?

  5. Posted June 9, 2007 at 2:40 am | Permalink

    @Tim

    You load-balance it like “normal”, it’s on a port on a private IP and you direct traffic that way.

    No mongrel doesn’t apply, you could use the jruby/java port of it, but you’d use a java app server like glassfish instead.

  6. Shawn
    Posted June 12, 2007 at 9:58 pm | Permalink

    Please of please Joyent post more to the blog.

    I feel starved when there isn’t anything to read for days on end :)


Post a Comment

You must be logged in to post a comment.
Follow

Get every new post delivered to your Inbox.

Join 49 other followers