rails

Libro su Rails 2.1 in italiano, gratis e in anteprima

I ringraziamenti vanno a Carlos per la versione originale e alla comunità Ruby Italia per la traduzione.
La versione italiana è praticamente tradotta, ma è ancora da revisionare. Se volete partecipare ai lavori fate riferimento al wiki e al progetto su Github.

In modo analogo è partito dal forum un'iniziativa per creare della documentazione in italiano su git.

Notifiche dalla tastiera

Chi avrà visto qualche screencast su Mac OSX avrà notato che esiste un modo per visualizzare i tasti premuti sullo schermo.
L'utilità non è fondamentale, ma è utile per chi vuole imparare qualcosa di più.


(ctrl + s, per salvare)

Queste notifiche dovrebbero essere gestite tramite Growl e anche su Linux abbiamo le nostre alternative (notify e mumbles), il problema maggiore rimane: come prendere tutti i tasti premuti dall'utente?

~$ cat /dev/input/event1

Putroppo (e per fortuna, vedi keylogger) per accedere a questo device bisogna essere root, ma è possibile fare qualcosa di analogo anche su Linux.

Infrastrutture per il web e Rails

Sono disponibili le slide e il codice d'esempio della lezione autogestita tenuta all'università.

Per chi è interessato ad approfondire l'argomento consiglio anche le slide su JRuby e DSL e il video su html.it

Installare Rails 2.1 Git su Ubuntu Hardy

Rails 2.1 non è ancora stato rilasciato, ma è già possibile provarlo e farsi un'idea sulle novità che ci saranno.

Installazione di RubyGems

Sul wiki ufficiale di Ubuntu c'è già una guida che riguarda Rails, viene utilizzato Passenger (mod_rails) con Apache, questa soluzione sembra essere molto valida, ma è ancora sperimentale.
Se volete un'alternativa più indicata per lo sviluppo locale, provate questa.

Il sistema di pacchettizzazione rubygems è disponibile in Hardy, ma la versione su rubyforge è più aggiornata.
Solitamente viene utilizzato al posto di APT perché gem è il formato ufficiale multipiattaforma di installazione di Rails, tutti i programmi installati con questo sistema si troveranno in /usr/lib/ruby/gems/1.8/

wget http://rubyforge.org/frs/download.php/34638/rubygems-1.1.0.tgz
tar -xvzf rubygems-1.1.0.tgz
cd rubygems-1.1.0/

Se non volete che rubygems generi la documentazione eseguite

echo "gem: --no-rdoc --no-ri" > $HOME/.gemrc

sudo ruby setup.rb
sudo ln -sf /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system
# Installazione dell'ultimo rails disponibile pacchettizzato in gem
sudo gem install rails
sudo apt-get install libsqlite3-ruby lighttpd

A questo punto potete utilizzare il comando per generare un nuovo progetto

rails myapp

Rails 2.1 on edge

Nel caso voleste utilizzare l'ultima versione (2.1 o quasi) potete usare il comando: rake rails:freeze:edge, ma vi scaricherà ogni volta un file rails_edge.zip.
Visto il recente passaggio di Rails a Git, possiamo tenerci aggiornati utilizzando direttamente quest'ultimo (consigliato per piattaforma Linux e Mac).

cd myapp/vendor
sudo apt-get install git-core --yes

Rails, prodotto o servizio?

Se non volete installare niente, ma volete comunque provare a programmare in ruby on rails, da oggi è possibile farlo tramite un servizio che ve lo fa fare via web. Quindi non richiede nessuna installazione o configurazione sul vostro pc


Si tratta di una specie di Web IDE, integrato con lo spazio web, che dà la possibilità di fare tutto online.

Non so, forse a me sfugge l'utilità e non vedo effettivi vantaggi, comunque qualcuno l'ha fatto e se le persone lo utilizzeranno avrà successo, di fatto un altro prodotto che vorrebbe diventare un servizio.
Se volete vedere solo come funziona, senza registravi guardatevi il video.

Come generare la documentazione offline per Rails

Sul wiki di Ubuntu si trovano alcune "vie" per installare Ruby on Rails, ma dopo averlo installato vi renderete conto che non basta qualche articolo o screencast per saperlo usare.

La documentazione ufficiale è fatta abbastanza bene ed disponibile online, ma per svariate ragioni potrebbe essere utile averla offline o comunque all'ultima versione possibile.

Quindi:

rails progetto-di-prova
cd progetto-di-prova

Se avete installato rails con rubygems usate:

rake rails:freeze:gems

Altrimenti o se volete l'ultima versione disponibile in svn

rake rails:freeze:edge

Adesso potete usare il comando

rake doc:rails

Dopo un po' di tempo trovere in doc/api tutta la documentazione che cercate. Vi conviene spostarla altrove e pulire il progetto.

rake rails:unfreeze

Railfrog il CMS in Ruby on Rails che assomiglia lontanamente a Drupal

Railfrog è un CMS minimale fatto in Ruby on Rails. L'idea di partenza era quella di ricreare un cms minimale (tipo l'ottimo Drupal), fatto in ruby.

Installazione

sudo gem install mime-types
sudo gem install rspec

svn co https://svn.versiondude.net/railfrog/cms/railfrog/trunk/ref_app railfrog-svn-refapp

gedit config/database.yml

Sostituite a mysql, sqlite3, che è molto più veloce da gestire.

rake db:migrate
script/server webrick

http://localhost:3000/users/login

Allo stato attuale c'é stata qualche release, ma siamo ancora lontani dalle aspettative; più che altro ci sono delle faccende strutturali(Rails) tutt'altro che risolte:

  • Railfrog distribuisce i plugin come Engines (che sono stati deprecati)
  • I plugin richiedono il riavvio del server
  • Non si vede all'orizzonte nessun tipo di localizzazione ufficiale

Le funzionalità attuali sono abbastanza basilari: si può costruire una pagina tipo sito.com/pippo/mimmi/puppi e il nodo può essere un mime type html, markdown o del file uploadato.
C'é Xinua come editor WYSIWYG e si possono guardare i test fatti con RSPEC.
La versione ref_app da SVN sarà la prima a supportare un sistema plugin (deprecato), il core si sta scomponendo in plugin e se tutto va bene, ci si potrà aspettare una reale diffusione.

Considerazioni su Rails e Drupal

Premessa

Volete fare un sito web, avete provato qualcosa a manina, ma poi vi rendete conto che esistono framework e cms che rendono la vita molto più facile e vi permettono di concentrarvi solo su quello che vi interessa senza reinventare la ruota.

Senza tirare in ballo tutte le possibili alternative alla moda, vorrei provare a soffermarmi su 2 progetti che mi interessano e provare a confrontarli. Si tratta del framework Ruby on Rails e del content management system Drupal.
Potrebbe sembrare una comparazione tra zucchine e carote, ma secondo me, ci sono degli elementi interessanti che potrebbero migliorare entrambi i progetti.

Breve descrizione

Ruby on Rails: framework "magico" ed espressivo, basato sul linguaggio Ruby, che astrae SQL, ha la libreria javascript Scriptacolous incorporata, è strutturato secondo il pattern Model View Controller (MVC) ed è estensibile tramite plugin

Drupal: cms modulare, maturo, documentato, che si può estendere facilmente tramite i moduli che rendono subito disponibili  tantissime funzionalità.

Tipo di pubblico e filosofia

R: Malgrado gli scaffold permettano di creare facilmente una tabella e l'interfaccia per leggerci e scriverci, Rails rimane (e rimarrà) un framework, quindi riservato ai programmatori.

Gestire le modifiche a un progetto Rails con Bazaar e Olive

Diamo uno sguardo a Bazaar (il VCS di Ubuntu) e a come utilizzarlo per gestire un progetto fatto con Ruby on Rails.

Bazaar

Si tratta di uno strumento molto utile per gestire le modifiche fatte ai file (VCS) e le sue caratteristiche principali sono l'essere:

  • distribuito: si possono apportare delle modifiche a un progetto altrui e gestire le revisioni come se si fosse proprietari.
  • integrato: si integra con Nautilus ed è estensibile con dei plugin
  • semplice: viene utilizzato anche da chi usa un'altro VCS (es SVN) per fare delle modifiche locali


Riunificazione di 2 rami locali: myapp e myapp.experimental

Installazione

Potete installarlo selezionando bzr e bzr-gtk da Synaptic o con

apt-get install bzr bzr-gtk

Se volete avere le ultime versioni disponibili aggiungete questo repository

deb http://bazaar-vcs.org/releases/debs/feisty ./

Iniziamo

Per chi non lo sapesse un progetto Rails non contiene solo codice sorgente, ma anche file di configurazione, file temporanei, database, che ovviamente non vogliamo tener traccia nel VCS.
Questo utilizzo potrebbe sembrare specifico, ma problematiche molto simili sono comuni a molti altri contesti.

rails myapp
cd myapp
bzr init      # Crea la cartella .bzr
bzr add       # Aggiunge ricorsivamente i file presenti
script/server # Parte il server Rails, CTRL+C

Textmate-like Gedit in few steps

UPDATE: A !! new version !! of this guide is avalaible.
UPDATE: This guide was for gedit 2.18.x, please upgrade to gedit 2.20.x to have an easier color scheme managing. Textmate is really a great text-editor (almost an IDE but faster), it has even the support for latest Ruby/Rails technologies like RSpec. On the GNU/Linux side there are also similar full-featured text editor and one is Gedit.

Gedit can be extended by plugins written in C or in Python, here is a tutorial how to set up a Textmate-like Gedit.

Syntax highlight for RHTML, RJS

By default Gedit supports a lot of languages php, C#, java,.. and Ruby, but Ruby embedded. To enable the sintax highlight in HTML files with embedded ruby code (.rhtml) you have to add 2 files (Thanks to Bitsbam).

From the terminal:

$ wget http://grigio.org/files/x-rhtml.xml; sudo mv x-rhtml.xml /usr/share/mime/packages
$ wget http://grigio.org/files/rhtml.lang;  sudo mv rhtml.lang /usr/share/gtksourceview-1.0/language-specs/

Select the plugin you need

The list of the plugins avalaible is growing fast; this is a list of plugins that work well each other.


Snippets: it permits to call structures of code easly and everytime you press TAB the cursor automatically jumps to the right position
Snap Open
: it opens the files that contains the word you are typing