Articoli marcati con tag ‘Ruby on Rails’

Convertire una stringa in un nome di classe

Sabato, 31 Maggio 2008

Vi sarà sicuramente capitato in una fase di programmazione avanzata di voler convertire una semplice stringa in un nome di classe. Facciamo un esempio pratico:
Tramite una normalissima form vogliamo passare il nome di un modello come parametro ad un metodo che si occupi poi di richiamare il metodo find appropriato? niente di più semplice in pieno stile ruby ;-)

#per comodità assegno alla variabile stringa il paramentro in arrivo
stringa = params[:model]
#converto la stringa in modello e richiamo la find
stringa.camelize.constantize.find(:all)

Camelize si occupa di rendere la stringa in formato corretto: “il mio modello” diventa “IlMioModello”
Constantize invece cerca una costante con il nome corrispondente alla stringa già “cammelizzata” (cioè maiuscole/minuscole).

Di seguito i link al mio server con la documentazione relativa:

Documentazione di camelize
Documentazione di constantize

E’ tutto!

Installare RMagick su Leopard

Sabato, 31 Maggio 2008

E’ da un pò che ci giravo intorno, non volevo utilizzare Macports ma alla fine mi sono convinto. Cominciamo.

Scenario:

  • iMac 24″ nuovo di pallino
  • Installazione fresca fresca di Leopard 10.5.3

Come ormai è ben noto Macosx 10.5.3 (Leopard) è l’unico sistema operativo che esce di default con Ruby e Rails installati e perfettamente funzionanti.

Con i comandi

ruby -v
rails -v

è possibile conoscere le rispettive versioni che mamma Apple ha installato per noi.

Il mio consiglio (ed anche Apple stessa lo dice) è quello di aggiornare subito sia il sistema Gem che le relative gemme installate (quindi anche Rails).

sudo gem update –system
sudo gem update

Una volta terminato l’aggiornamento passiamo all’argomento che da il titolo a questo articolo, cioè come installare RMagick su Leopard per poter poi utilizzare le funzioni di manipolazione immagini nelle nostre web application…

(more…)

Testing in Rails

Lunedì, 19 Maggio 2008

Ho scoperto da pochissimo la gemma autotest che fa esattamente quello che il nome suggerisce…lancia continuamente i test contenuti nella directory /test del vostro progetto.

Ogni volta che salvate e/o modificate un test functional, integration, o unit, autotest rilancia per voi il relativo task

rake test

Geniale no?

Per installare la gemma basta un

sudo gem install ZenTest

Dalla directory del vostro progetto vi basterà lanciare il comando

autotest

e il gioco è fatto. Per terminare autotest vi basta digitare due volte di seguito “ctrl + c

Ciao

Usare gli Shortcut Blocks di ruby…

Sabato, 17 Maggio 2008

Mettiamo il caso di avere la necessità di ottenere un array contentente i nomi di tutti gli utenti del nostro sito.
Il metodo che viene subito in mente allo sviluppatore ruby è ovviamente basato sul metodo speciale collect e quindi sull’uso dei blocchi. Niente di più conciso e veloce…

User.find(:all).collect {|u| u.name}

Oggi invece ho scoperto gli shortcut blocks…cioè delle vere e proprie scorciatoie che rendono le operazioni ancor più semplici:

User.find(:all).collect(&:name)

Naturalmente il risultato della riga di codice è esattamente lo stesso.
E’ naturalmente possibile giocare ulteriormente rendendo lo stesso array tutto in minuscolo:

User.find(:all).collect(&:name).collect(&:downcase)

Ciao!
Filippo

Welcome back Debugger!

Venerdì, 16 Maggio 2008

E’ proprio il caso di dirlo, bentornato debugger!!

Scovare problemi e analizzare le proprie applicazioni è ora più semplice con Rails 2.0 e ruby-debug

sudo gem install ruby-debug

e il debugger è installato. Poi per utilizzarlo vi basterà inserire la parolina magica “debugger” nel punto dell’applicazione che volete monitorare.

def nome
utente = User.find(:first)
debugger
render :text => “Ciao #{utente.nome} #{utente.cognome}”
end

ed avviare il server con l’opzione —debugger oppure -u

script/server -u

Quando il codice esegue il comando debugger sarà dunque possibile digitare ad esempio irb e quindi analizzare le istanze e le variabile direttamente da console.

Per una lista completa dei comandi è possibile digitare help e una volta scelto il comando è possibile ottenere ulteriore aiuto scrivendo help nomecomando… più semplice di così!!

Alla prossima!