<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>TheRubyMine</title>
	<atom:link href="http://therubymine.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://therubymine.com</link>
	<description>La miniera italiana per Ruby e Rails</description>
	<pubDate>Mon, 25 Jan 2010 16:19:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Primo Ruby Social Club del 2010!</title>
		<link>http://therubymine.com/2010/01/25/primo-ruby-social-club-del-2010/</link>
		<comments>http://therubymine.com/2010/01/25/primo-ruby-social-club-del-2010/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:18:51 +0000</pubDate>
		<dc:creator>The Chief Miner</dc:creator>
		
		<category><![CDATA[La miniera]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=110</guid>
		<description><![CDATA[
Eccoci al primo ritrovo di Rubysti italiani del 2010! E&#8217; in arrivo il sesto incontro del Ruby Social Club a Milano, la serata di Giovedì 4 Febbraio 2010 a partire dalle 18.30 (accettiamo anche ritardatari :P) presso la sede di MIKAMAI (qui un link alla mappa), per poi proseguire in qualche ristorantino non troppo costoso [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://www.ruby-lang.org/images/logo.gif" alt="" width="331" height="119" /></p>
<p>Eccoci al primo ritrovo di Rubysti italiani del 2010! E&#8217; in arrivo il sesto incontro del Ruby Social Club a Milano, la serata di <strong>Giovedì 4 Febbraio 2010 a partire dalle 18.30</strong> (accettiamo anche ritardatari :P) presso la<strong> sede di <a style="color: #5555dd;" onclick="javascript:pageTracker._trackPageview('/outbound/article/mikamai.com');" href="http://mikamai.com/" target="_blank">MIKAMAI</a></strong> (qui un link alla <a style="color: #5555dd;" title="mappa MIKAMAI and Blender" onclick="javascript:pageTracker._trackPageview('/outbound/article/maps.google.com');" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=it&amp;msa=0&amp;msid=105119374898998012677.0004674a412f137ac814c&amp;ll=45.469333,9.221048&amp;spn=0.003115,0.008572&amp;z=17">mappa</a>), per poi proseguire in qualche ristorantino non troppo costoso verso le 21 per conoscerci meglio e bere qualche birra insieme.</p>
<p>Come già testato negli ultimi incontri partiremo con dei <a style="color: #5555dd;" onclick="javascript:pageTracker._trackPageview('/outbound/article/en.wikipedia.org');" href="http://en.wikipedia.org/wiki/Lightning_Talk" target="_blank">Lightning Talk</a> e demo in live coding in ufficio della durata di 15 minuti ciascuno. Chiunque è libero di proporre le proprie idee, ma per motivi di tempo potremo avere al massimo 4, 5 presentazioni in modo da non crollare dalla fame! Chiunque voglia partecipare può scrivere direttamente nei commenti o mandare una mail ad “<em>andrew AT mikamai DOT com</em>“.</p>
<p><strong>Ricordate che non dovete essere per forza rubysti per venire, e non dovete portare demo o talk se non lo volete. Basta solamente la vostra presenza, curiosità e voglia di passare una bella serata tutti assieme</strong>.</p>
<p>In finale, chiunque pensi di venire può lasciare il suo nome su <a style="color: #5555dd;" href="http://www.doodle.com/qv2qukkk4n637hex">doodle</a> così da facilitarci l’organizzazione.</p>
<p>A presto <img src='http://therubymine.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>P.S. A MIKAMAI (per chi arriva più tardi) ci si arriva facilmente con la 54, la 60 e 61, la 90,91,92 ed il passante (fermata Dateo).</p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2010/01/25/primo-ruby-social-club-del-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Una birra con Ruby e Drupal</title>
		<link>http://therubymine.com/2009/06/12/una-birra-con-ruby-e-drupal/</link>
		<comments>http://therubymine.com/2009/06/12/una-birra-con-ruby-e-drupal/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 10:24:07 +0000</pubDate>
		<dc:creator>The Chief Miner</dc:creator>
		
		<category><![CDATA[Granpa miner]]></category>

		<category><![CDATA[Italians terminator]]></category>

		<category><![CDATA[La miniera]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Railscast 4 italians]]></category>

		<category><![CDATA[The miners books]]></category>

		<category><![CDATA[mikamai]]></category>

		<category><![CDATA[milano]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[ruby social club]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=99</guid>
		<description><![CDATA[
Torna il nostro appuntamento con il Ruby Social Club, con una grande novità!  Durante lo stesso evento si darà il via al Primo Drupal Social Club, cercando di mescolare due comunità tra loro diverse, ma con la stessa forte passione.
Come già testato negli ultimi incontri partiremo con dei Lightning Talk e demo in live [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-852 alignleft" title="drupal_ruby" src="http://blog.mikamai.com/wp-content/uploads/2009/06/drupal_ruby.jpg" alt="drupal_ruby" width="250" height="275"  style="margin-right: 15px;"/></p>
<p>Torna il nostro appuntamento con il <strong>Ruby Social Club</strong>, con una grande novità!  Durante lo stesso evento si darà il via al Primo<strong> Drupal Social Club</strong>, cercando di mescolare due comunità tra loro diverse, ma con la stessa forte passione.</p>
<p>Come già testato negli ultimi incontri partiremo con dei <a class="external" href="http://en.wikipedia.org/wiki/Lightning_Talk">Lightning Talk</a> e demo in live coding in ufficio della durata di 10 minuti ciascuno.  Attualmente ci manca ancora una presentazione “Ruby” related ed una “Drupal” related, quindi chiunque voglia fare una presentazione può mandare una mail ad <strong>andrew@mikamai.com</strong>. Ricordiamo che non serve nulla di difficile. Basta anche la presentazione di un lavoro su cui si è passato del tempo o di qualche trick che si vuole condividere con la community.</p>
<p>La data è stata fissata per mercoledì prossimo, il 17 giugno 2009, a Mikamai, <a href="http://tinyurl.com/mikamai">in Via Ceradini 12 a Milano</a> alle ore 18.45 per poi continuare alle 20.30 con un aperitivo <a href="http://milano.tonight.eu/aperitivo_happy_hour/blender_bar">al Blender</a>.</p>
<p>Si parlerà di come fare deploy di <strong>applicazioni Drupal attraverso Capistrano</strong>, di <strong>come sviluppare applicazioni Facebook con Drupal </strong>e molto molto altro. Per registrarsi basta accedere a questa <a href="http://ruby-it.org/pages/ruby-social-club-milano-17-06-2009">pagina del Wiki</a>. Non mancate, questa volta se ne vedranno delle belle!</p>
<p>UPDATE: Sono stati trovati i due presentatori mancanti. Sandro Paganotti ci parlerà di <strong>Riconoscimento di oggetti (volti) con Ruby ed OpenCV</strong>, mentre Francesco Moretto ci illustrerà come sia possibile <strong>integrare <a href="http://www.civicrm.eu/">CiviCRM</a> (piattaforma open-source per la gestione di associazioni / ONG) e Drupal</strong>. A me solo i titoli suonano a dir poco interessanti !!</p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/06/12/una-birra-con-ruby-e-drupal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails3: Better, Faster, Stronger</title>
		<link>http://therubymine.com/2009/06/04/rails3-better-faster-stronger/</link>
		<comments>http://therubymine.com/2009/06/04/rails3-better-faster-stronger/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 12:03:03 +0000</pubDate>
		<dc:creator>Marcello Barnaba</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[merb]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=85</guid>
		<description><![CDATA[Tutti (o quasi) gli sviluppatori web conoscono o hanno sentito almeno parlare di Ruby on Rails, un framework full-stack per la creazione di applicazioni web utilizzando il linguaggio di programmazione Ruby.
Qualora non abbiate mai sentito parlare nè di Rails, nè di web application, sulla wikipedia italiana è presente una brevissima panoramica su di esso, in cui è impossibile non [...]]]></description>
			<content:encoded><![CDATA[<div class="writeboardbody"><img class="alignleft size-thumbnail wp-image-86" style="margin-right: 15px;" src="http://therubymine.com/wp-content/uploads/2009/06/rails-harder-better-faster-stronger-150x150.png" alt="Rails3: Harder, Better, Faster, Stronger" width="160" height="160" />Tutti (o quasi) gli sviluppatori web conoscono o hanno sentito almeno parlare di <a href="http://www.rubyonrails.com/">Ruby on Rails</a>, un <a href="http://en.wikipedia.org/wiki/Web_application_framework">framework full-stack</a> per la creazione di applicazioni web utilizzando il linguaggio di programmazione <a href="http://www.ruby-lang.org/">Ruby</a>.</p>
<p>Qualora non abbiate mai sentito parlare nè di Rails, nè di web application, sulla <a href="http://it.wikipedia.org/w/index.php?title=Ruby_on_Rails&amp;oldid=23455980">wikipedia italiana</a> è presente una brevissima panoramica su di esso, in cui è impossibile non essere colpiti dalla sua <em>Filosofia</em>. Rails è infatti definito dall’autore <a href="http://loudthinking.com/">David Heinemeier Hansson</a> &#8220;<a href="http://roohit.com/800c1">opinionated software</a>&#8220;, cioè un software che impone determinati approcci e workflow durante la progettazione e la stesura di un progetto, con i vantaggi e <a href="http://www.martinfowler.com/bliki/EnterpriseRails.html">svantaggi</a> che questo può portare.</p>
<p>Altra caratteristica che ha contraddistinto le prime evoluzioni di Rails (2003-2007) è stata la mancanza di interfacce robuste per la sua estensione attraverso plug-in esterni, complice anche una controversa caratteristica di Ruby: il <a href="http://en.wikipedia.org/wiki/Monkey_patch">monkeypatching</a>. In Ruby le classi non sono chiuse: è possibile modificarne il funzionamento in qualsiasi punto del programma, e questo vale anche per le classi base (ad es. <code>String</code>, <code>Integer</code>, &#8230;). Ciò ha portato al proliferare di plug-in ed estensioni al framework che facevano leva su dettagli implementativi privati, la cui stabilità nel tempo non è garantita, con tutti i problemi di <a href="http://it.wikipedia.org/wiki/Manutenibilit%C3%A0">manutenibilità</a> che ne derivano: chi ha seguito le prime fasi del rilascio di Rails non può non ricordare il <a href="http://weblog.rubyonrails.org/2005/11/11/why-engines-and-components-are-not-evil-but-distracting/">lungo</a> <a href="http://rails-engines.rubyforge.org/wiki/wiki.pl?OhGodWhatHaveWeDone">dibattito</a> che seguì dall’implementazione dei <a href="http://rails-engines.org/">Rails Engines</a>.</p>
<p>In seguito, gli engines sono stati <a href="http://www.coryosborn.com/posts/railsconf-day-2-rails-engines">rivalutati</a>, tanto da <a href="http://assets.en.oreilly.com/1/event/24/The%20Even-Darker%20Art%20of%20Rails%20Engines%20Presentation.pdf">venir presentati</a> all’edizione 2009 di <a href="http://en.oreilly.com/rails2009/">RailsConf</a>, come una via funzionale per la realizzazione di componenti software riutilizzabili e completi, poichè possiedono dei Model, View, Controller, e delle Route che connettono gli <span class="caps">URI</span> a cui risponde l’applicazione al codice che ne implementa la logica.</p>
<p>Questo cambio di visione da parte di <span class="caps">DHH </span>è stato determinato dalla sua esperienza di trovarsi a reimplementare diverse applicazioni che sarebbero potute essere racchiuse in un engine e successivamente riutilizzate.</p>
<p>Simili considerazioni sono state anche espresse in proposito al forte carattere <em>opinionated</em> di Rails, i cui approcci imposti non riguardano solo l’utilizzo di un certo <a href="http://c2.com/cgi/wiki?DesignPatterns">pattern</a>, ma anche l’imposizione di uno specifico “pezzo di software” che lo implementi. Ad esempio, per accedere ad un database in Rails viene utilizzato<a href="http://ar.rubyonrails.org/">ActiveRecord</a>, un’implementazione del pattern di <a href="http://c2.com/cgi/wiki?ObjectRelationalMapping">Object-Relational Mapping</a> che permette di avvicinare il <a href="http://en.wikipedia.org/wiki/RDBMS">modello relazionale</a> dei database attualmente diffusi sul mercato al modello <a href="http://en.wikipedia.org/wiki/Object_oriented">object</a> <a href="http://c2.com/cgi/wiki?ObjectOriented">oriented</a> utilizzato da Ruby e pervasivamente ereditato da Rails.</p>
<h2><em>Il contesto Open Source</em></h2>
<p>In un contesto open source, però, tale restrizione è vista come castrante da tanti developer. Nonostante ActiveRecord faccia bene il suo lavoro, è importante poter scegliere il componente più adatto ad un determinato scopo: è un concetto che qualsiasi sviluppatore esperto fa suo, tralasciando le inutili guerre di religione :).</p>
<p>La modularità, estendibilità e la presenza di un’interfaccia ragionata e soprattutto <strong>stabile</strong> sono i principi fondanti di <a href="http://merbivore.com/">Merb</a>, un altro framework Ruby-based per la creazione di applicazioni web database-backed, la cui <em>headline</em> è <cite>Looking for a hacker framework?</cite>. Merb consiste in un piccolo <em>core</em> di funzionalità ben organizzate, su cui una serie di plug-in costruiscono e realizzano l’impianto completo su cui poi realizzare la propria applicazione.</p>
<p>Con Merb è possibile utilizzare il preferito degli <span class="caps">ORM</span>, template engine, mailer e testing frameworks disponibili, in quanto tutti si appoggiano al medesimo <a href="http://merbivore.com/features.html">core</a>. Inoltre è semplice realizzarne di nuovi per soddisfare le esigenze più disparate: è una filosofia <a href="http://en.wikipedia.org/wiki/Unix_philosophy">molto simile a quella <span class="caps">UNIX</span></a>, in cui ogni singolo <em>tool</em>software implementa limitate funzionalità (ma bene), dove per risolvere problemi più complessi è sufficiente l’utilizzo in cascata di diversi <em>tool</em>.</p>
<p>Dati i numerosi vantaggi di questo approccio, completamente opposto a quello iniziale di Rails, anche un <a href="http://www.loudthinking.com/posts/39-im-an-r-rated-individual">Rated R individual</a> dalle <em>strong opinions</em> ha deciso di cambiare idea ancora una volta, e annunciare al mondo la notizia che nessuno si aspettava di ricevere: <a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3">rails e merb</a> <a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge/">diventeranno un unico progetto</a>!</p>
<p>Il <a href="http://www.internetnews.com/dev-news/article.php/3819116">risultato di questo merge</a> si concretizzerà nella prossima major release di Rails, la 3.0, che è stata oggetto di un <a href="http://merbist.com/2009/05/08/railsconf-2009/">consistente talk</a> a RailsConf 2009, e le cui caratteristiche saranno:</p>
<ul>
<li><em>Meno “opinionated”</em>: non più una singola “Rails Way”, bensì multiple “Rails Ways”, data la possibilità di scegliere tra differenti <span class="caps">ORM </span>(AR, Sequel, DataMapper, CouchRest, &#8230;), templating engines (ERb, <span class="caps">HAML</span>, Liquid, Markaby, <a href="http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html">&#8230;</a>) Javascript libraries (Prototype, jQuery, MooTools, Dojo, &#8230;) e testing frameworks (Test::Unit, RSpec, Mocha, &#8230;).</li>
<li><em>Più veloce</em>: il team di sviluppo di Merb è sempre stato attento alle performance, cercando di evitare la scrittura di software con troppa “magic” (e.g. abuso di <code>method_missing</code>) e che seguisse la sua filosofia di modularità e circoscrizione ad di un componente ad un singolo dominio applicativo. Rails3 erediterà questi approcci al design garantendo migliori performance. In quest’ottica è avvenuto anche l’inserimento di <a href="http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal">Metal</a> in Rails 2.3.</li>
<li><em>Una public <span class="caps">API</span></em>: Sbagliando, s’impara. Se è vero che non è possibile immaginare l’uso che un utente finale fà di un software, allo stesso modo sono molteplici e imprevedibili gli usi che uno sviluppatore può fare di un framework, e tali diventano anche <em>evil</em> se non gli è fornita una <a href="http://http://en.wikipedia.org/wiki/Application_programming_interface">API</a> e delle linee guida per la sua estensione. Il lungo dibattito riguardo i Rails Engines ha fatto storia, e non è il caso di ripetere gli stessi errori.</li>
<li><em>Più modulare</em> e <em>più agnostico</em>, dirette conseguenze dell’introduzione di una <span class="caps">API</span>, e che permettono quindi la realizzazione di applicazioni “componibili”, essendo il framework non una singola torre, ma più un set di strumenti a-la <a href="http://en.wikipedia.org/wiki/Lego_Technic">lego technic</a> (bei ricordi :). Una funzionalità che conferma questo approccio, già disponibile in Rails 2.3, sono i Rails templates: essi offrono una <a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language">DSL</a> per automatizzare l’inizializzazione di una nuova applicazione, attraverso la scrittura dei requisiti in un file .rb da passare come argomento del parametro <code>-m</code> al comando <code>rails</code>. <a href="http://m.onkey.org/2008/12/4/rails-templates">Questo blogpost di lifo</a> contiene tutte le informazioni per un <em>quickstart</em>.</li>
<li><em>Più evolvibile</em>: diretta conseguenza della maggiore modularità e di un cambio di vision. In Rails3 non ci saranno più “Vacche sacre”, bensì qualsiasi aspetto del framework potrà essere soggetto a cambiamento. Non spaventatevi: a patto che la <span class="caps">API</span> rimanga stabile e ci sia un definito processo di<em>deprecation</em> per le <span class="caps">API</span> marcate come obsolete, per lo sviluppatore non ci sarà alcun mal di testa. Molti più ce ne sono stati in passato a causa dell’assenza di <span class="caps">API</span>, dove ognuno implementava <em>come meglio credeva</em> le feature di cui aveva bisogno.</li>
</ul>
<h2><em>Live from the stage</em></h2>
<p>Uno (dei tantissimi) esempi di come realizzare questo grande merge è possibile vederlo direttamente su github, nello specifico <a href="http://github.com/rails/rails/commit/8a4e77b4200946ba4ed42fe5927a7400a846063a">due</a> <a href="http://github.com/rails/rails/commit/e046f36824fcc164c284a13524c6b4153010a4e1">commit</a> su ActionController. Esso è stato completamente ristrutturato, e la nuova implementazione è stata riposta in una nuova directory, <code>new_base</code>, nel primo commit introdotta la <a href="http://github.com/rails/rails/commit/8a4e77b4200946ba4ed42fe5927a7400a846063a#L5R5">Rails2Compatibility</a> e rimossi i <a href="http://github.com/rails/rails/commit/8a4e77b4200946ba4ed42fe5927a7400a846063a#L13L5">fixture template</a>.</p>
<p>Successivamente, nel secondo commit, è avvenuto lo switch dalla vecchia <code>ActionController::Base</code> alla <a href="http://github.com/rails/rails/commit/e046f36824fcc164c284a13524c6b4153010a4e1#L6L2">nuova</a>, inserendo anche qualche <a href="http://github.com/rails/rails/commit/e046f36824fcc164c284a13524c6b4153010a4e1#L2R4per">hack temporaneo</a> far sì che i test continuassero a funzionare.</p>
<p>Seguire un merge di questa portata operato da professionisti affermati è un ottimo esercizio, soprattutto per chi si è da poco affacciato all’ingegneria del software, e vuole imparare sul campo le <em>best practices</em> che portano le <a href="http://chadfowler.com/2006/12/27/the-big-rewrite">big rewrite</a> al successo.</p>
<h2>Il futuro?</h2>
<p>Rails3 sarà un notevole passo avanti nella storia di questo framework, che si lascerà dietro le parti più controverse della sua filosofia, e permetterà alla community di farlo evolvere in maniere prima impossibili. È auspicabile per ogni sviluppatore seguirne il suo sviluppo, poichè è anche possibile imparare processi e approcci al project management, oltre che allo sviluppo di software. La gestione del progetto rails con relative milestone è gestita attraverso <a href="http://rails.lighthouseapp.com/">lighthouse</a>, mentre tutto il codice sorgente è conservato su <a href="http://github.com/rails/rails">github</a>. Data la natura di git (e github), chiunque può, in qualsiasi momento, effettuare un <em>fork</em> di rails e modificarlo come più gli piace. È una possibilità che poche altre piattaforme per lo sviluppo di software opensource permettono.</p>
<p>Inoltre, è possibile seguire il Rails Core Team su <a href="http://twitter.com/rails">twitter</a>, mantenersi aggiornati sugli sviluppi ad alto livello seguendo <a href="http://ryandaigle.com/">il blog di Ryan Daigle</a>, seguire le discussioni attorno a Rails3 attraverso il mail-to-web gateway presente su <a href="http://www.ruby-forum.com/forum/3">ruby-forum.com</a> e, ovviamente, aggiungere therubymine.com ai propri bookmark poichè su queste pagine riparleremo presto di Rails3 :).</p>
<p>A presto!</p>
<h2>L’autore</h2>
<p><a href="http://www.linkedin.com/in/marcellobarnaba">Marcello Barnaba</a>, Software Engineer per lavoro e per passione, seguo quotidianamente l’evolversi di Internet che sta cambiando sia la vita di milioni di persone che la società in cui si relazionano l’un l’altro. Ho un <a href="http://sindro.me/">blog</a> e <a href="http://twitter.com/vjt">cinguetto</a> quotidianamente, cercando di non spendere tutto lo stipendio in Sushi ;).</div>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/06/04/rails3-better-faster-stronger/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RailsWayCon 2009 – Un free ticket per te !</title>
		<link>http://therubymine.com/2009/05/07/railswaycon-2009-%e2%80%93-the-conference-on-ruby-rails-and-more/</link>
		<comments>http://therubymine.com/2009/05/07/railswaycon-2009-%e2%80%93-the-conference-on-ruby-rails-and-more/#comments</comments>
		<pubDate>Thu, 07 May 2009 07:46:34 +0000</pubDate>
		<dc:creator>The Chief Miner</dc:creator>
		
		<category><![CDATA[La miniera]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=66</guid>
		<description><![CDATA[
Il Berliner Congress Center di Berlino ospiterà, dal 25 al 27 Maggio, uno degli eventi di maggior risonanza per la comunità di Ruby: la RailsWayCon 2009. La capitale tedesca ospiterà una tre giorni di conferenze ed incontri con la grande community di una delle tecnologie web più innovative dei nostri tempi. Gli incontri sono aperti [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-70" title="railsconfberlin" src="http://therubymine.com/wp-content/uploads/2009/05/railsconfberlin-300x55.png" alt="railsconfberlin" width="300" height="55" style="margin-right:10px;"/></p>
<p>Il Berliner Congress Center di Berlino ospiterà, dal 25 al 27 Maggio, uno degli eventi di maggior risonanza per la comunità di Ruby: la RailsWayCon 2009. La capitale tedesca ospiterà una tre giorni di conferenze ed incontri con la grande community di una delle tecnologie web più innovative dei nostri tempi. Gli incontri sono aperti ad un pubblico trasversale: dai basics fino alle session da veri esperti. Con il claim <em>Ruby ti semplifica la vita!</em> numerosi guru di fama internazionale incontreranno gli sviluppatori: Ola Bini, Steven Bristol, Yehuda Katz, Michael Koziarski e molti altri ancora illustreranno tecniche e novità del nostro framework preferito.</p>
<p>Ma eccoci arrivare alla parte più interessante: <em>la RailsWayCon mette a disposizione un free pass alla comunity italiana!</em>. Partecipare all&#8217;estrazione che permetterà di seguire le tre giornate dell&#8217;evento è molto semplice. Sarà sufficiente inviare un email entro il 10 maggio all’inidirizzo italia AT railswaycon DOT com ed attendere l&#8217;estrazione del fortunato vincitore che sarà fatta il giorno dopo - 11 maggio. Per chi volesse saperne di più il programma e gli speaker sono a disposizione nel sito web ufficiale <a href="http://www.railswaycon.com/" target="_blank">www.railswaycon.com</a>, quindi non aspettate oltre!</p>
<p>Vinca il più fortunato!</p>
<p>UPDATE: la fortunata vincitrice è Alice Avallone, una delle new entry nel mondo Ruby e Rails che tra un paio di settimane avrà la fortuna di passare ben tre giorni tra conferenze e quartieri berlinesi. Sarà passata perchè è una ragazza? <img src='http://therubymine.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/05/07/railswaycon-2009-%e2%80%93-the-conference-on-ruby-rails-and-more/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby Social Club, quarto appuntamento !</title>
		<link>http://therubymine.com/2009/04/13/ruby-social-club-quarto-appuntamento/</link>
		<comments>http://therubymine.com/2009/04/13/ruby-social-club-quarto-appuntamento/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 10:49:27 +0000</pubDate>
		<dc:creator>The Chief Miner</dc:creator>
		
		<category><![CDATA[La miniera]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=55</guid>
		<description><![CDATA[Dopo esserci incontrati in circa 30 persone all&#8217;ultimo evento, è in arrivo il quarto incontro del Ruby Social Club a Milano, la serata di Giovedì 16 Aprile 2009 a partire dalle 18:45 presso la sede di MIKAMAI (qui un link alla mappa), per poi proseguire al Blender verso le 20, 20:30 per l&#8217;aperitivo e per [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo esserci incontrati in circa 30 persone all&#8217;ultimo evento, è in arrivo il quarto incontro del Ruby Social Club a Milano, la serata di <strong>Giovedì 16 Aprile 2009 a partire dalle 18:45</strong> presso la<strong> sede di <a style="color: #5555dd;" href="http://mikamai.com/" target="_blank">MIKAMAI</a></strong> (qui un link alla <a style="color: #5555dd;" title="mappa MIKAMAI and Blender" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=it&amp;msa=0&amp;msid=105119374898998012677.0004674a412f137ac814c&amp;ll=45.469333,9.221048&amp;spn=0.003115,0.008572&amp;z=17">mappa</a>), per poi proseguire al <a style="color: #5555dd;" href="http://milano.tonight.eu/locale/blender_bar" target="_blank">Blender</a> verso le 20, 20:30 per l&#8217;aperitivo e per conoscerci meglio fino alle ore piccole davanti a qualche bella birra doppio malto. </p>
<p>Come già testato negli ultimi incontri partiremo con dei <a style="color: #5555dd;" href="http://en.wikipedia.org/wiki/Lightning_Talk" target="_blank">Lightning Talk</a> e demo in live coding in ufficio della durata di 10 minuti ciascuno. Chiunque è libero di proporre le proprie idee, ma per motivi di tempo potremo avere al massimo tre presentazioni in modo da non andare a mangiare troppo tardi ! Potete scriverle direttamente nei commenti o mandare una mail ad &#8220;<em>andrew AT mikamai DOT com</em>&#8220;, così da semplificare l&#8217;organizzazione.</p>
<p>Finita la parte di coding si passerà al Blender. Niente wifi durante le bevute, ma ci sarà la possibilità di portare il laptop per far vedere i vostri progetti. <strong>Ricordate che non dovete essere per forza rubysti per venire, e non dovete portare demo o talk se non lo volete. Basta solamente la vostra presenza, curiosità e voglia di passare una bella serata tutti assieme</strong>.</p>
<p>UPDATE: chiunque pensi di venire può lasciare il suo nome e l&#8217;indirizzo mail all&#8217;interno del wiki di <a  style="color: #5555dd;" href="http://ruby-it.org/pages/ruby-social-club-milano-16-04.2009">ruby-it</a>, così da facilitarci l&#8217;organizzazione.</p>
<p>A prestissimo !!!</p>
<p>P.S. A MIKAMAI ed al Blender (per chi arriva più tardi) ci si arriva facilmente con la 54, la 60 e 61, la 90,91,92 ed il passante (fermata Dateo). Qui la <a style="color: #5555dd;" title="mappa MIKAMAI and Blender" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=it&amp;msa=0&amp;msid=105119374898998012677.0004674a412f137ac814c&amp;ll=45.469333,9.221048&amp;spn=0.003115,0.008572&amp;z=17">mappa</a> per maggiori dettagli.</p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/04/13/ruby-social-club-quarto-appuntamento/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Free your gems to the wild</title>
		<link>http://therubymine.com/2009/03/26/free-your-gems-to-the-wild/</link>
		<comments>http://therubymine.com/2009/03/26/free-your-gems-to-the-wild/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 15:15:29 +0000</pubDate>
		<dc:creator>The Chief Miner</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[hack-up]]></category>

		<category><![CDATA[meeting]]></category>

		<category><![CDATA[mikamai]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=43</guid>
		<description><![CDATA[ Capita più spesso di quanto pensiamo di divertirci giocando con il nostro linguaggio preferito, risolvendo un problema che abbiamo incontrato al lavoro, o semplicemente scrivere provando qualche tutorial trovato qui e li. Il problema è che solitamente si dice &#8220;ok, adesso lo sistemo un pò, lo metto su un repository pubblico e ci faccio [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://therubymine.com/wp-content/uploads/2009/03/open-to-the-wild.png" alt="Open to the wild" title="Open to the wild" width="200" height="145" class="alignleft size-full wp-image-44" style="margin-right:5px;"/> Capita più spesso di quanto pensiamo di divertirci giocando con il nostro linguaggio preferito, risolvendo un problema che abbiamo incontrato al lavoro, o semplicemente scrivere provando qualche tutorial trovato qui e li. Il problema è che solitamente si dice &#8220;ok, adesso lo sistemo un pò, lo metto su un repository pubblico e ci faccio pure un bel articoletto che spiega quanto ho fatto&#8221;. Nella realtà, questo succede troppe poche volte.</p>
<p>La conseguenza è che piccole gemme scritte in Ruby o nel proprio linguaggio preferito rimangano chiuse nei nostri &#8220;<em>cassetti</em>&#8221; ed inizino a far polvere. Dopo un pò di tempo ci saremo dimenticati della loro esistenza, e probabilmente qualcuno che ne aveva bisogno non potrà mai essere a conoscenza del nostro lavoro.</p>
<p>Proprio per cambiare questa abitudine, domenica 29 marzo, negli uffici di <a href="http://blog.mikamai.com">Mikamai</a>, ci sarà il quarto <a href="http://www.hack-up.org/">Hack Up</a>. Senza andare nei dettagli, l&#8217;Hack Up è un incontro informale in cui persone con diverse conoscenze si incontrano, condividono le proprie esperienze e creano dei micro-progetti da rilasciare open source a fine giornata. In questo Hack Up lo scopo sarà duplice, in quanto oltre a sviluppare piccole applicazioni basate su temi caldi come Facebook o <a href="http://www.arduino.cc/">Arduino</a>, ci saranno dei gruppi orientati alla discussione di progetti precedentemente creati. Ognuno potrà portare i progetti che aveva chiuso nel cassetto, potrà discutere con altri del lavoro fatto, e cercherà di renderli pubblici creando ad esempio delle gemme o dei repository su <a href="http://github.com/">github</a>.</p>
<p>Per il piano della giornata, ci troveremo a mezzogiorno al Frida per fare un branch, per poi andare alla sede di Mikamai alle 14 dove inizieremo a divertirci tutti assieme. Ovviamente, chi vuole, può saltare il branch e dormire un pochino di più visto che sempre di domenica si parla :-). Maggiori dettagli sulla giornata la trovate nel wiki dell&#8217;<a href="http://www.hack-up.org/wiki/index.php?title=Milan_29_Mar_2009">Hack Up</a>.</p>
<p>Free your gems to the wild, on a bright sunday. </p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/03/26/free-your-gems-to-the-wild/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Novità in Rails 2.3: nested forms</title>
		<link>http://therubymine.com/2009/03/11/novita-in-rails-23-nested-forms/</link>
		<comments>http://therubymine.com/2009/03/11/novita-in-rails-23-nested-forms/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 21:32:24 +0000</pubDate>
		<dc:creator>Carlo Pecchia</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[2.3]]></category>

		<category><![CDATA[nested forms]]></category>

		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://therubymine.com/?p=3</guid>
		<description><![CDATA[<img src="http://therubymine.com/wp-content/uploads/2009/03/matrioska.jpg" alt="matrioska" />

Rails 2.3 presenta una serie di interessanti novità, nessun <em>stravolgimento</em> sia chiaro, ma comunque migliorie degne di nota. Spesso ci capita di avere dei form “scorrelati” da un modello in particolare, ovvero dove ci sono campi che non appartengono ad un unico modello, ma che per questioni di usabilità è meglio presentare insieme.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://therubymine.com/wp-content/uploads/2009/03/matrioska.jpg" alt="matrioska" /></p>
<p>Rails 2.3 presenta una serie di interessanti novità, nessun <em>stravolgimento</em> sia chiaro, ma comunque migliorie degne di nota. Spesso ci capita di avere dei form “scorrelati” da un modello in particolare, ovvero dove ci sono campi che non appartengono ad un unico modello, ma che per questioni di usabilità è meglio presentare insieme.</p>
<p>Supponiamo che il nostro modello dei dati voglia rappresentare una piccola biblioteca, avremo:</p>
<ul>
<li>un modello Book (titolo, numero di pagine)</li>
<li>un modello Author (nome)</li>
<li>un libro avrà almeno un autore</li>
</ul>
<p>Volendo presentare un form per l’inserimento di un nuovo libro dovremmo prevedere il seguente flusso:</p>
<ol>
<li>inserimento del libro</li>
<li>inserimento dell’autore (se non è già presente nello storico)</li>
<li>infine: associazione dell’autore al libro appena inserito (e salvataggio)</li>
</ol>
<p>E’ molto più naturale presentare il tutto in un <em>unico form</em>. Per esigenze di questo tipo in Rails 2.3 sono stati introdotti i <strong>nested forms</strong> (a dire la verità è da <a href="http://ryandaigle.com/articles/2008/7/19/what-s-new-in-edge-rails-nested-models">tempo</a> che se ne parla come dice lo stesso <a href="http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes">Ryan</a>). Ad ogni modo, riprendendo l’esempio precedente, avremo per i modelli l&#8217;aggiunta del metodo <code>accepts_nested_attributes_for</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Author <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  has_and_belongs_to_many <span style="color:#ff3333; font-weight:bold;">:books</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Book <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  has_and_belongs_to_many <span style="color:#ff3333; font-weight:bold;">:authors</span>
  accepts_nested_attributes_for <span style="color:#ff3333; font-weight:bold;">:authors</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Mentre per il controller relativo al libro è necessario creare il modello nidificato (<em>nested</em>).</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> new
  <span style="color:#0066ff; font-weight:bold;">@book</span> = Book.<span style="color:#9900CC;">new</span>
  <span style="color:#0066ff; font-weight:bold;">@book</span>.<span style="color:#9900CC;">authors</span>.<span style="color:#9900CC;">build</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>La differenza <em>sostanziale</em> sta però nella view <code>views/book/new.html.erb</code> dove grazie all’uso del metodo <code>fields_for</code> è possibile instaziare un form nidificato per il modello indicato.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">  ...
  <span style="color: #009900;">&lt;% form_for @book do |book_form| %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;">&lt;%= book_form.error_messages %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;">&lt;%= book_form.label :title, <span style="color: #ff0000;">'Title:'</span> %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;">&lt;%= book_form.text_field :title %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;">&lt;%= book_form.label :pages_number, <span style="color: #ff0000;">'Pages:'</span> %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;">&lt;%= book_form.text_field :pages_number, :size =<span style="color: #000000; font-weight: bold;">&gt;</span></span> 5 %&gt;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;strong<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>authors<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/strong<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;">&lt;% book_form.fields_for :authors do |author_form| %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;">&lt;%= author_form.label :name, <span style="color: #ff0000;">'Name:'</span> %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;">&lt;%= author_form.text_field :name, :size =<span style="color: #000000; font-weight: bold;">&gt;</span></span> 30 %&gt;
        <span style="color: #009900;">&lt;% end %<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    ...</pre></div></div>

<p>Giusto per chiarirci le idee vediamo come apparirebbe il form.</p>
<p><img src="http://therubymine.com/wp-content/uploads/2009/03/nested_form-0.jpg" alt="nested form" /></p>
<p>Inoltre vediamone il corretto funzionamento.</p>
<p><img src="http://therubymine.com/wp-content/uploads/2009/03/nested_form-1.jpg" alt="nested form processed" /></p>
<p>A questo punto per salvare correttamente i dati nel controller non è necessario fare assolutamente nulla. Il modello Book si preoccuperà di creare una nuova istanza per l’author inserito, di salvarla e linkarla opportunamente ad esso. Potremmo chiederci: e se questa catena di salvataggi si spezzasse per un qualsiasi motivo? Nessun problema: le operazione di salvataggio sono atomiche in questo caso.</p>
<p>Inoltre, se un oggetto figlio (author nel nostro esempio) non fosse valido (es: nel sottoform abbiamo omesso qualche dato indispensabile) questo rientrerebbe nel normale flusso di salvataggio dell’oggetto padre. Infatti, gli errori per gli oggetti figli vengono aggiunti all’oggetto padre. Ovviamente è anche possibile specificare di permettere la cancellazione degli oggetti figli.</p>
<p>Dopo aver dato una scorsa veloce ai nested forms, ecco alcuni link per chiunque desiderasse approfondire l&#8217;argomento. Prima di tutto segnaliamo l&#8217; <a href="http://weblog.rubyonrails.org/2009/1/26/nested-model-forms">annuncio ufficiale</a> sul blog di RubyOnRails.org, per poi passare all&#8217; ottimo <a href="http://github.com/alloy/complex-form-examples/">esempio</a> di Eloy Duran (la persona che ha sottoposto questa feature al core team) e concludere in bellezza con l’<a href="http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes">articolo</a> di Ryan Daigle che espone questa nuova funzionalità. </p>
<p>Come ultima cosa, per chi l’avvesse “persa”, vi segnaliamo la <a href="http://carlopecchia.eu/blog/it/2009/01/16/rubyonrails-22-free-book-italian-edition/">versione in italiano</a> (gratuita!) del libro “<strong>RubyOnRails 2.2 - What’s new?</strong>” contenente le novità dell’attuale (2.2) versione di Rails. Buon divertimento a tutti!</p>
]]></content:encoded>
			<wfw:commentRss>http://therubymine.com/2009/03/11/novita-in-rails-23-nested-forms/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
