maxer

Condividi contenuti
Rantoli di un SysAdmin
Aggiornato: 13 settimane 4 giorni fa

Generare le traduzioni per i modelli di ActiveRecord

Lun, 17/03/2014 - 09:30

Ruby on Rails è sicuramente un framework molto potente, ma lo sviluppatore italiano soffre spesso del problema della traduzione dei modelli, in quanto la nomenclatura usata è prevalentemente inglese ed è best practice usare l’inglese nei modelli e negli attributi. Da qui la necessità di tradurre i nomi dei modelli e i nomi degli attributi dei modelli.

Dopo aver speso una considerevole quantità di tempo a ricopiare a mano gli attributi dei modelli e inserire le traduzioni ho trovato questa gemma: i18n_generators che permette di generare il file usato per poi tradurre il nome dei modelli e degli attributi.

Una volta installata come gemma, il funzionamento è semplice:

$ rails g i18n_translation it

il comando (ci metterà un po’) analizzerà i nostri modelli e genererà il file con tutti gli attributi, pronto per accogliere le nostre traduzioni. Inoltre, se eseguito nuovamente in seguito, conserverà le chiavi esistenti aggiungendo quelle mancanti, semplificandoci di molto il lavoro.

 

Categorie: planet

Pulire l’html da tag non necessari con sanitize

Gio, 06/03/2014 - 13:56

Continuando quanto detto ieri, circa la chiusura di tag html lasciati aperti, oggi vi presento un’altra gemma molto interessante: sanitize.

L’obiettivo di questa gemma, basata su nokogiri, è di pulire l’html da tag non voluti o malevoli.

Una volta installata, potremo accedere al metodo “clean” della classe “Sanitize” nel seguente modo:

Sanitize.clean(html)

questo rimuoverà, come impostazione di default, tutti i tag html. Oltre al filtro di default, moooolto restrittivo, sono presenti anche i seguenti filtri:

Sanitize::Config::RESTRICTED che permette solo la formattazione del test

Sanitize::Config::BASIC che permette la formattazione del testo, le liste e i link

Sanitize::Config::RELAXED che permette quanto detto sopra con l’inclusione di immagini e tabelle

L’uso è semplice:

html = '<!DOCTYPE html><html><b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg"></html>' Sanitize.clean(html, Sanitize::Config::RELAXED) # => '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg">'
Categorie: planet

Forzare la chiusura dei tag html con nokogiri

Mer, 05/03/2014 - 13:36

Affrontando l’esportazione di un sito sviluppato alcuni anni fa in Ruby on Rails, mi sono accorto che chi ha inserito i contenuti ha lasciato dei tag html aperti. La cosa da non pochi problemi nel sistema di destinazione in quanto destabilizza la grafica (sapete anche voi quanto casino può generare un <div> non chiuso).

Per risolvere questo problema possiamo usare la gemma nokogiri, un parser html e xml.

La sintassi è semplice:

Nokogiri::HTML.parse('<div>').inner_html

Ci restituirà la struttura completa di una pagina html con il <div> correttamente chiuso:

"<html><body><div></div></body></html>"

Ovviamente noi non abbiamo bisogno di tutta la struttura della pagina, quindi possiamo sfruttare il metodo .children che restituisce il tag successivo a quello più esterno:

Nokogiri::HTML.parse('<div>').children.children.inner_html => "<div></div>"

In questo modo abbiamo il nostro codice html corretto.

Categorie: planet

Sclero da e-commerce

Gio, 30/01/2014 - 16:31

Oggi sono vicinissimo allo sclero… per colpa di un e-commerce realizzato con un prodotto (opencart) che, insieme ai vari prodotti ecommerce e anche qualche forum, mi hanno deluso profondamente.

Veniamo a noi: quando uno un cms/framework/prodotto ben fatto (drupal o wordpress) mi trovo davanti a moduli self-containet che, tramite hook o funzioni, interagiscono col cms/framework e fanno il loro dovere.

Con opencart (il colpevole in questo caso) questo non succede e i moduli più interessanti richiedono patch o l’utilizzo di vqmod, che in pratica va a modificare i sorgenti a runtime… l’idea di base potrebbe essere buona, se non fosse che ad ogni aggiornamento c’è da sperare che tutto combaci alla perfezione, che tutti i plugin siano compatibili con la nuova versione e che le modifiche che apportano ai sorgenti non vadano in conflitto tra di loro…

Così non è possibile lavorare, secondo me… ora inizio a studiare spree

Categorie: planet