Archive for the ‘ruby’ Category

Alcune librerie interessanti in Ruby

Thursday, December 11th, 2008

Ultimamente ho trovato molto utili o interessanti queste librerie:

Ruby Graph Library
Implementa una struttura dati a grafo, sulla quale e’ possibile applicare tutti gli algoritmi piu’ comuni sui grafi. Ogni istanza nodo possiede i metodi per aggiungere archi e collegare altri nodi, per gestire vertici, e ciclare sul grafo (anche l’iteratore non e’ ottimizzato)

Skynet
Skynet implementa MapReduce di Google. MapReduce e’ un modello di programmazione e di elaborazione di dataset enormi. Ecco come Google vi da istantaneamente i risultati della vostra ricerca su un database che rappresenta gran parte di internet. Grazie a questa libreria e’ possibile eseguire processi paralleli su piu macchine. Non solo, estendendo ActiveRecord permette facilmente di utilizzare MapReduce nella vostra applicazione Rails.

RubyProf
RubyProf e’ un profilatore delle applicazioni scritte in Ruby, evidenzia i colli di bottiglia e permette di analizzare, attraverso i grafici prodotti, le prestazioni di un determinato segmento di codice.

Bye
Piero

Ruby: Getting current method name

Wednesday, October 22nd, 2008

In ruby 1.9 è possibile utilizzare la variabile __method__ per ottenere il nome del metodo attualmente chiamato. In ruby 1.8 non esiste un modo diretto per accedere al nome del metodo ma è possibile accedere alla variabile caller che, tra le altre informazioni, contiene il nome del metodo chiamante (tips trovato su internet). Ecco come creare un metodo funzionante su entrambe le versioni:

def method_name
if RUBY_VERSION.to_f < 1.9
caller[0]=~/`(.*?)’/
$1
else
__method__
end
end

Se chiamerò da un metodo foo() method_name otterò sempre ‘foo’

Installazione gem mysql su MacOS X

Wednesday, August 6th, 2008

Quando attivi Mongrel su una macchina MacOS X (Intel) puoi avere questo messaggio:

“WARNING: You’re using the Ruby-based MySQL library that ships with 
Rails. This library is not suited for production. Please install the 
C-based MySQL library instead (gem install mysql).”

L’installazione corretta della gemma mysql è la seguente:

sudo env ARCHFLAGS=”-arch i386″ gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config -with-mysql-dir=/usr/local/mysql

acts_as_nested_set e order by

Tuesday, June 17th, 2008

In una mia applicazione stò utilizzando un nested set salvato su una tabella grazie al plugin ‘better nested set’.

Non capisco perchè l’ordinamento dei nodi figli, che ho correttamente specificato dev’essere calcolato su un campo, non viene preso in considerazione.

Nel mio modello ho:

class NestedSurveyElement < ActiveRecord::Base

acts_as_nested_set :o rder => ‘orderby ASC’, :dependent => :delete_all, :scope => :survey_id

#……..

end

Per ovviare temporanemente al problema, riordino l’array restituito dal metodo children() di acts_as_nested_set in questo modo:

children = root_element.children.sort_by{|c| c.order_field}

Purtroppo in questo modo aggiungo tempo di calcolo non necessario (anche se un ordinamento nel mio caso è piuttosto trascurabile ) al mio processo… ma per ora funziona…

Ruby e Del.Icio.Us per Spotlight

Sunday, May 25th, 2008

Forse avrò scoperto l’acqua calda amici rubysti e maclover, ma questo importer/plugin per spotlight è veramente comodo.

Per chi fosse uno utente windows Spotlight è una utility straordinaria di MacOs che permette di cercare in pochissimi istanti un file, esso sia sul disco o sulla rete, basandosi non solo sul nome del file ma anche sul suo contenuto. L’indicizziazione avviene per una gran moltitudine di formati, dai semplici file di testo, alle mail, ai pdf, ai file OpenOffice/Office/iWork, ecc… (ovviamente questa cosa è stata mal copiata in windows vista)

Questo plugin permette di:

“Extracts metadata including modules, classes, methods, text and comments from Ruby scripts. Use Spotlight to search for every source file that references a particular class, or search for a comment you know you added to a particularly interesting method whose name you can’t remember.” (apple)

Clicca qui per la pagina di download sul sito di apple

Se invece siete utenti dell’utilissimo del.icio.us esiste anche l’importer per la famosa piattaforma di shared bookmarking: Delimport

Ciao Piero

Una shell Ruby

Wednesday, May 21st, 2008

Per chi non seguisse la Mailing List nazionale di Ruby, un utente questa mattina ha segnalato l’esistenza di rush, una shell unix con sintassi Ruby.

Dedicata ai ruby-maniacs e ispirata alla M$ PowerShell di .NET utilizza il paradigma object oriented come punto di forza nella sintassi.

L’ho subito provata, mi è sembrata un po’ scomoda (ad esempio non si ha il concetto di CWD, che viene rimpiazzato da una istanza di un oggetto directory che possiede i metodi classici tipo ‘ls’).

Questa shell potrebbe essere molto comoda da integrare nella console Rails o in Capistrano…

La potete installare come gemma seguendo le istruzioni su

http://rush.heroku.com/

e leggere una migliore recensione su infoQ

http://www.infoq.com/news/2008/02/rush-oop-shell

Ottenere la revisione SVN nella vostra applicazione Rails

Monday, February 25th, 2008

Se volete stampare il numero di revisione della vostra applicazione Rails su una pagina potete fare come segue:

  1. Aprite il file config/environment.rb
  2. Aggiungete questa linea
    “MY_APP_REVISION = %x[(cd "#{RAILS_ROOT}" && svn info | grep Revision | cut -c 11-)].strip”
  3. Salvate e aprite la view dove volete visualizzare il numero di revisione
  4. aggiungete la linea “<%= MY_APP_REVISION %>”

Il comando funziona come segue:

  • %x[] è simile alla funzione system() di ruby e permette di eseguire un comando in una shell e catturarne l’output
  • tutti i comandi sono rinchiusi all’interno di due parentesi tonde in modo da aprire una nuova shell esclusivamente per questo comando
  • prima mi posiziono della directory principale di rails, se ho successo, lancio il comando ’svn info’ che mi ritorna tutte le informazioni sul mio repository svn
  • redirigo l’output a grep che mi filtra le linee contenenti la parola ‘Revision’ (in questo caso una sola), otterrò così la stringa ‘Revision: 580′
  • redirigo di nuovo l’output (‘Revision: 580′) al comando cut che taglia una stringa. I parametri passati a cut sono ‘-c 11-’ ovvero taglia dal carattere 11 fino al termine della linea
  • L’output ottenuto da %x[] sarà una stringa terminata da ‘\n’, per eliminare il carattere di fine linea utilizzo il metodo standard della classe string strip().

Naturalmente questo tip funziona solo su sistemi unix-like

Ciao Piero

10 Things Every Java Programmer Should Know About Ruby

Wednesday, December 12th, 2007

Sul sito Ruby-doc sono riportate le slides di Jim Weirich alla Open Source Conference del 2005 riguardo a ruby.

Sono molto interessanti e utili, la lettura non porta via più di 10 minuti…

Il link è questo

Il blog di Weirich è questo