Articoli marcati con tag ‘ruby’

Invocare un metodo senza conoscerne il nome…

Venerdì, 17 Ottobre 2008

Capita a volte di dover richiamare in modo dinamico un metodo senza però conoscerne il vero nome. E’ il caso di operazioni ripetitive che vanno a richiamare un metodo diverso in base ad esempio al modello sul quale si va ad intervenire.
Vediamo come fare in maniera semplice e veloce!

(more…)

Acts_as_ferret e will_paginate

Giovedì, 26 Giugno 2008

Utilizzo da un pò questi due preziosissimi plugin per la ricerca su grandi quantità di dati.

Ferret è il porting in ruby di Lucene e sostanzialmente è un motore di ricerca fulltext mentre will_paginate è un plugin per la paginazione (di prodotti nel caso di un negozio online per esempio).

Oggi volevo paginare i risultati di una ricerca fatta con ferret…ed ho avuto vari problemi.

In pratica mi funzionava solamente la prima pagina, mentre dalla seconda in poi non dava più risultati, dopo qualche minuto di analisi (grazie anche a firebug) mi sono accorot che la stringa che rappresentava la query di ricerca veniva “persa” nel passaggio alla pagina successiva.

Ho quindi escogitato questo stratagemma poco elegante ma per lo meno funzionante (ho molta fretta oggi :) )

if !params[:query].nil?
@query = params[:query].downcase
session[:query] = @query
else
@query = session[:query]
end

Questo codice non fa altro che salvare in sessione la stringa di ricerca se questa non è stata ritrasmessa.

Perdonatemi la “pressapochezza” di questo post ma sono veramente di super fretta oggi.

Se avete problemi contattatemi

Filippo

Sqlite GUI per Macosx (e non solo…)

Venerdì, 20 Giugno 2008

Da quando sono passato a Rails 2 ho iniziato ad utilizzare il fantastico sqlite3 in ambiente di sviluppo. E’ ottimale perché mi permette di sviluppare le mie applicazioni da computer differenti (e con altri sviluppatori grazie a SVN) senza la rottura di scatole di dover ogni volta passare il file sql, creare tabelle, creare database e server mysql da avviare. Sqlite3 è il db di default in Leopard e questo rende tutto più semplice.

Una cosa di cui sono fermamente convinto è che a volte è necessario “visualizzare” le cose per capirle fino in fondo. Vi è mai capitato di non comprendere cosa stesse succedendo al vostro database? Vorreste dare una sbirciatina rapida al contenuto delle tabelle? Fino a ieri avevo il mio amico CocoaMySql ad aiutarmi, ora invece con sqlite3 non sapevo come fare.

Ho fatto delle ricerche su google ma non ho trovato nessun programma interessante e/o free che mi aiutasse in questo scopo…alla fine il colpo di genio. E se esistesse una estensione per Firefox? Detto fatto :)

SQLite Manager extension for Firefox

Meravigliosa estensione, semplice e rapida e soprattutto sempre a portata di mano.

Beh, buon lavoro!

Filippo

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!