Wednesday April 29, 2009
TOTD #80: Sinatra CRUD application using Haml templates with JRuby and GlassFish Gem
TOTD
#79 showed how to run a trivial Sinatra
application using GlassFish
Gem. Sinatra
provides support for Haml,
Erb,
Builder,
Sass,
and Inline templates as described here.
This TOTD will show how to get started with creating a Sinatra CRUD
application using Haml templates.
![]() |
Haml is based on one primary principle - Markup should be beautiful
because beauty makes
you faster. Get started by installing the Haml gem as:
And follow the tutorial, documentation, and reference page for more details. |
| ~/tools/jruby/samples/sinatra-sample >mysql --user root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 664 Server version: 5.1.30 MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database hello_development; Query OK, 1 row affected (0.00 sec) mysql> use hello_development; Database changed mysql> CREATE TABLE `runners` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `distance` float, `minutes` int(11), `created_at` datetime, `updated_at` datetime); Query OK, 0 rows affected (0.06 sec) |
| require 'rubygems' require 'sinatra' require 'activerecord' ## Setup ActiveRecord::Base.establish_connection( :adapter => "jdbcmysql", :host => "localhost", :username => "root", :password => "", :database => "hello_development" ) ## Models class Runner < ActiveRecord::Base end ## Controller Actions get '/hi' do "Hello World!" end get '/' do @runner = Runner.find(:all) haml :index end get '/new' do haml :new end get '/:id' do @runner = Runner.find(params[:id]) if (@runner) haml :show else redirect '/' end end post '/' do @runner = Runner.new(:distance => params[:distance], :minutes => params[:minutes]) if @runner.save redirect "/#{@runner.id}" else redirect '/' end end |
| %h1 Listing all runners ... %table %tr %th Distance %th Minutes - @runner.each do |r| %tr %td= r.distance %td= r.minutes %br %a{:href=>"/new"} New Runner |
| %h1 Adding a new runner log ... %form{:method=>"post", :action=>"/"} Distance: %input{:type=>"text", :name=>"distance"} %br Minutes: %input{:type=>"text", :name=>"minutes"} %br %input{:type=>"submit", :value=>"Submit"} %br |
| %h1 Showing a runner log ... Distance: = @runner.distance %br Minutes: = @runner.minutes %br %br %a{:href=>"/"}= "Show All!" |
| . ./hello.rb ./views ./views/index.haml ./views/new.haml ./views/show.haml |
| ~/tools/jruby/samples/sinatra-sample >../../bin/jruby -S glassfish Starting GlassFish server at: 192.168.1.145:3000 in development environment... Writing log messages to: /Users/arungupta/tools/jruby-1.2.0/samples/sinatra-sample/log/development.log. Press Ctrl+C to stop. |





Posted by Arun Gupta in web2.0 | Comments[5]
|
|
|
|
|
Today's Page Hits: 2989
Total # blog entries: 1002
Hi,
thanks for blogging about Haml support in Netbeans. Still, may be you can report to Sun (Oracle! ouch) guys that on Netbeans daily builds (faster Ruby edition) the HAML plugin is a bit trikky to install. The Netbeans plugin won't install I believe, at least for me I had to copy it by hand in the Ntebeans local module repo + hack some XML files I think.
Aside from that I just switch to HAML and I totally recommend it. Views don't suck any more with HAML. So Netbeans support to HAML is very important.
Posted by Raphaël Valyi on April 29, 2009 at 03:45 AM PDT #
Thanks Raphael!
Your comment made me aware of HAML support in NetBeans. Anyway I've sent the feedback to the concerned folks. Have you tried filing a bug at:
http://www.netbeans.org/issues/enter_bug.cgi?component=ruby
Posted by Arun Gupta on April 29, 2009 at 04:08 PM PDT #
Posted by Arun Gupta's Blog on May 06, 2009 at 05:40 AM PDT #
Ruby and Running, a good combination!
Definately going to try this one out :-)
Posted by waveninja on May 18, 2009 at 07:26 AM PDT #
Posted by Arun Gupta's Blog on July 31, 2009 at 05:54 AM PDT #