Logger in ruby on rails

Posted by Dibi Store Sun, 30 Sep 2007 19:35:00 GMT

In ruby on rails, è possibile configurare dei logger, che ci possono aiutare in molte situazioni. Un esempio chiarirà meglio il concetto:

def save
  ..
  user.save  
  rescue ActiveRecord::RecordInvalid
  logger.warn "L'utente ha fatto qualcosa che non sarebbe dovuta succedere"
end

Impostare i logger è veramente semplice, ed il risultato si potrà vedere nel log dell'applicazione, per esempio in /log/development.log, oppure direttamente nella finestra del server. Di seguito elenco i possibili stati che si possono assegnare al logger, dal meno grave, al piu grave:

  • debug
  • info
  • warn
  • error
  • fatal

Posted in  | Tags  | no comments

Usare rails in versione EdgeRails

Posted by Dibi Store Sun, 30 Sep 2007 16:38:00 GMT

Come ogni framework, anche rails dispone di una versione di sviluppo, che viene comunemente chiamata EdgeRails.

Questa versione è destinata agli utenti che vogliono provare le nuove features del framework e giovare dei (auguro sempre non numerosi) bug fixes.
Come viene descritto nel link sopra, il metodo più semplice per usare EdgeRails, è quello di digitare da console, ipotizzando di essere nella root dell'applicazione:

rake rails:freeze:edge
Read more...

Posted in  | Tags  | no comments

Filtrare i dati di log nelle applicazioni Ruby on Rails

Posted by Dibi Store Sat, 29 Sep 2007 11:22:00 GMT

Quando creiamo meccanismi di autenticazione è buona norma salvare le password in hash, per limitare le possibilità che qualcuno possa decifrarle.

Limitarsi a questa precauzione però, non è sufficente. Infatti i parametri inviati in una richiesta, vengono comunque salvati nei file di log dell'applicazione, per fare una prova vi basterà effettuare qualche prova osservando i log del server, in questo caso mongrel.
Supponiamo di aver inviato una richiesta di login:

Processing SessionController#create (for 127.0.0.1 at 2007-09-29 13:17:46) [POST
]
  Session ID: acfffc404b5073973612806ef118bbda
  Parameters: {"commit"=>"invia", "action"=>"create", "controller"=>"session", "
login"=>"Oscar", "password"=>"secret"}

Read more...

Posted in  | Tags  | no comments

Template RJS, differenza tra replace e replace_html

Posted by Dibi Store Fri, 28 Sep 2007 08:59:00 GMT

Inizio oggi una nuova serie di articoli che si baseranno sui template RJS.
Questi particolari template, vengono usati spesso in ruby on rails, e quando vengono richiamati, restituiscono automaticamente un content-type uguale a text/javascript. Sono quindi l'ideale nelle nostre pagine dinamiche che usano Ajax.

Il vantaggio di questi template, è che possiamo aggiornare più elementi nella stessa pagina con un unica chiamata, di seguito illustro un esempio, per capire meglio il concetto. Notate che non serve specificare l'azione nel controller, in quanto rails è ebbastanza intelligente da capire di richiamare il file.

Read more...

Posted in  | Tags  | no comments

Manipolare le date in php con mktime() e date()

Posted by Dibi Store Wed, 26 Sep 2007 07:26:00 GMT

Talvolta abbiamo bisogno di effettuare delle operazioni sulle date con php, ad esempio vogliamo aggiungere o togliere un giorno ad una determinata data, aggiungere una settimana alla data attuale, eccetera.

Per fare questo tipo di operazioni, useremo le due funzioni date() e mktime() di php. La prima permette di creare una data nel formato scelto (si veda la documentazione di date()), mentre la seconda ci permette di creare il suo timestamp, ovvero il numero di secondi dal primo gennaio 1970.

Read more...

Posted in  | Tags ,  | no comments

Creare un array dinamico con ruby

Posted by Dibi Store Mon, 24 Sep 2007 20:48:00 GMT

Oggi ho avuto un problema nel generare un array nel seguente formato:

[1, 'uno'],[2, 'due']

Il problema è banale e chiunque abbia un minimo di esperienza con gli array non avra problemi, io però non ci sono arrivato subito, e ho trovato aiuto nel canale #rub-lang nella rete azzurra-irc.
In pratica, supponendo che stiate lavorando in rails, ma anche in puro codice ruby è uguale, potete scrivere:

@array = Model.find(:all).collect { |s| "[#{s.id}, '#{s.name}']"}.join(',')

E il risultato è garantito! Prendeteci pure spunto per problemi simili nel generare array.

Posted in  | Tags ,  | no comments

Aggiornare un elemento della pagina con i template RJS

Posted by Dibi Store Sun, 23 Sep 2007 12:46:00 GMT

Ajax indubbiamente migliora l'interfaccia e la user experience. In questo articolo vedremo come, grazie ai template RJS è possibile aggiornare un menu a drop-down, dopo aver inserito in modo dinamico un elemento nella lista.

L'esempio tipico lo si può trovare quando stiamo scrivendo un articolo nel nostro blog, e arrivati alla fine, scopriamo che la categoria in qui vorremmo inserirlo non è presente, e vorremmo quindi creala in maniera dinamica.

Read more...

Posted in  | Tags  | 1 comment

Un comodo plugin per creare in automatico Permalink con Rails

Posted by Dibi Store Sun, 23 Sep 2007 12:33:00 GMT

Oggi stavo cercando un modo semplice per costruire i miei permalink. Mi sono imbattuto in questo plugin molto semplice e utile.

Non servono spiegazioni dato che è semplicissimo da usare... Che dire: perchè scrivere codice quando è gia pronto?

Posted in  | Tags ,  | no comments

23 Cose da fare sempre quando si aggiunge una nuova feature

Posted by Dibi Store Sun, 23 Sep 2007 09:08:00 GMT

Se siamo in procinto di applicare una nuova feature ad un nostro prodotto, è buona norma considerare alcuni aspetti fondamentali.

Per capire appieno le potenzialità di questo articolo, è bene dare un occhiata ai capitoli introduttivi di Getting Real, il libro della web company 37Signals

In particolare prenderò in esame il capitolo 5, chiamato appunto 'hidden costs', che spiega in modo chiaro quali siano i passi da seguire quando si vuole implementare un nuovo aspetto nella nostra applicazione.

Read more...

Posted in  | no comments

Personalizzare i messaggi di errore in ruby on rails

Posted by Dibi Store Sat, 22 Sep 2007 13:36:00 GMT

Ruby on rails è un framework eccezzionale. Tra i tanti vantaggi ci permette di gestire gli errori degli utenti nei form in un modo eccezzionale. L'unica pecca è che il framework è scritto in lingua inglese, e tutti i messaggi di errore sono ovviamente scritti in lingua anglosassone.

Ovviamente il rimedio esiste, ed è veramente semplice, vi basterà infatti aggiungere questo codice nel vostro modello:

validates_presence_of :name, :message => "Non può essere vuoto"
Read more...

Posted in  | Tags  | no comments

Older posts: 1 2