Merb e Rails si uniscono in Rails 3.0

merbrails.jpg

Queste sono di quelle notizie che a noi programmatori ci rendo più felici e contenti, soprattutto a Natale.

Infatti da poche ore ed in contemporanea i rispettivi blog di rails e di merb hanno riportato una notizia importantissima:

Rails e Merb si uniscono in Rails 3.0.

Ma questo cosa comporterà? Grandi e ottimi cambiamenti già discussi da parecchio tempo dal sottoscritto con David Heinemeier Hansson

  1. Rails Core (simile a merb-core)
  2. Framework Agnostic
  3. Ottimizzazione delle performance
  4. Api ben documentate

Ma questo cosa significa realmente?


Rails Core

Rails, un pò come per merb sarà molto più modulabile ovvero ci sarà il Core, in termini pratici significa che se vogliamo avere tutto avremmo tutto (helper, orm etc..) ma se invece necessiteremo di una small app come ad esempio un webservice potremmo farlo senza problema alcuno ex:
rails-gen --flat rails-gen --very-flat

Framework Agnostic

Con David ci saremmo scritti decine e decine di mail al riguardo, odio con tutto il mio cuore il fatto che Rails involontariamente ti obbliga ad usare diversi framework:
  1. Test Unit (per i test)
  2. Prototype/Scriptaculous (per i javascripts)
  3. ActiveRecord (come orm)
  4. Erb (come template engine)

Lo so che anche ora si possono cambiare, ma richiede tempo e plugin di terze parti il che non è bello.

Pensate al poter generare una rails app così:

rails-gen myapp --template-engine haml --orm none --test rspec

Ottimizzazione delle performance

Questa è stata una lunga diatriba, David ha sempre sostenuto che Rails è lento e dispendioso (in termini di ram) perché è Ruby stesso ad esserlo, ma dapprima Sinatra e poi appunto Merb hanno dimostrato che è Rails a non sfruttare appieno le potenzialità di Ruby.
Personalmente noi come società per gestire 130/150 siti abbiamo bisogno di un Server con processore Xeon e ben dico ben 16GB di Ram!

Api ben documentate

Troppo spesso ormai quando viene aggiornato Rails i nostri "plugin" smettono di funzionare, questo perché non sempre ci è chiaro quale cambiamento ha bloccato il nostro plugin e così iniziamo a fare pach su patch... il che non è bello.

Ma quando potremmo avere Rails 3.0 tra le mani? Presto, dapprima avremmo Rails 2.3 nel mese di gennaio (che porta diverse fatures interssanti come il templating) mentre Rails 3.0 è atteso in Beta per marzo/aprile.

Ottima notizia no?

Inviato da Davide D'Agostino il December 24, 2008 10:52


Rails 2.2, Internazionalizzazione, Thread Safe, ETag, Ruby 1.9, JRuby ...

200811221009.jpgE' da poco uscito Rails 2.2. e le novità sono davvero davvero interessanti.

Per la prima cosa veramente importante è che Rails ora è Thread Safe, questa nuova fatures come saprete ci da grossi vantaggi ma non sempre è utile usarla. Per maggiori informazioni guardate qui.

E' stata aggiunta l'internazionalizzazione, e a questo proposito è stato creato un sito apposito che trovate qui

Con l'aggiunta del thread safety è stato fatto un gran lavoro per rendere rails compatibile con JRuby e il prossimo (speriamo arrivi presto) Ruby 1.9.

Documentazione, ora (in realtà già da un bel pò) è disponibile un nuovo sito con delle belle guide.

Migliore integrazione con il protocollo HTTP grazie al supporto ETag. Qui e qui.

Transactional Migration! Uno dei problemi storici di Rails è dovuto al processo con cui si facevano le migrazioni, infatti se prima c'era un errore in una migrazione, tutte le modifiche venivano apportate e in alcuni casi anche la migrazione stessa seppur non andata a buon fine risultava applicata con la conseguenza che non era possibile fare un se rake db:migrate:redo.

Connection Pooling. Con l'avvento del Thread Safe è necessario gestire e distribuire le richieste sql su un gruppo di connessioni. Maggiori informazioni qui.

Tabelle di Join per le nostre query. Ora è possibile fare query su più tabelle specificando la join!

Per maggiori informazioni a questo punto vi rimando al ben fatto change log!

Inviato da Davide D'Agostino il November 22, 2008 10:32


Gem MySql 2.7 Symbol not found: _mysql_init

Dalla versione 2.2 di Rails la libreria di ruby di MySql inclusa in rails non verrà più supportata.

DEPRECATION WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library will be REMOVED FROM RAILS 2.2. Please switch to the offical mysql gem: `gem install mysql`

Per coloro che hanno installato mysql tramite port eseguire:

sudo gem install mysql -- --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
Mentre per quelli che che hanno usato i binari di mysql.org
sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Se poi per caso (è successo a moltissimi) vi trovate un errore come il seguente:
>> Account.all

dyld: lazy symbol binding failed: Symbol not found: _mysql_init 
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle 
  Expected in: dynamic lookup

dyld: Symbol not found: _mysql_init 
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle 
  Expected in: dynamic lookup
Non allarmatevi troppo per qualche motivo l'installazione della gemma crea due mysql.bundle
/Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
/Library/Ruby/Gems/1.8/gems/mysql-2.7/mysql.bundle
Su internet ho letto le soluzioni più assurde come ricompilare ruby ma basta semplicemente:
rm -rf /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle

Inviato da Davide D'Agostino il October 01, 2008 14:15


Rails 2.1 e Ruby 1.8.7

200806031045.jpg

L'altro ieri è stato rilasciato il magior update di Rails 2, e le novità sono davvero interessanti, prendo esempio da Rayan's Scraps e vi scrivo un piccolo elenco:

Da notare che è anche stato rilasciato Ruby 1.8.7 . Ruby in questa versione stabile e dovrebbe essere pronto per gli ambienti di produzione.

Da notare che oltre alla correzione di numerosi bug e miglioramento delle performance è stato introdotto il back-port di Ruby 1.9 (le enumerazioni in particolare).

Maggiori informazioni sono disponibili qui

Inviato da Davide D'Agostino il June 03, 2008 02:57


A tutto Ajax

200805281004.jpg

Google, ha da poco annunciato le Ajax Library. Questo nuovo servizio permette di includere nei propri siti i file .js di blasonati framework quali:

  1. jQuery
  2. prototype
  3. script.aculo.us
  4. MooTools
  5. dojo

Tutto ciò offre grossi vantaggi quali:

  1. Compressione del javascript lato server (google)
  2. Alta velocità di accesso
  3. Supporto a vita (nell'hosting)
  4. Molteplici versioni dello stesso framework
  5. Versioni snellite del framework

Da notare anche che se molti sviluppatori iniziano ad utilizzarla, diventa più probabile che il "navigatore" ha già scaricato il framework da un'altro sito, quindi quando visiterà il vostro non il suo browser non avrà bisogno di riscaricarlo... ottimo no?

Bene, ora se volete inziare a divertirvi dovete


Includere nel vostro sito:

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script>
Oppure utilizzando il metodo Load nel seguente modo
<script src="http://www.google.com/jsapi"></script>
google.load("prototype", "1.6.0.2");
Google consiglia il secondo metodo, in quanto tra le altre cose vi permette di usufruire di altri servizi quali le google maps.

Ovviamente, come avrete notato google mette a disposizione varie versioni dello stesso framework in modo da non generare conflitti, per vedere l'elenco andate qui

Inviato da Davide D'Agostino il May 28, 2008 08:22


Rubinius on Rails

200805191023.jpg

Sono lieto di scrivervi che pochi giorni fa Evan Phoenix ha annunciato la possibilità di eseguire Rails su Rubinius.

Rubinius è una virtual machine / compilatore di nuova concezione per Ruby. In sostanza persegue l'obiettivo di fornire elevate performance nell'esecuzione di codice Ruby.

Evan, però avverte che al momento l'esecuzione di Rails su Rubinius è ancora poco performante.

Sono contento perché come sapete ad oggi il problema delle performance di ruby iniziano a farsi sentire e pesantemente.

Le future alternative potrebbero quindi essere oltre a Rubinius:

Ruby 1.9 molto veloce, ma allo stato attuale è impossibile far girare Rails.
JRuby ottimo, in grado di eseguire rails ma poco compatibile con le svariate librerie scritte in c.

IronRuby una implementazione .net
MacRuby una implementazione bastata su Objective-C

Su MacRuby, mi riprometto di far un bel articolo!

Inviato da Davide D'Agostino il May 19, 2008 08:40


Akelos, Rails su PHP... forse

200804251821.jpg

Akelos, si aggiunge alla sfilza di framework nati per "imitare" Rails.

Ho dato un occhio al sito e ho notato che in perfetto stile Rails c'e' anche uno screencast

Da quel che ho potuto vedere penso che questo a differenza di Symfony , CakePHP che hanno preso strade "loro" rimane molto fedele a Rails.

Credo sia ottimo per chi viene dal PHP, e non vuole apprendere altri linguaggi di programmazione e ammira l'agilita' di sviluppo di Rails.

Pero' tengo a sottolineare che la velocita' di sviluppo in questo caso non e' tanto dovuta al framework che si usa ma principalmente dal linguaggio di programmazione, e si sa che Ruby e' tutt'altra vita rispetto a php.

Inviato da Davide D'Agostino il April 25, 2008 18:34


Offriamo Lavoro per programmatori Ruby on Rails

200803051944.jpg

Ciao a Tutti,

come sapete siamo una giovane webagency di Varese, stiamo cercando 1 o 2 programmatori Ruby On Rails, lavoriamo su progetti interessanti e vari con grosse aziende. Ci occupiamo della realizzazione che va dal semplice sito, all'ecommerce, al gestionale, interfacce eBay etc...

Il lavoro è estremamente dinamico (come del resto la socità) e quando abbiamo disponiblità ci dedichiamo a progetti opensource alcuni qui: http://rails.lipsiasoft.com/wiki/lipsiadmin e qui sul blog.

Apprezziamo molto le inziative...

Offriamo un buon contratto e un buon stipendio e se necessario vi forniamo un MacBook.

I requisiti sono:
  • Conoscenza Ruby on Rails (almeno di base)
  • CSS/HTLM (w3c e tableless)
  • MySql
Il candidato userà esclusivamente un Mac.

Non esitate a mandarci il vostro cv qui: info@lipsiasoft.com

Ciao e a presto


Inviato da Davide D'Agostino il March 05, 2008 14:47


Lipsiadmin! L'Admin per Ruby on Rails tuttofare

LipsiaAdmin12.png

Finalmente il primo dei miei progetti (di quest'anno) si e' realizzato.

Di cosa si tratta?

Uno degli annosi problemi di noi sviluppatori Ruby On Rails e' da sempre la gestione del backend del sito sul quale lavoriamo.

Pensate alla gestione degli utenti... permessi layout grafica html etc etc... non vi stufa dover ripetere sempre gli stessi passi?

Anche a me, cosi' mi sono creato una sorta di scaffold, che utilizziamo come societa' da circa un anno.

Ma cosa ha di speciale? Bhe' soluzioni simili ce ne sono tantissime ma penso che la mia sia la versione piu' leggera, veloce ed espandibile.

Partiamo con le premesse ovvero, il nostro admin e' bastato su un framework molto famoso EXTJS nella sua versione piu' recente.

Abbiamo deciso di utilizzare EXTJS per la sua semplicita' e la sua potenza, principalmente per quanto concerne la realizzazione di ottime griglie e del layout della pagina.


LipsiaAdmin6.png
  
  
Sinceramente ho deciso di non utilizzare come fanno altri (EXT Scaffold) di usare javascripts ovunque, Rails e' un modo agile di fare siti/applicazioni web, non volevo rendere tutto piu' difficile e lungo. Quindi sono stati utilizzati poco ma bene e dove realmente serve.
I form sono ancora in html anche perche' non e' da tutti caricare le immagini in ajax.
Quindi possiamo dire che questo admin e' rivolto sia per i newbie sia per gli utenti esperti, infatti modificarlo e' semplicissimo.
script/plugin install git://github.com/Lipsiasoft/lipsiadmin.git
script/generate lipsiadmin 
Per istruzioni e documentazione vi invitiamo a vistare: http://rails.lipsiasoft.com/wiki/lipsiadmin
Oppure potete vedere/scaricare la nostra applicazione demo

http://demoadmin.lipsiasoft.org/admin
DemoAdmin.zip

Login: info@lipsiasoft.com
Password: admin 
Non dimenticate di registrarvi e inserire le vostre richieste o semplicemente notificare bugs.


Inviato da Davide D'Agostino il January 27, 2008 19:14


Javascripts dinamici in Rails 2.0.

Rieccomi, ieri mi sono visto uno screencast carino, qui e volevo segnalarvi anche a voi questa utile funzione.

Partiamo dal fatto che probabilmente è utile nei backend di un sito. Vi faccio un esempio, mettiamo che usate javascript per la gestione del login...

E' spesso molto utile poter intervenire con codice Ruby nei nostri JS ma fino alla precedente versione di Rails io intervenivo con un mio plugin Embedded Javascript che mi permetteva di usare i file ejs con codice ruby + javascript.

Ora tutto ciò come vi ho anticipato sopra è molto più semplice e non abbiamo bisogno di utilizzare plugin di terze parti.

Nella pagina seguente vi mostro un piccolo esempio.

Per prima cosa dobbiamo generare un controller, io lo chiamo javascripts in modo che quando lo includerò nella mia vista non dovrò inserire la path.

Quindi scriviamo nella nostra console:

$ script/generate controller javascripts

Ora apriamo javascripts_controller.rb e inseriamo un metodo come segue:

# javascripts_controller.rb

def admin
  @user = current_user
end

A questo punto nulla di più semplice creiamo un file admin.js.erb in /views/javascript/ e scriviamo:

//admin.js.erb

<% if @user.admin? %>
  alert('Benvenuto Amministratore')
<% end %>

Infine dobbiamo creare una rotta in modo tale che quando scriveremo nel nostro browser una rotta che permetta l'interpretazione del nostro nuovo JavaScript

  map.connect 'javascripts/:action.:format', :controller => 'javascripts'

Bene, se punterete il vostro browser in http://localhost:3000/admin.js dovreste vedere il codice se siete "amministratori".

Ovviamente questo è un codice d'esempio che spiega a grandi linee uno scenario di utilizzo... il resto spetta a voi e ricordate che come per le pagine html se ci sono 2 file con lo stesso nome nelle viste e nella directory public hanno precedenza i file che si trovano in public, ciò significa che se avete già un file in /public/javascripts/admin.js ha precedenza su quello che avete in /views/javascripts/admin.js.erb

Buon divertimento e se avete qualche consiglio da darmi non esitate!

Inviato da Davide D'Agostino il January 23, 2008 09:27


Archivio post: 1 2 3