Blogbonzo: Matteo Magni

Consulente Informatico, Web Developer & System Administrator

Primo programma con Ruby on Rails

leave a comment

Un po’ per i problemi con mod_ruby, un po’ per la curiosità troppo forte ho iniziato a provare Rails, il potente framework per la programmazione web.

L’installazione l’ho fatta tramite Ruby Gems e l’unico problema che mi ha dato ( su Debian e non su Mandriva) è stato il fatto che lo script rails per creare una nuova applicazione non era nella cartella giusta, e quindi il comando all’inizio non funzionava.
Ecco il comando per installare Ruby via Gems:
gem install rails --include-dependencies

Le applicazioni Rails saranno in /var/rails/.

Ecco passo per passo il primo programma fatto in Rails, una classica applicazione in stile Hello World.

Creiamo l’applicazione Rails:

nathan:/var/rails# rails hello_bonzo
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

Il comando rails crea la struttura dell’applicazione hello_bonzo creando una serie di cartelle e file.

Creiamo un controller vuoto:
nathan:/var/rails# cd hello_bonzo/
nathan:/var/rails/hello_bonzo# script/generate controller Hello_bonzo
exists app/controllers/
exists app/helpers/
create app/views/hello_bonzo
exists test/functional/
create app/controllers/hello_bonzo_controller.rb
create test/functional/hello_bonzo_controller_test.rb
create app/helpers/hello_bonzo_helper.rb

Abbiamo creato un controller vuoto, il file:
var/rails/hello_bonzo/apps/controller/hello_bonzo_controller.rb
che contiene questo codice:

class HelloBonzoController < ApplicationController
end

Proviamo a vedere l'applicazione lanciando il server integrato.
Ecco il risultato:

nathan:/var/rails/hello_bonzo# script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Ruby version is not up-to-date; loading cgi_multipart_eof_fix
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.

Per me parte Mongrel perché l'ho installato (gem install mongrel), se no di default partirebbe webrick, il server integrato.
Vado alla pagina con porta 3000:
http://0.0.0.0:3000/hello_bonzo

Mi dice:

Unknown action
No action responded to index

non c'è metodo all'azione index

Creo il metodo index rendendo così il controller:

class HelloBonzoController < ApplicationController
def index
end
end

Richiamo la pagina:

Template is missing
Missing template script/../config/../app/views/hello_bonzo/index.rhtml

Manca la view.
Creo il file:
/var/rails/app/views/hello_bonzo/index.rhtml

Nel file scrivo:


Hello Bonzo

oggi è: <%= @time %>

<%= link_to "Goodbye", :action => "goodbye" %>




(ilcodice html viene interpretato dal browser, quindi sul post non riuscite a vederlo, dovete vedere il sorgente della pagina)
Per usare time inserisco nel metodo index del controller la riga:
@time = Time.now
se ricarico la pagina ho:

Hello Bonzo

oggi è: Sun Sep 02 23:43:01 +0200 2007

Goodbye

Trasformo così il controller aggiungendo il metodo goodbye:

class HelloBonzoController < ApplicationController
def index
@time = Time.now
end
def goodbye
end
end

Nella cartella /app/views/hello_bonzo
Metto il file goodbye.rhtml:



Goodbye Bonzo

Grazie di essere passato da noi

<%= link_to "Hello Bonzo", :action => "index" %>


Alla fine avrò una semplice applicazione in cui ho due pagine collegate tra loro da un link.
Per ora non è molto, ma intanto comincio a prendere confidenza con Ruby, Rails e MVC.

Gabba Gabba Hey
Bonzo

Written by Bonzo

settembre 2nd, 2007 at 11:58 pm

Posted in Ruby

Leave a Reply