<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:idx="urn:atom-extension:indexing" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" idx:index="no"><!--
Content-type: Preventing XSRF in IE.

--><generator uri="http://www.google.com/reader">Google Reader</generator><id>tag:google.com,2005:reader/user/17526587290271802812/label/ruby</id><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><title>"ruby" via neolao in Google Reader</title><author><name>neolao</name></author><updated>2009-07-20T21:04:23Z</updated><link rel="self" href="http://feeds.feedburner.com/neolao-reader-ruby" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gr:crawl-timestamp-msec="1248123863834"><id gr:original-id="tag:weblog.rubyonrails.org,2009-07-20:25454">tag:google.com,2005:reader/item/8edafd66c0a2cad6</id><title type="html">Rails 2.3.3: Touching, faster JSON, bug fixes</title><published>2009-07-20T17:28:00Z</published><updated>2009-07-20T18:20:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/aw3vnTCOIXA/rails-2-3-3-touching-faster-json-bug-fixes" type="text/html" /><content xml:base="http://weblog.rubyonrails.org/" xml:lang="en-US" type="html">&lt;p&gt;We’ve released Ruby on Rails version 2.3.3. This release fixes a lot of bugs and introduces a handful of new features.&lt;/p&gt;


	&lt;h4&gt;Active Record&lt;/h4&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;code&gt;touch&lt;/code&gt; is a convenient method to update a record’s timestamp and nothing else. This is extracted from apps whose models “touch” others when they change, such as a comment updating the parent.replies_changed_at timestamp after save and destroy. Timestamping an entire has_many association makes it easy to build a key for fragment caching that covers changes to the parent object and any of its children. This pattern is wrapped up as &lt;code&gt;belongs_to :parent, :touch =&amp;gt; :replies_changed_at&lt;/code&gt;. When the child changes, &lt;code&gt;parent.replies_changed_at&lt;/code&gt; is touched. &lt;code&gt;:touch =&amp;gt; true&lt;/code&gt; is defaults to &lt;code&gt;:touch =&amp;gt; :updated_at&lt;/code&gt;.&lt;/li&gt;
		&lt;li&gt;&lt;code&gt;:primary_key&lt;/code&gt; option for &lt;code&gt;belongs_to&lt;/code&gt; for broader support of legacy schemas and those using a separate &lt;span&gt;UUID&lt;/span&gt; primary key: &lt;code&gt;belongs_to :employee, :primary_key =&amp;gt; &amp;#39;SSN&amp;#39;, :foreign_key =&amp;gt; &amp;#39;EMPID&amp;#39;&lt;/code&gt; &lt;a href="http://github.com/rails/rails/commit/b3ec7b2d03a52e43a4451d522eea7e6499289daa"&gt;changeset&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h4&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;/h4&gt;


	&lt;ul&gt;
	&lt;li&gt;decoding backends for the json and yajl libraries. Both are significantly faster than the default &lt;span&gt;YAML&lt;/span&gt; backend. To get started, install the json gem and set &lt;code&gt;ActiveSupport::JSON.backend = 'JSONGem'&lt;/code&gt;.&lt;/li&gt;
		&lt;li&gt;leaner user-facing encoding &lt;span&gt;API&lt;/span&gt;. Since a &lt;span&gt;JSON&lt;/span&gt; libraries implement &lt;code&gt;to_json&lt;/code&gt; with varying compatibility, safely overriding it is difficult. Most custom &lt;code&gt;to_json&lt;/code&gt; looks like &lt;pre&gt;&lt;code&gt;
def to_json(*encoder_specific_args)
  { :some =&amp;gt; &amp;quot;json representation&amp;quot; }.to_json(*encoder_specific_args)
end&lt;/code&gt;&lt;/pre&gt; so we DRYed the user-facing &lt;span&gt;API&lt;/span&gt; down to a more natural &lt;pre&gt;&lt;code&gt;
def as_json(options = {})
  { :some =&amp;gt; &amp;quot;json representation&amp;quot; }
end&lt;/code&gt;&lt;/pre&gt; without the ugly internal state exposed by overloading &lt;code&gt;to_json&lt;/code&gt; as both public-facing and internal builder &lt;span&gt;API&lt;/span&gt;. Rails 3 splits the &lt;span&gt;API&lt;/span&gt; explicitly, so prepare now by switching from &lt;code&gt;to_json&lt;/code&gt; to &lt;code&gt;as_json&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h4&gt;Other Features&lt;/h4&gt;


	&lt;ul&gt;
	&lt;li&gt;Add :concat option to asset tag helpers to force concatenation. &lt;a href="http://github.com/rails/rails/commit/a491b19502781266b05918cf99b6ba67898e3be9"&gt;changeset&lt;/a&gt; &lt;/li&gt;
		&lt;li&gt;Restore backwards compatibility for AR::Base#to_xml. &lt;a href="http://github.com/rails/rails/commit/7bf9bf3dd6b4c4d78214917f0877536d222098bb"&gt;changeset&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Move from BlueCloth to Markdown for the markdown helper.   Users using BlueCloth to provide their markdown functionality should upgrade to version 1.0.1 or 2.0.5 in order to restore compatibility.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h4&gt;Notable Bug Fixes&lt;/h4&gt;


	&lt;ul&gt;
	&lt;li&gt;Fix errors caused by class-reloading with streaming responses in development mode.  &lt;/li&gt;
		&lt;li&gt;Several fixes to the gem bundling, unpacking and installing system.&lt;/li&gt;
		&lt;li&gt;Make text_area_tag escape contents by default.&lt;/li&gt;
		&lt;li&gt;Make filter_parameters work correctly with array parameters.&lt;/li&gt;
		&lt;li&gt;Thread-safety fixes for postgresql string quoting.&lt;/li&gt;
		&lt;li&gt;Performance fixes for large response bodies.&lt;/li&gt;
	&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0RtirM6W3WL7zxJpfGY-7cV_rs0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0RtirM6W3WL7zxJpfGY-7cV_rs0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0RtirM6W3WL7zxJpfGY-7cV_rs0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0RtirM6W3WL7zxJpfGY-7cV_rs0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/aw3vnTCOIXA" height="1" width="1"/&gt;</content><author><name>David</name></author><gr:likingUser>14334942897146844067</gr:likingUser><gr:likingUser>12447715471119539850</gr:likingUser><gr:likingUser>16054984645934374697</gr:likingUser><gr:likingUser>02834753933776893388</gr:likingUser><gr:likingUser>04989347458541824019</gr:likingUser><gr:likingUser>17262233390441826814</gr:likingUser><gr:likingUser>13239834636805606756</gr:likingUser><gr:likingUser>07153912157670068600</gr:likingUser><gr:likingUser>09443850409449935936</gr:likingUser><gr:likingUser>05020164647124961736</gr:likingUser><gr:likingUser>11317274784951226203</gr:likingUser><gr:likingUser>11643738792030919263</gr:likingUser><gr:likingUser>09943340861466274473</gr:likingUser><gr:likingUser>01668828477147467318</gr:likingUser><gr:likingUser>14183712491488532216</gr:likingUser><gr:likingUser>11723693216348450359</gr:likingUser><gr:likingUser>01841781485024575537</gr:likingUser><gr:likingUser>11057667459664498425</gr:likingUser><gr:likingUser>15759623399910280081</gr:likingUser><gr:likingUser>14952786639567770746</gr:likingUser><gr:likingUser>11283593335727993949</gr:likingUser><gr:likingUser>04605841360574369872</gr:likingUser><gr:likingUser>08653968643708044812</gr:likingUser><gr:likingUser>04058210193209309245</gr:likingUser><gr:likingUser>04852205886132929920</gr:likingUser><gr:likingUser>03687911475357570073</gr:likingUser><gr:likingUser>12511994714661838657</gr:likingUser><gr:likingUser>01853083675296064086</gr:likingUser><gr:likingUser>09212481511790734281</gr:likingUser><gr:likingUser>02144770454107828214</gr:likingUser><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/RidingRails/~3/tH6BNrkOgIk/rails-2-3-3-touching-faster-json-bug-fixes</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1243166439902"><id gr:original-id="http://www.ruby-lang.org/fr/news/2009/05/23/engine-yard-assurera-le-maintien-de-ruby-1-8-6/">tag:google.com,2005:reader/item/3adbd7a34d4ca3a9</id><title type="html">Engine Yard assurera le maintien de Ruby 1.8.6</title><published>2009-05-23T21:52:04Z</published><updated>2009-05-23T21:52:04Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/nxHfNX7M8jE/" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://www.ruby-lang.org/fr/feeds/news.rss"><id>tag:google.com,2005:reader/feed/http://www.ruby-lang.org/fr/feeds/news.rss</id><title type="html">Actualités de Ruby-lang</title><link rel="alternate" href="http://www.ruby-lang.org/fr/feeds/news.rss/" type="text/html" /></source><content type="html">&lt;p&gt;Après un petit délai de mise en route interne, l'équipe de développement de Ruby a officiellement annoncé que le maintien de la branche 1.8.6 ne serait plus assurée par Urabe Shyouhei, mais par Kirk Haines, d'Engine Yard.&lt;/p&gt;
 &lt;p&gt;Cette branche a été lancée en 2007. Depuis lors, l'équipe de ruby-core a fourni du support, notamment par le traitement des bugs rapportés et par la communication d'alertes de sécurité. Ruby 1.8.6 a été un succès, si bien que ses utilisateurs ont manifesté le souhait que ce support perdure, au-delà des dates prévues en interne. Avec un accord de principe, restait à savoir qui allait s'en occuper. Engine Yard s'est proposée et il a été décidé de leur transférer les accès appropriés.&lt;/p&gt;
&lt;p&gt;Du point de vue des utilisateurs, cette annonce officielle n'introduit aucun changement… si ce n'est que les fix et les mises-à-jour devraient sortir à un rythme un peu plus rapide.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fVzfcx79-dBs7ogsrkUNH9j2V9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fVzfcx79-dBs7ogsrkUNH9j2V9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fVzfcx79-dBs7ogsrkUNH9j2V9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fVzfcx79-dBs7ogsrkUNH9j2V9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/nxHfNX7M8jE" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.ruby-lang.org/fr/news/2009/05/23/engine-yard-assurera-le-maintien-de-ruby-1-8-6/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241262873672"><id gr:original-id="http://www.ruby-lang.org/fr/news/2009/05/02/sortie-de-ruby-1-8-7-p160-et-1-8-6-p368/">tag:google.com,2005:reader/item/aec7e51c1f459ae0</id><title type="html">Sortie de Ruby 1.8.7-p160 et 1.8.6-p368</title><published>2009-05-02T10:36:06Z</published><updated>2009-05-02T10:36:06Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/mgQU0pQHJNo/" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://www.ruby-lang.org/fr/feeds/news.rss"><id>tag:google.com,2005:reader/feed/http://www.ruby-lang.org/fr/feeds/news.rss</id><title type="html">Actualités de Ruby-lang</title><link rel="alternate" href="http://www.ruby-lang.org/fr/feeds/news.rss/" type="text/html" /></source><content type="html">&lt;p&gt;Des mises à jour aux releases Ruby 1.8.7 et 1.8.6 sont disponibles.&lt;/p&gt;
&lt;p&gt;Plusieurs douzaines de bugs résolus, notamment pour CVE-2007-1558 et CVE-2008-1447, ainsi que des segfaults. Plus de détails dans les changelogs.&lt;/p&gt;
&lt;p&gt;Les archives :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Checksums :&lt;/p&gt;
&lt;pre&gt;
MD5(ruby-1.8.6-p368.tar.gz)= 508bf1911173ac43e4e6c31d9dc36b8f
SHA256(ruby-1.8.6-p368.tar.gz)= cc8cad3edd02d8c2de3c63a7d8a5cb85af39766dd47360a9c0f26339b101e2a0
SIZE(ruby-1.8.6-p368.tar.gz)= 4602095

MD5(ruby-1.8.6-p368.tar.bz2)= 623447c6d8c973193aae565a5538ccfc
SHA256(ruby-1.8.6-p368.tar.bz2)= 1bd398a125040261f8e9e74289277c82063aae174ada9f300d2bea0a42ccdcc1
SIZE(ruby-1.8.6-p368.tar.bz2)= 3967709

MD5(ruby-1.8.6-p368.zip)= 3d301a4b1aded1922570585bbece2c29
SHA256(ruby-1.8.6-p368.zip)= 8ba4bfd14d2914bfe2c18ffa9da084234be978fd0eee654f7a5c732a1beb0246
SIZE(ruby-1.8.6-p368.zip)= 5619494

MD5(ruby-1.8.7-p160.tar.gz)= 945398f97e2de6dd8ab6df68d10bb1a1
SHA256(ruby-1.8.7-p160.tar.gz)= 47c3d1ae6b3dbda230d04f258304516fc1da571fa757d5e1d8d0104b49045530
SIZE(ruby-1.8.7-p160.tar.gz)= 4818817

MD5(ruby-1.8.7-p160.tar.bz2)= f8ddb886b8a81cf005f53e9a9541091d
SHA256(ruby-1.8.7-p160.tar.bz2)= e524a086212d2142c03eb6b82cd602adcac9dcf8bf60049e89aa4ca69864984d
SIZE(ruby-1.8.7-p160.tar.bz2)= 4137518

MD5(ruby-1.8.7-p160.zip)= 06319bafa225df47fe26dfb52bc174a7
SHA256(ruby-1.8.7-p160.zip)= c56fefbb9e7e186bf9feeb864793ad2a53062ce871b47ab0170316e38f738995
SIZE(ruby-1.8.7-p160.zip)= 5876269
&lt;/pre&gt;
&lt;p&gt;Les changelogs sont compris dans ces archives, ou disponibles directement via :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_368/ChangeLog"&gt;http://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_368/ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_160/ChangeLog"&gt;http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_160/ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DpPmAhZlfO0AnsjHT2j_VkDnYLY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpPmAhZlfO0AnsjHT2j_VkDnYLY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DpPmAhZlfO0AnsjHT2j_VkDnYLY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpPmAhZlfO0AnsjHT2j_VkDnYLY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/mgQU0pQHJNo" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.ruby-lang.org/fr/news/2009/05/02/sortie-de-ruby-1-8-7-p160-et-1-8-6-p368/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1237531434102"><id gr:original-id="http://www.smashingmagazine.com/?p=4968">tag:google.com,2005:reader/item/fffdd2505c7ce5f4</id><category term="How-To" scheme="http://www.smashingmagazine.com" /><category term="coding" scheme="http://www.smashingmagazine.com" /><category term="programming" scheme="http://www.smashingmagazine.com" /><category term="rails" scheme="http://www.smashingmagazine.com" /><category term="ror" scheme="http://www.smashingmagazine.com" /><category term="ruby" scheme="http://www.smashingmagazine.com" /><title type="html">Getting Started With Ruby On Rails</title><published>2009-03-20T02:47:35Z</published><updated>2009-03-23T22:01:23Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/iipd_TJbkWk/" type="text/html" /><content xml:base="http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/" xml:lang="en" type="html">
&lt;p&gt;If you’re a Web developer who’s been curious about Ruby on Rails but has never gotten around to trying it out because you couldn’t find a suitable overview of its advantages, then this article is for you.&lt;/p&gt;
&lt;p&gt;We want to bring Ruby on Rails closer to those who want to take a peek first, without going through an entire tutorial. So, this article is structured a little different from most other introductions out there; hopefully it is more useful because of this.&lt;/p&gt;
&lt;p&gt;I assume you’re &lt;strong&gt;already familiar with some other form of Web development&lt;/strong&gt;, whether PHP, Python, Perl or Java, and relational databases like MySQL. First, we’ll introduce Rails and Ruby and the basic ideas behind both. I’ll teach you just enough Ruby so that you understand the code samples. I’ll tell you how to get Ruby on Rails running on your computer, and I’ll give you an overview of the basic functionality of Rails and demonstrate how Rails’ main parts work together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This tutorial consists of two articles&lt;/strong&gt;: in the current, first article we get started with some basic concepts and essential components of Ruby on Rails. In the second part (it will be published next week) you will learn how to install the engine; you’ll also take a closer look at Rails’ inner workings and discover main advantages of Ruby on Rails. Please &lt;strong&gt;stay tuned&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;After reading these parts, you should have an idea of whether Rails is&lt;/strong&gt; for you. If you get the feeling that it is, I’ll point you to some good tutorials on the Web that you can use to learn Rails. I’ll also provide a lot of further reading recommendations so you can dig as deep into the topic as you like.&lt;/p&gt;
&lt;p&gt;I’m taking this approach because Rails is almost 5 years old now and has become very complex. There are a lot of “Create-your-own-blog-in-5-minutes”-type tutorials out there already, and rather than adding another one, I wanted to provide this kind of rough overview to help you decide whether to take this adventure.&lt;/p&gt;
&lt;p&gt;You may want to take a look at the following related posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;10 Useful Tips For Ruby On Rails Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Idea Behind Rails&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://88.198.60.17/images/introduction-to-rails/rails.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Ruby on Rails was created by David Heinemeier Hansson as a kind of byproduct of Basecamp’s development at 37signals in 2004. Basecamp was built in Ruby because Hansson found PHP and Java not powerful or flexible enough. It was quite an obscure language back then, without the large eco-system available today. To make development easier, Hansson rolled his own Web development framework, based on simple ideas that had proven successful elsewhere. Rails is founded on pragmatism and established paradigms instead of exotic new ideas. And that’s what made it so successful.&lt;/p&gt;
&lt;p&gt;Rails is based on the &lt;strong&gt;Model-View-Controller&lt;/strong&gt; pattern that splits your application into three parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Models&lt;/strong&gt; are your business objects describing the structure and behavior of the problem your application is trying to solve. These are usually backed by an Object-Relational-Mapping framework that persists your objects to a database in the background.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Views&lt;/strong&gt; are the templates that render data to the user and all the logic surrounding presentational aspects of your app.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Controller&lt;/strong&gt; sits at the heart of everything, processing requests from clients, initiating changes in the models and triggering the rendering of the templates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://78.46.108.98/images/introduction-to-rails/mvc.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Rails is “&lt;strong&gt;opinionated software&lt;/strong&gt;.” It doesn’t want to be everything for everyone. It focuses on one way of doing things and streamlines all its parts around that way. That’s not to say there’s no possibility of doing things differently if you need to, but you’ll definitely have it easier if you do things “the Rails way.” And that way happened to be exactly the right one not only for Hansson but for a lot of other developers, too, another important reason for Rails’ success.&lt;/p&gt;
&lt;p&gt;Programmer productivity was the main goal during Rails’ development, not performance. This has led to a &lt;em&gt;lot&lt;/em&gt; of controversy and claims that arise over and over about how Rails can’t scale. This is Rails’ own fault to a certain degree. In its early days, it had the image of a Web development framework messiah of hope and wonder that would lead us all to the promised land were applications wrote themselves. The Rails team didn’t do enough to keep expectations more realistic, and some people became disappointed.&lt;/p&gt;
&lt;p&gt;While it’s true that Ruby on Rails is slower than comparable stacks on PHP or Python, it certainly does scale, as hundreds of successful deployments are proving. You’ll just need to scale sooner and put some thought into it. Remember also that Ruby’s current default implementation is terribly inefficient, but alternatives are on the way. There’s nothing inherently slow about the language, though, as blazing-fast implementations of Smalltalk (a language very similar to Ruby) prove. Ruby will only get faster. As the saying goes, you don’t have a performance problem until you have a performance problem, and all this talk should not scare you yet. You haven’t even started. ;)&lt;/p&gt;
&lt;p&gt;Now, before I introduce you to the framework, let’s get started with Ruby.&lt;/p&gt;
&lt;h3&gt;A Gem From Japan&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://88.198.60.17/images/introduction-to-rails/ruby.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Ruby on Rails owes not only half its name but its entire feel and flexibility to “Ruby,” that neat little language from Japan.&lt;/p&gt;
&lt;p&gt;Ruby came out in 1995 and was developed by Yukihiro Matsumoto, or “Matz” as he’s called in the community. Version 1.0 was released in 1999 and slowly gained recognition in the west from then on.&lt;/p&gt;
&lt;p&gt;A key point in the spread of Ruby was the release of “Programming Ruby,” also called the “Pickaxe” (a reference to its cover illustration), by the Pragmatic Programmers. “Programming Ruby” was the first comprehensive English guide to the language and API.&lt;/p&gt;
&lt;p&gt;Ruby was designed with simple principles in mind. Matz took the most successful and powerful elements from his favorite programming languages — Perl, Smalltak and Lisp — and combined them into one language with easy syntax. One goal was to make Ruby feel “natural, not simple” and to create a language “that was more powerful than Perl, and more object-oriented than Python.” This results in Ruby’s core principle: Everything is an object.&lt;/p&gt;
&lt;h4&gt;Objects&lt;/h4&gt;
&lt;p&gt;Let’s stop here and examine this. Really, &lt;strong&gt;&lt;em&gt;everything&lt;/em&gt; is an object in Ruby&lt;/strong&gt;. &lt;code&gt;True&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt; are objects, literals are objects, classes are objects. You can call a method on a numeric literal:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; 5.next
=&amp;gt; 6&lt;/pre&gt;
&lt;p&gt;Operators in Ruby are nothing but methods:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; 5 * 10
=&amp;gt; 50
&amp;gt;&amp;gt; 5.*(10)  # times-operator called as a method (dot-notation)
=&amp;gt; 50       # with a parameter (in parentheses)&lt;/pre&gt;
&lt;p&gt;Ruby is extremely flexible and open. Almost everything about it can be changed or manipulated at runtime:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can add and remove methods and variables to and from objects.&lt;/li&gt;
&lt;li&gt;You can add and remove methods and variables to and from classes.&lt;/li&gt;
&lt;li&gt;You can truly manipulate &lt;em&gt;any&lt;/em&gt; class this way, even core classes like &lt;code&gt;String&lt;/code&gt; and &lt;code&gt;Integer&lt;/code&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s an example:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; &amp;quot;hi&amp;quot;.repeat(4)
NoMethodError: undefined method `repeat&amp;#39; for &amp;quot;hi&amp;quot;:String
&amp;gt;&amp;gt; class String     # Open the string class and add the method
&amp;gt;&amp;gt;   def repeat(i)
&amp;gt;&amp;gt;     self * i
&amp;gt;&amp;gt;   end
&amp;gt;&amp;gt; end
=&amp;gt; nil
&amp;gt;&amp;gt; &amp;quot;hi&amp;quot;.repeat(4)   # Call it again on a fresh String literal
=&amp;gt; &amp;quot;hihihihi&amp;quot;       # And there it is!&lt;/pre&gt;
&lt;p&gt;Here, I defined the method &lt;code&gt;repeat&lt;/code&gt; on the String core class, and it was immediately available on a string literal.&lt;/p&gt;
&lt;p&gt;And he who giveth, taketh away:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; class String             # Open up the method again
&amp;gt;&amp;gt;   undef_method :repeat   # And remove the method
&amp;gt;&amp;gt; end
=&amp;gt; String
&amp;gt;&amp;gt; &amp;quot;hi&amp;quot;.repeat(4)           # Try to call it
NoMethodError: undefined method `repeat&amp;#39; for &amp;quot;hi&amp;quot;:String&lt;/pre&gt;
&lt;p&gt;I could have also done this with predefined methods. They are no more “special” than the methods we have defined.&lt;/p&gt;
&lt;p&gt;Let’s review the definition of &lt;code&gt;repeat&lt;/code&gt; in the above example for some more interesting tidbits. Note that we’re not saying &lt;code&gt;return&lt;/code&gt; anywhere in the body. That is because in Ruby, &lt;strong&gt;methods always implicitly return the value of their last expression&lt;/strong&gt;. You could of course always jump out of a method by using &lt;code&gt;return&lt;/code&gt; before reaching the last statement, but you don’t have to. The expression we’re returning is &lt;code&gt;self * i&lt;/code&gt;. &lt;code&gt;Self&lt;/code&gt; is equal to &lt;code&gt;this&lt;/code&gt; in Java and &lt;code&gt;$this&lt;/code&gt; in PHP and always refers to the current object. The times-operator on a string repeats the string as often as told by the second operand/parameter, &lt;code&gt;i&lt;/code&gt; in this case.&lt;/p&gt;
&lt;h4&gt;Loops&lt;/h4&gt;
&lt;p&gt;You rarely see manual iterations in Ruby, like &lt;code&gt;for&lt;/code&gt; or &lt;code&gt;while&lt;/code&gt; loops. Instead, Collections come with their own iterators that you can pass blocks to, which are executed for every element in the collection:&lt;/p&gt;
&lt;pre name="code"&gt;a = "Hey "
[1, 2, 3].each do |num|
    puts a * num
end

# Outputs:
# Hey
# Hey Hey
# Hey Hey Hey&lt;/pre&gt;
&lt;p&gt;What you see here is an array literal containing numbers. On that array, the &lt;code&gt;each&lt;/code&gt; method is called, an iterator that takes a block and calls the block for every element in the array. The block starts with the &lt;code&gt;do&lt;/code&gt;, followed by a list of its parameters enclosed in pipe symbols. Here we have one parameter called &lt;code&gt;num&lt;/code&gt; that will take on the value of the array element in each iteration. Inside the block, we’re simply outputting the result of a * num. The definition of &lt;code&gt;*&lt;/code&gt; on Strings is to repeat the string accordingly. We could have put the String inside the Block, but I wanted to demonstrate that blocks have access to their surrounding scope.&lt;/p&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;p&gt;Ruby likes to keep the syntax clean and friendly. You can see this in the above examples. Although heavily influenced by Perl, Ruby doesn’t have Perl’s excessive use of special characters. You can use semicolons to end lines, but you don’t have to (and no Ruby programmer does). You don’t need to surround method parameters with braces in unambiguous situations (although it is recommended you do so if they enhance readability), and you especially don’t need to provide empty braces around an &lt;em&gt;empty&lt;/em&gt; parameter list. That’s what makes accessors look so much like native properties.&lt;/p&gt;
&lt;p&gt;Blocks are framed by &lt;code&gt;do&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt;. You should only use equivalent curly braces if your blocks don’t span several lines. The only significant use of special characters is found at &lt;strong&gt;variable declaration&lt;/strong&gt;. Variables in Ruby are prefixed with special characters to indicate their scope. Variables starting with a lowercase letter are local variables. Variables starting with an uppercase letter are constants. (This means that all classes are constants, too, since classes start with uppercase letters.) Instance variables start with an &lt;code&gt;@&lt;/code&gt;. Class variables that are shared among all instances of a class start with &lt;code&gt;@@&lt;/code&gt;. Finally, global variables all start with a &lt;code&gt;$&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You’ll often find methods ending in &lt;code&gt;?&lt;/code&gt; or &lt;code&gt;!&lt;/code&gt;. These are not special characters. It is merely conventional in Ruby to use question marks for methods that query an object for a Boolean condition, like &lt;code&gt;Array#empty?&lt;/code&gt;, or exclamation marks for methods that are destructible:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; a = [5, 1, 9, 2, 7]   # Create an array and store it in a
=&amp;gt; [5, 1, 9, 2, 7]
&amp;gt;&amp;gt; a.sort                # sort merely returns a new, sorted array
=&amp;gt; [1, 2, 5, 7, 9]
&amp;gt;&amp;gt; a
=&amp;gt; [5, 1, 9, 2, 7]       # a still is in its original order
&amp;gt;&amp;gt; a.sort!               # sort! instead sorts the original array
=&amp;gt; [1, 2, 5, 7, 9]
&amp;gt;&amp;gt; a
=&amp;gt; [1, 2, 5, 7, 9]       # a was changed&lt;/pre&gt;
&lt;h4&gt;Conditionals&lt;/h4&gt;
&lt;p&gt;Conditionals in Ruby are very similar to other programming languages, with two notable exceptions. First, it’s possible to put a conditional &lt;em&gt;after&lt;/em&gt; the statement it protects to make the code more readable:&lt;/p&gt;
&lt;pre name="code"&gt;execute_dangerous_operation() if user.is_authorized?

# is equal to

if user.is_authorized?
  execute_dangerous_operation()
end&lt;/pre&gt;
&lt;p&gt;Secondly, Ruby has not only an &lt;code&gt;if&lt;/code&gt; but an &lt;code&gt;unless&lt;/code&gt;. This is a syntactic nicety for when you want to check for the &lt;em&gt;absence&lt;/em&gt; of a condition in a more readable manner:&lt;/p&gt;
&lt;pre name="code"&gt;unless user.is_admin?
  user.delete
else
  raise "Can't delete admins"
end&lt;/pre&gt;
&lt;h4&gt;Symbols&lt;/h4&gt;
&lt;p&gt;Sometimes you’ll see names starting with a &lt;code&gt;:&lt;/code&gt; (colon). These are a very special feature of Ruby called symbols. Symbols can be used to index hashes or mark states in a variable like you would with an ENUM in C. They are very similar to Strings but also very different. The point about symbols is that they don’t really occupy space in memory, and the same symbol literal always resolves to the exact same symbol:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;gt;&amp;gt; &amp;quot;a&amp;quot;.object_id  # object_id returns Ruby&amp;#39;s internal identifier for an object
=&amp;gt; 3477510
&amp;gt;&amp;gt; &amp;quot;a&amp;quot;.object_id
=&amp;gt; 3475550        # a new object on the heap
&amp;gt;&amp;gt; :a.object_id
=&amp;gt; 184178
&amp;gt;&amp;gt; :a.object_id
=&amp;gt; 184178         # the same literal refers to the exact same Symbol object&lt;/pre&gt;
&lt;p&gt;You’ll find them very often as parameters to methods, where they indicate how a method should work,&lt;/p&gt;
&lt;pre name="code"&gt;User.find(:all)   #find all users
User.find(:first) #find the first user&lt;/pre&gt;
&lt;p&gt;or as pointers to methods and variables (see the &lt;code&gt;undef_method&lt;/code&gt; example in the “Objects” paragraph above).&lt;/p&gt;
&lt;h4&gt;Classes and Modules&lt;/h4&gt;
&lt;p&gt;Ruby supports single inheritance only, but for added flexibility it supports a feature called &lt;strong&gt;Mixins&lt;/strong&gt;. In Ruby, it’s possible to define &lt;em&gt;Modules&lt;/em&gt; that contain Methods and constants and to include these modules in a class via the &lt;code&gt;include&lt;/code&gt; method. This way, you can extend the functionality of a class very easily.&lt;/p&gt;
&lt;p&gt;Many of Ruby’s core classes even use this mechanism.&lt;code&gt;Array&lt;/code&gt; and &lt;code&gt;Hash&lt;/code&gt;, for example, both include the &lt;code&gt;Enumerable&lt;/code&gt; module to provide a lot of convenience methods for iterating over their contents.&lt;/p&gt;
&lt;p&gt;Often, Modules pose certain requirements to classes that include them. The &lt;code&gt;Enumerable&lt;/code&gt; Module, for example, requires classes to provide at least an &lt;code&gt;each&lt;/code&gt; method and an implementation of &lt;code&gt;&amp;lt;=&amp;gt;&lt;/code&gt;, too, if its sorting features are to be used.&lt;/p&gt;
&lt;p&gt;Modules also serve other purposes. Most importantly, they can be used to organize code into namespaces. Because classes are constants (which means you can’t assign another class to the same name), they can be stored in modules. These modules can then be nested to form namespaces.&lt;/p&gt;
&lt;p&gt;These paragraphs probably won’t enable you to write Ruby programs, but you should be able to understand the code samples in this article now. If you want to explore Ruby a little, try the great interactive tutorial at &lt;a href="http://tryruby.hobix.com"&gt;Try Ruby&lt;/a&gt;, or take a peek at one of the books listed at the end of this article. If you just want to see some more code samples, check out the &lt;a href="http://en.wikipedia.org/wiki/Ruby_(programming_language"&gt;Wikipedia page on Ruby&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the second part of this tutorial we will get rolling with Ruby on Rails, install the engine, take a closer look at Rails’ inner workings and discover main advantages of Ruby on Rails. Please stay tuned.&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;
&lt;p&gt;You may want to take a look at the following related posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;10 Useful Tips For Ruby On Rails Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;About the Author&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Jan Varwig is a programming language enthusiast, currently writing his CS diploma thesis about server-side JavaScript, and a software developer with 10 years of experience working for &lt;a href="http://9elements.com/"&gt;9elements&lt;/a&gt; and as an independent freelancer. His blog and CV can be found at &lt;a href="http://jan.varwig.org/"&gt;jan.varwig.org&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;


&lt;hr&gt;

&lt;p&gt;&lt;small&gt;© Jan Varwig for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2009. |
&lt;a href="http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Permalink&lt;/a&gt; | 
&lt;a href="http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/#comments"&gt;46 comments&lt;/a&gt; | 
&lt;a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Add to del.icio.us&lt;/a&gt; | &lt;a title="Bookmark in Digg" href="http://digg.com/submit?phase=2&amp;amp;url=http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Digg this&lt;/a&gt; | &lt;a title="Bookmark in StumbleUpon" href="http://www.stumbleupon.com/submit?url=http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Stumble on StumbleUpon!&lt;/a&gt; | &lt;a title="Tweet us!" href="http://twitter.com/home?status=@tweetmeme%20@smashingmag%20Reading%20&amp;#39;Getting%20Started%20With%20Ruby%20On%20Rails&amp;#39;%20http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Tweet it!&lt;/a&gt; | &lt;a title="Bookmark in Reddit" href="http://reddit.com/submit?url=http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/"&gt;Submit to Reddit&lt;/a&gt; | &lt;a href="http://forum.smashingmagazine.com/"&gt;Forum Smashing Magazine&lt;/a&gt;

&lt;br&gt;
Post tags: &lt;a href="http://www.smashingmagazine.com/tag/coding/" rel="tag"&gt;coding&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/programming/" rel="tag"&gt;programming&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/rails/" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/ror/" rel="tag"&gt;ror&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/ruby/" rel="tag"&gt;ruby&lt;/a&gt;&lt;br&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nu9GSr06c9_hvXDldrfoX9yuOBY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nu9GSr06c9_hvXDldrfoX9yuOBY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nu9GSr06c9_hvXDldrfoX9yuOBY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nu9GSr06c9_hvXDldrfoX9yuOBY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/iipd_TJbkWk" height="1" width="1"/&gt;</content><author><name>Jan Varwig</name></author><gr:likingUser>09001021195358874434</gr:likingUser><gr:likingUser>09679611680551067979</gr:likingUser><source gr:stream-id="feed/http://rss1.smashingmagazine.com/feed/"><id>tag:google.com,2005:reader/feed/http://rss1.smashingmagazine.com/feed/</id><title type="html">Smashing Magazine Feed</title><link rel="alternate" href="http://www.smashingmagazine.com/" type="text/html" /></source><feedburner:origLink>http://www.smashingmagazine.com/2009/03/19/getting-started-with-ruby-on-rails/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1236815597003"><id gr:original-id="tag:weblog.rubyonrails.org,2009-03-11:24875">tag:google.com,2005:reader/item/24a065427acbff2b</id><category term="Documentation" /><title type="html">Update on Rails Guides and Documentation</title><published>2009-03-11T18:57:00Z</published><updated>2009-03-11T20:02:24Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/cexVVKl327M/rails-guides-gets-a-team-and-a-mailing-list" type="text/html" /><content xml:base="http://weblog.rubyonrails.org/" xml:lang="en-US" type="html">&lt;p&gt;We have been working on the &lt;a href="http://guides.rubyonrails.org"&gt;Rails guides&lt;/a&gt; for some months now. With substantial contributions from &lt;a href="http://guides.rubyonrails.org/credits.html"&gt;a variety of authors&lt;/a&gt;, things are looking even better in the &lt;a href="http://guides.rails.info"&gt;next version&lt;/a&gt; of the guides. That makes this the right time to take the overall documentation efforts to the next level.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Announcing the Documentation Team&lt;/strong&gt;&lt;br&gt;
We’re very happy to announce a formal &lt;a href="http://guides.rails.info/credits.html"&gt;documentation team&lt;/a&gt; – consisting of &lt;a href="http://www.hashref.com"&gt;Xavier Noria&lt;/a&gt;, Mike Gunderloy and myself. However, eventually Mike and I will be just acting as advisors to the documentation team. So we’re definitely looking to empower some new faces here. If you’ve been working on improving the documentation and guides, keep up the good work and you’ll be on the team soon enough!&lt;/p&gt;


	&lt;p&gt;The documentation team will be to responsible for keeping the guides and &lt;span&gt;API&lt;/span&gt; documentation up-to-date, working to improve the Rails documentation, and also helping more people contribute to the documentation efforts.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Documentation Mailing List and &lt;span&gt;IRC&lt;/span&gt;&lt;/strong&gt;&lt;br&gt;
As part of the renewed documentation effort, we’re launching a mailing list. So go ahead and subscribe to &lt;a href="http://groups.google.com/group/rubyonrails-docs"&gt;rubyonrails-docs&lt;/a&gt;. The mailing list will be the main point of communication with the documentation team. If you have any suggestions or need any help, please post it to the mailing list. For quick questions, you can also find some of the team in the #docrails room on &lt;span&gt;IRC&lt;/span&gt; most hours of the day.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;How to Contribute&lt;/strong&gt;&lt;br&gt;
If you’re new to the Rails documentation process (or want to get involved for the first time!), you might want to have a look at the &lt;a href="http://guides.rails.info/contributing_to_rails.html#contributingtothe-rails-documentation"&gt;Contributing to the Rails Documentation&lt;/a&gt; section of the &lt;em&gt;Contributing to Rails&lt;/em&gt; guide.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zB0mCdnxly-EqyxY6WaiJr8wur4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zB0mCdnxly-EqyxY6WaiJr8wur4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zB0mCdnxly-EqyxY6WaiJr8wur4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zB0mCdnxly-EqyxY6WaiJr8wur4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/cexVVKl327M" height="1" width="1"/&gt;</content><author><name>Pratik Naik</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/RidingRails/~3/Wy7Ie6o7Td0/rails-guides-gets-a-team-and-a-mailing-list</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1236700205480"><id gr:original-id="tag:weblog.rubyonrails.org,2009-03-10:24876">tag:google.com,2005:reader/item/22cfb999cf8219c9</id><category term="Activism" /><category term="magazines" /><title type="html">Rails Magazine #1 is Out</title><published>2009-03-10T14:01:00Z</published><updated>2009-03-10T14:02:07Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/Fvpy6YCOsOg/rails-magazine-1-is-out" type="text/html" /><content xml:base="http://weblog.rubyonrails.org/" xml:lang="en-US" type="html">&lt;p&gt;One of the measures of the health of a development platform is its ability to support a vibrant ecosystem of users, contributors, speakers, and authors. By this measure, Rails remains in excellent shape. The latest evidence: the release of the first issue of &lt;a href="http://railsmagazine.com/"&gt;Rails Magazine&lt;/a&gt; – 36 pages of full-color glossy print.&lt;/p&gt;


	&lt;p&gt;The first issue includes 9 articles covering everything from delegation in Ruby to using Saasy for subscription-based applications to performance analysis and getting started with JRuby. The full content will be available on the web shortly, but if you’d like to support this effort (and help ensure that it doesn’t go away) you can &lt;a href="http://magcloud.com/browse/Issue/7830"&gt;order a paper copy&lt;/a&gt; for $8 in the US, UK, or Canada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mFSyfCrNPm5lMczdM2Hurarqp6U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mFSyfCrNPm5lMczdM2Hurarqp6U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mFSyfCrNPm5lMczdM2Hurarqp6U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mFSyfCrNPm5lMczdM2Hurarqp6U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/Fvpy6YCOsOg" height="1" width="1"/&gt;</content><author><name>Mike Gunderloy</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/RidingRails/~3/hqvrqoOefeE/rails-magazine-1-is-out</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1235607806306"><id gr:original-id="http://www.smashingmagazine.com/?p=4410">tag:google.com,2005:reader/item/637d4dfd9ce8a6ac</id><category term="How-To" scheme="http://www.smashingmagazine.com" /><category term="rails" scheme="http://www.smashingmagazine.com" /><category term="ruby" scheme="http://www.smashingmagazine.com" /><category term="tools" scheme="http://www.smashingmagazine.com" /><title type="html">10 Useful Tips For Ruby On Rails Developers</title><published>2009-02-25T20:21:21Z</published><updated>2009-02-27T14:03:23Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/9g_ZuQL3LWI/" type="text/html" /><content xml:base="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/" xml:lang="en" type="html">
&lt;p&gt;&lt;em&gt;By Greg Borenstein and Michael ‘MJFreshyFresh’ Jones&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Rails is an model-view-controller Web framework written in the Ruby programming language. One of its great appeals is being able to quickly crank out &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD&lt;/a&gt;-based Web applications. A big advantage of Rails over other frameworks is that it values &lt;a href="http://en.wikipedia.org/wiki/Convention_over_Configuration"&gt;convention over configuration&lt;/a&gt;. If you follow the correct conventions, you can avoid lengthy configuration of files, and things just work! Therefore, you spend less time writing boring config files and more time focusing on business logic.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;&lt;img src="http://78.46.108.98/images/ruby-on-rails-tips/rails.jpg" width="300" height="356" alt="Ruby on Rails logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, &lt;strong&gt;we love Rails&lt;/strong&gt;. But don’t get us wrong. Like any tool, it’s not the perfect solution to every problem. A lot of the biggest complaints people have about the framework come from using it in situations where something simpler, smaller and more lightweight would do just fine. We love &lt;a href="http://sinatra.github.com/"&gt;Sinatra&lt;/a&gt; for anything with minimal server-side involvement. &lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt; is another excellent minimal framework. And nothing beats apps that run completely in the browser with JavaScript: they can be deployed nearly for free, can scale almost infinitely and never have to be restarted.&lt;/p&gt;
&lt;p&gt;In the overview below we present &lt;strong&gt;10 useful tips, ideas and resources for Ruby on Rails-developers&lt;/strong&gt; (both newbies and professionals). Please feel free to share your tips, ideas and suggestions in the comments to this post!&lt;/p&gt;
&lt;h3&gt;1. Plug-Ins Save Time&lt;/h3&gt;
&lt;p&gt;Rails has a well defined plug-in structure that enables you to easily install and use plug-ins in your application.	David Heinemeier Hansson, the father of Rails, once stated that he uses five to six plug-ins in each Rails application.&lt;/p&gt;
&lt;p&gt;There’s an old nugget of developer wisdom that “the best code is no code at all.” Part of what makes us so &lt;strong&gt;productive when developing in Rails&lt;/strong&gt; is that all the code that we &lt;em&gt;don’t&lt;/em&gt; have to write because someone else in the community has already written a plug-in that provides the functionality we need.&lt;/p&gt;
&lt;p&gt;There are a few ways to install a plug-in in Rails, however the most common is using script:&lt;/p&gt;
&lt;pre name="code"&gt;# Install from a git repo
script/plugin install git://github.com/mislav/will_paginate.git

# Install from a url
script/plugin install http://topfunky.net/svn/plugins/calendar_helper&lt;/pre&gt;
&lt;p&gt;You can save yourself a ton of time and hassle by becoming good at searching the Web (and especially &lt;a href="http://http//github.com"&gt;the almighty GitHub&lt;/a&gt;). A couple of places to find plug-ins are &lt;a href="http://dev.rubyonrails.org/svn/rails/plugins/"&gt;Core Rails&lt;/a&gt;, &lt;a href="http://railsify.com/"&gt;Railsify&lt;/a&gt; and &lt;a href="http://agilewebdevelopment.com/plugins/index"&gt;Rails Plug-in Directory&lt;/a&gt;. Need to integrate with an existing API or consume some kind of standard format data? Need &lt;a href="http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids"&gt;tagging&lt;/a&gt;, &lt;a href="http://github.com/mislav/will_paginate/tree/master"&gt;pagination&lt;/a&gt;, or another common Web application feature? Odds are that some great Rails or Ruby developer out there already has a project going that will get you at least most of the way there.&lt;/p&gt;
&lt;h3&gt;2. Testing is Fun and Easy with Rspec&lt;/h3&gt;
&lt;p&gt;For most people, the word “test” brings back scary memories of school exams. When working with Rails, however, &lt;strong&gt;automated testing&lt;/strong&gt; can make your development experience much more enjoyable. While lots of people have strong, nearly religious, opinions about them, at their core, automated tests are just little helper programs you write that run bits of your main code to make sure they do the right thing. When done right, testing will improve your workflow and increase your confidence in the results.&lt;/p&gt;
&lt;p&gt;Rails ships with a test framework baked right in, but for the last couple of years all the cool kids have been using an alternative called &lt;a href="http://rspec.info/"&gt;Rspec&lt;/a&gt;. Rspec’s biggest advantage is its syntax for specifying tests:&lt;/p&gt;
&lt;pre name="code"&gt;describe "My Cool library" do
  before do
    @cool = Cool.new
  end

  it "should be full of penguins." do
    @cool.get_penguins!
    @cool.penguin_count.should == 10
  end

  it "should melt if it gets too warm"
end&lt;/pre&gt;
&lt;p&gt;What’s &lt;strong&gt;great about Rspec’s syntax is how much English it uses&lt;/strong&gt;. The describe block that sets the context and each assertion within it takes strings that you use to explain what your code should do. Often, this is the most important stage: you sit down to write the assertion, getting as far as you can, and then you think, “Right, what should this code actually do then?”&lt;/p&gt;
&lt;p&gt;Because Rspec lets you leave off the block that implements the assertion (as in the second melt example), you can quickly brainstorm all of your functionality, and then go back and implement the tests later as you write the code. In the meantime, Rspec will consider those tests as “pending” and give you little reminders about them in your test runs.&lt;/p&gt;
&lt;p&gt;Besides helping you write code in the first place, another great thing about tests is that, once you have enough of them, they let you see how all of your code is related, making it easy to know if your recent change broke anything else in your application. &lt;strong&gt;Rspec makes it easy to get good test coverage&lt;/strong&gt; through the use of custom generators that create the tests right along with the rest of your code:&lt;/p&gt;
&lt;pre name="code"&gt;$ script/generate rpsec_scaffold MyModel&lt;/pre&gt;
&lt;p&gt;Once you’ve got tests to ensure that the basic functionality works successfully, you can make changes and add new code with confidence without worrying about introducing invisible bugs. As long as you run your tests regularly, you’ll know as soon as you break something. And as GI Joe taught us, knowing is half the battle!&lt;/p&gt;
&lt;h3&gt;3. Save Time, Use Rake&lt;/h3&gt;
&lt;p&gt;Projects often include more than just application-specific code. Sample data have to be created, Web services have to be queried, files have to be moved, code snippets rewritten, etc. Resist the urge to shell script or to cram in a migration or controller. Use &lt;a href="http://www.railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial"&gt;Rake&lt;/a&gt;. It rocks!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial"&gt;&lt;img src="http://88.198.60.17/images/ruby-on-rails-tips/rake.gif" width="480" height="383" alt="Rake"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rake.rubyforge.org/"&gt;Rake&lt;/a&gt; is a build tool written in Ruby, very similar to &lt;a href="http://www.gnu.org/software/make/"&gt;make&lt;/a&gt;. Rails projects have several Rake tasks already defined; to see these, run the rake -T command.&lt;/p&gt;
&lt;pre name="code"&gt;macbook$ rake -T

rake data:bootstrap		# load in some basic data [caution: will nuke and replcace cate...
rake db:create:all		# Create all the local databases defined in config/database.yml
rake db:drop			# Drops the database for the current RAILS_ENV
...
rake ts:run				# Stop if running, then start a Sphinx searchd daemon using Thi...
rake ts:start			# Start a Sphinx searchd daemon using Thinking Sphinx's settings
rake ts:stop			# Stop Sphinx using Thinking Sphinx's settings&lt;/pre&gt;
&lt;p&gt;Adding your own Rake tasks is quite easy. In the example below, you see that the task is name-spaced and has a description and task name, allowing you to write in Ruby.&lt;/p&gt;
&lt;pre name="code"&gt;namespace :data do
  desc &amp;quot;load in some basic data [caution: will nuke and replcace categories, categorizations and inventory items]&amp;quot;
  task :bootstrap =&amp;gt; :environment do
    # clean out existing:
    [Category, Categorization, InventoryItem].each{|m| m.find(:all).each{|i| i.destroy}}
    InventoryItem.create! :name =&amp;gt; &amp;quot;Compass&amp;quot;
    c = Category.create! :name =&amp;gt; &amp;quot;Basic Apparel&amp;quot;

    [&amp;quot;Men’s Heavyweight Cotton T&amp;quot;,
    &amp;quot;Men’s Heavyweight Polo&amp;quot;,
    &amp;quot;Women’s Organic Cotton Fitted T&amp;quot;,
    &amp;quot;Women’s Fitted Polo&amp;quot;,
    &amp;quot;Children’s T-Shirt&amp;quot;,
    &amp;quot;Jr’s Distressed Hoodie&amp;quot;,
    &amp;quot;Hemp Messenger Bag&amp;quot;].each do |name|
      c.inventory_items.create! :name =&amp;gt; name
    end

   ...

end&lt;/pre&gt;
&lt;h3&gt;4. Track Application Exceptions&lt;/h3&gt;
&lt;p&gt;Exceptions happen, and when they do, you want to know about them! Your client shouldn’t be the one telling you that a problem has occurred; you should already be aware of the issue and working to resolve it. Exception notification has been available in Rails for a while. There are &lt;a href="http://github.com/rails/exception_notification/tree/master"&gt;exception notification plug-ins&lt;/a&gt; that make it easy to be notified. However, some services such as &lt;a href="http://hoptoadapp.com/"&gt;Hop Toad&lt;/a&gt; and &lt;a href="http://getexceptional.com/"&gt;Get Exceptional&lt;/a&gt; add a lot of value to your application.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://getexceptional.com/"&gt;&lt;img src="http://78.46.108.98/images/ruby-on-rails-tips/exc.jpg" alt="Screenshot" width="501" height="403"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both of these services are easy to install and provide a great UI for tracking your exceptions. You can even sign up for a free account to try things out.&lt;/p&gt;
&lt;p&gt;By &lt;strong&gt;centralizing the application exceptions&lt;/strong&gt;, you are able to see how frequently these exceptions occur, what environment they occur in (a particular browser? a particular location?), what parameters were present and the full stack trace. This centralization of data helps you see patterns and resolve the issue more quickly, which results in a better application and happier users.&lt;/p&gt;
&lt;h3&gt;5. Mix and match between frameworks and servers with Rails on Rack&lt;/h3&gt;
&lt;p&gt;As of &lt;a href="http://weblog.rubyonrails.org/2009/2/1/rails-2-3-0-rc1-templates-engines-rack-metal-much-more"&gt;version 2.3&lt;/a&gt;, Rails runs on top of &lt;a href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt;. Rack makes it possible to mix and match between Ruby Web frameworks and servers. If you’re using a framework that supports it (like Rails, Sinatra, &lt;a href="http://camping.rubyforge.org/files/README.html"&gt;Camping&lt;/a&gt;, etc), you can choose from any of the servers that do also (&lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt;, &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin&lt;/a&gt;, &lt;a href="http://www.modrails.com/"&gt;Phusion Passenger&lt;/a&gt;, etc.), and vice versa.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rack.rubyforge.org/"&gt;&lt;img src="http://78.46.108.98/images/ruby-on-rails-tips/rack-logo.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition to introducing all kinds of new options for deployment, this change means that Rails now has access to the exciting world of Rack middleware. Because Rack lives at the intersection of your app and your server, it can provide all kinds of common functionality directly. A great example of this is &lt;a href="http://tomayko.com/src/rack-cache/"&gt;Rack::Cache&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Rack::Cache provides a &lt;strong&gt;caching layer&lt;/strong&gt; for your application that you control simply by sending the correct headers in your responses. In other words, all you have to do is install a bit of code in the Rack config file:&lt;/p&gt;
&lt;pre name="code"&gt;require &amp;#39;rack/cache&amp;#39;

use Rack::Cache,
  :metastore =&amp;gt; &amp;#39;file:/tmp/rack_meta_dir&amp;#39;,
  :entitystore =&amp;gt; &amp;#39;file:/tmp/rack_body_dir&amp;#39;,
  :verbose =&amp;gt; true&lt;/pre&gt;
&lt;p&gt;And make sure your controller actions send the right headers (for example, by setting &lt;code&gt;request.headers["Cache-Control"]&lt;/code&gt;) and Bam!, you’ve got caching.&lt;/p&gt;
&lt;h3&gt;6. Easy Data Dumping&lt;/h3&gt;
&lt;p&gt;You’ll often need to get data from production to dev or dev to your local or your local to another developer’s local. One plug-in we use over and over is &lt;a href="http://github.com/adamwiggins/yaml_db/tree/master"&gt;Yaml_db&lt;/a&gt;. This nifty little plug-in enables you to &lt;strong&gt;dump or load data by issuing a Rake command&lt;/strong&gt;. The data is persisted in a yaml file located in db/data.yml. This is very portable and easy to read if you need to examine the data.&lt;/p&gt;
&lt;pre name="code"&gt;rake db:data:dump

example data found in db/data.yml

---
campaigns:
  columns:
  - id
  - client_id
  - name
  - created_at
  - updated_at
  - token
  records:
  - - "1"
    - "1"
    - First push
    - 2008-11-03 18:23:53
    - 2008-11-03 18:23:53
    - 3f2523f6a665
  - - "2"
    - "2"
    - First push
    - 2008-11-03 18:26:57
    - 2008-11-03 18:26:57
    - 9ee8bc427d94&lt;/pre&gt;
&lt;h3&gt;7. Keep Your Constants in One Place&lt;/h3&gt;
&lt;p&gt;All applications have constants, variables that are defined with data that don’t change, such as the name of the application, the tagline, values for crucial options, etc. We use the &lt;strong&gt;Rails initializer feature&lt;/strong&gt; to define a &lt;code&gt;config/initializers/site_config.rb &lt;/code&gt;for housing these constants. By using this convention, all developers on a project know exactly where to look for the constants and can quickly make changes.&lt;/p&gt;
&lt;p&gt;Many people have questions about when to put a constant in the &lt;code&gt;site_config.rb&lt;/code&gt; instead of the class it is used in. For a constant that are only used in a single class, we suggest putting it in that class. However, if the constant is used in more than one location, put it in the site_config.rb. For more on constants, have a look at &lt;a href="http://rubylearning.com/satishtalim/ruby_constants.html"&gt;Rubylearning&lt;/a&gt;.&lt;/p&gt;
&lt;pre name="code"&gt;# File config/initializers/site_config.rb

REPORT_RECIPIENT = 'jenn@scg.com'
REPORT_ADMIN = 'michael@scg.com'&lt;/pre&gt;
&lt;h3&gt;8. Console for Working on Code&lt;/h3&gt;
&lt;p&gt;Sometimes you may have code that you’re curious about. Will it work this way? What’s the output? What can I change? Rails ships with a wonderful tool called &lt;a href="http://wiki.rubyonrails.org/rails/pages/Console"&gt;console&lt;/a&gt;. By running script/console you will enter an &lt;strong&gt;interactive environment where you can access your Rails code&lt;/strong&gt; just as though the application were running.&lt;/p&gt;
&lt;p&gt;This environment is incredibly helpful. It is often used in production environments at times to quickly peek at data without having to log in to the database. To do this in a production environment, use script/console RAILS_ENV=production:&lt;/p&gt;
&lt;pre name="code"&gt;macbook$ ./script/console
Loading development environment (Rails 2.1.1)
&amp;gt;&amp;gt; a = Album.find(:first)
=&amp;gt; #
&amp;gt;&amp;gt;&lt;/pre&gt;
&lt;h3&gt;9. Ugly Views Getting You Down? Try Haml.&lt;/h3&gt;
&lt;p&gt;Views are how your Rails application generates the HTML pages your visitors actually see and use. By default, Rails uses the &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html"&gt;ERb templating system&lt;/a&gt; to let you embed bits of Ruby in your markup so that you can insert your data as needed. However, recent versions of Rails let you take your pick of templating languages, and nowadays the Ruby interwebs have been all abuzz about an alternative system called &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://haml.hamptoncatlin.com/"&gt;&lt;img src="http://88.198.60.17/images/ruby-on-rails-tips/haml.gif" width="480" height="399" alt="HAML"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Haml is marketed as “markup Haiku.” Its &lt;strong&gt;CSS-inspired syntax lets you focus on the semantics of your data&lt;/strong&gt; rather than worrying about closing all the angle brackets that come with using ERb and HTML.&lt;/p&gt;
&lt;p&gt;For comparison, here’s a bit of markup in standard ERb:&lt;/p&gt;
&lt;pre name="code"&gt;&amp;lt;%= print_date %&amp;gt;
&amp;lt;%= current_user.address %&amp;gt;

&amp;lt;%= current_user.email %&amp;gt;
&amp;lt;%= h current_user.bio %&amp;gt;
&lt;/pre&gt;
&lt;p&gt;And here’s the equivalent in Haml:&lt;/p&gt;
&lt;pre name="code"&gt;#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right_column
    #email= current_user.email
    #bio= h(current_user.bio)&lt;/pre&gt;
&lt;p&gt;Haml’s not for everyone, and many people will find this syntax quite alien. But if you value concision and are fluent in CSS, Haml may be just the ticket.&lt;/p&gt;
&lt;h3&gt;10. Know Where to Watch What’s Happening in Rails&lt;/h3&gt;
&lt;p&gt;Rails and Ruby both have &lt;strong&gt;large and active communities&lt;/strong&gt; that constantly generate changes, improvements and new projects. Trying to keep up with all the activity can be daunting, but it’s essential if you want to benefit from the community’s best work and continue to increase your Rails and Ruby knowledge.&lt;/p&gt;
&lt;p&gt;Thankfully, a number of sources aggregate some of the most important activity:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub has a &lt;a href="http://github.com/popular/watched"&gt;most-watched projects page&lt;/a&gt;, which is a great place to start.&lt;/li&gt;
&lt;li&gt;Similarly, RubyInside’s monthly &lt;a href="http://www.rubyinside.com/whats-hot-on-github-january-2009-1450.html"&gt;What’s Hot on Github&lt;/a&gt; and&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/blog/310-github-rebase-11"&gt;the GitHub blog’s Rebase series&lt;/a&gt; both feature selections of interesting work from the website.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;	There’s also a whole universe of Rails training:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.railsenvy.com/"&gt;Rails Envy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://peepcode.com/"&gt;PeepCode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; and news aggregators:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;follow &lt;a href="http://twitter.com/ruby_news"&gt;ruby_news&lt;/a&gt; on Twitter,&lt;/li&gt;
&lt;li&gt;subscribe to &lt;a href="http://www.rubyinside.com/"&gt;Ruby Inside&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;subscribe to &lt;a href="http://rubyflow.com/"&gt;Ruby Flow&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another avenue is the &lt;a href="http://groups.google.com/group/rubyonrails-core"&gt;Rails Core mailing list&lt;/a&gt; and the #rails-core IRC channel.&lt;/p&gt;
&lt;h4&gt;About the authors&lt;/h4&gt;
&lt;p&gt;This guest post was written by Greg Borenstein and Michael ‘MJFreshyFresh’ Jones, lead Ruby developers for &lt;a href="http://stepchangegroup.com/"&gt;StepChange Group&lt;/a&gt;. StepChange designs, develops and manages social media widgets and Facebook applications in partnership with leading brands and agencies. Outside of work, Greg builds &lt;a href="http://www.urbanhonking.com/ideasfordozens/2009/02/rad_talk_roundup.html"&gt;drum-playing robots&lt;/a&gt; and other hardware hacks, and MJ leads a local group of &lt;a href="http://www.unicyclebastards.com/"&gt;Unicycle-borne pirates&lt;/a&gt;. They live and work in beautiful, moist Portland, Oregon.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;


&lt;hr&gt;

&lt;p&gt;&lt;small&gt;© Crystal Beasley for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2009. |
&lt;a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Permalink&lt;/a&gt; | 
&lt;a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/#comments"&gt;53 comments&lt;/a&gt; | 
&lt;a title="Bookmark in del.icio.us" href="http://del.icio.us/post?url=http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Add to del.icio.us&lt;/a&gt; | &lt;a title="Bookmark in Digg" href="http://digg.com/submit?phase=2&amp;amp;url=http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Digg this&lt;/a&gt; | &lt;a title="Bookmark in StumbleUpon" href="http://www.stumbleupon.com/submit?url=http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Stumble on StumbleUpon!&lt;/a&gt; | &lt;a title="Bookmark in Reddit" href="http://reddit.com/submit?url=http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Submit to Reddit&lt;/a&gt; | &lt;a title="Bookmark in Facebook" href="http://www.facebook.com/sharer.php?u=http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/"&gt;Submit to Facebook&lt;/a&gt; | &lt;a href="http://www.technorati.com/search/http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/" title="Linking blogs to this article, on Technorati"&gt;Who is linking?&lt;/a&gt; | &lt;a href="http://forum.smashingmagazine.com/"&gt;Forum Smashing Magazine&lt;/a&gt;

&lt;br&gt;
Post tags: &lt;a href="http://www.smashingmagazine.com/tag/rails/" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/ruby/" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/tag/tools/" rel="tag"&gt;tools&lt;/a&gt;&lt;br&gt;
&lt;/small&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?i=9g_ZuQL3LWI:UwPKXGQWGOc:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?i=9g_ZuQL3LWI:UwPKXGQWGOc:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?i=9g_ZuQL3LWI:UwPKXGQWGOc:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:guobEISWfyQ"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?i=9g_ZuQL3LWI:UwPKXGQWGOc:guobEISWfyQ" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/SmashingMagazine?a=9g_ZuQL3LWI:UwPKXGQWGOc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/SmashingMagazine?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-uFvmSe-U8yPHOOgeYeei_WgVII/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-uFvmSe-U8yPHOOgeYeei_WgVII/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-uFvmSe-U8yPHOOgeYeei_WgVII/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-uFvmSe-U8yPHOOgeYeei_WgVII/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/9g_ZuQL3LWI" height="1" width="1"/&gt;</content><author><name>Crystal Beasley</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/SmashingMagazine"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/SmashingMagazine</id><title type="html">Smashing Magazine</title><link rel="alternate" href="http://www.smashingmagazine.com/" type="text/html" /></source><feedburner:origLink>http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1234309414475"><id gr:original-id="http://blog.heroku.com/archives/2009/2/10/build_a_news_site_with_rubyflow/">tag:google.com,2005:reader/item/1b249a638c09a61f</id><title type="html">Build a news site with Rubyflow</title><published>2009-02-10T23:09:31Z</published><updated>2009-02-10T23:09:31Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/wv7SeACIBy4/" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/heroku"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/heroku</id><title type="html">Heroku</title><link rel="alternate" href="http://blog.heroku.com" type="text/html" /></source><content type="html">&lt;p&gt;Ruby journalist extraordinaire, Peter Cooper, is a busy man. Chances are you’re already following his work to bring you the latest Ruby news on sites such as &lt;a href="http://www.rubyinside.com"&gt;Ruby Inside&lt;/a&gt; and &lt;a href="http://www.rubyflow.com"&gt;RubyFlow&lt;/a&gt;. Late last year he even added a tremendously useful site oriented towards iPhone and iPod Touch development called &lt;a href="http://www.mobileorchard.com"&gt;Mobile Orchard&lt;/a&gt;. Somewhere along the line he was also generous enough to leak the source code for Rubyflow, and now a version of that is available through &lt;a href="http://github.com/Sutto/rubyflow"&gt;Sutto’s Github repository&lt;/a&gt;.That’s great news for anyone looking to start their own news site, especially since it’s a breeze to get working on Heroku.&lt;/p&gt;
&lt;p&gt;Start by cloning the source from Github:&lt;/p&gt;
&lt;pre&gt;
$ git clone git://github.com/Sutto/rubyflow.git
&lt;/pre&gt;
&lt;p&gt;Rubyflow depends the thoughtbot-factorygirl gem, so next we’ll make sure to install that and unpack it in vendor/gems:&lt;/p&gt;
&lt;pre&gt;
$ rake gems:install
$ rake gems:unpack
&lt;/pre&gt;
&lt;p&gt;I also found that the captcha used in Rubyflow’s user registration requires “digest/sha1” to be required explicitly, so go ahead and add&lt;/p&gt;
&lt;pre&gt;require 'digest/sha1'&lt;/pre&gt;
&lt;p&gt;at the bottom of config/environment.rb. Once you’ve done that it’s time to commit our changes to git:&lt;/p&gt;
&lt;pre&gt;
$ git add .
$ git commit -m "vendored gems and required digest/sha1"
&lt;/pre&gt;
&lt;p&gt;With that out of the way, it’s time to create an app on Heroku and deploy to it:&lt;/p&gt;
&lt;pre&gt;
$ cd rubyflow
$ heroku create 
Created http://high-fire-37.heroku.com/ | git@heroku.com:high-fire-37.git
Added git remote heroku
$ git push heroku master
...
App deployed to Heroku.
&lt;/pre&gt;
&lt;p&gt;Finally, we run migrations to set up the application database:&lt;/p&gt;
&lt;pre&gt;
$ heroku rake db:migrate
&lt;/pre&gt;
&lt;p&gt;…and there you have it!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.heroku.com/images/rubyflow_on_heroku.png" alt="Rubyflow on Heroku"&gt;&lt;/p&gt;
&lt;p&gt;Be sure to read the docs on site configuration and customization &lt;a href="http://github.com/Sutto/rubyflow/tree/master"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/heroku/~4/eGYMb-i7vRo" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/626cYz-PNBeoQqaZ9Bsvwllf1Pk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/626cYz-PNBeoQqaZ9Bsvwllf1Pk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/626cYz-PNBeoQqaZ9Bsvwllf1Pk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/626cYz-PNBeoQqaZ9Bsvwllf1Pk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/wv7SeACIBy4" height="1" width="1"/&gt;</content><feedburner:origLink>http://feedproxy.google.com/~r/heroku/~3/eGYMb-i7vRo/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1233907257755"><id gr:original-id="http://blog.heroku.com/archives/2009/2/6/future_of_deployment/">tag:google.com,2005:reader/item/13b997525d35a2be</id><title type="html">The Future of Deployment</title><published>2009-02-06T02:04:44Z</published><updated>2009-02-06T02:04:44Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/5AnPPiKbAGs/" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/heroku"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/heroku</id><title type="html">Heroku</title><link rel="alternate" href="http://blog.heroku.com" type="text/html" /></source><content type="html">&lt;p&gt;Application deployment is changing.  In relatively short order I’ve gone from buying hardware, to monthly hosting, to metered &lt;span&gt;CPU&lt;/span&gt; time, and from building my open-source software manually, to package managers, to fancy config tools and recipes to pre-build whole machine images.  What’s next?&lt;/p&gt;
&lt;h1&gt;The Old Way&lt;/h1&gt;
&lt;p&gt;I can deploy Rails apps in a traditional hosting environment pretty quickly.  For a small app, I might make a new unix user and database on a personal &lt;a href="http://www.slicehost.com/"&gt;Slicehost&lt;/a&gt; slice and do a quick code checkout.  After setting up a few permissions and twiddling my Nginx config, in a matter of fifteen minutes or so my app is online.  Not bad at all.&lt;/p&gt;
&lt;p&gt;For a bigger app, it takes more time.  In days of yore I’d build a server from parts or buy one of the excellent &lt;a href="http://www.pogolinux.com/"&gt;Pogo Linux&lt;/a&gt; servers and put it in a colo.  OS install, Xen setup, guest OS install, OS package setup, security lockdown, then on to the task of all the stack setup (database, Rails, source control) specific to the application to be run.&lt;/p&gt;
&lt;p&gt;Once you get into multiple servers, the complexity multiplies out quickly.  There are dozens of small decisions to make about how resources are allocated.  More &lt;span&gt;RAM&lt;/span&gt; or more &lt;span&gt;CPU&lt;/span&gt; for the database machine?  One slave database, or two?  Hardware load balancer vs. multiple IPs vs. something else?  All of these require both detailed knowledge about hardware and software deployments, combined with a huge amount of predictive guesswork to try to foresee the quantity and type of load that the app being deployed is likely to face in the next 3, 6, or 12 months.&lt;/p&gt;
&lt;p&gt;There’s an enterprisey word for this process: provisioning.&lt;/p&gt;
&lt;h1&gt;The New Way&lt;/h1&gt;
&lt;p&gt;Amazon’s EC2 is the vanguard of the new generation of cloud computing.  Provisioning a server was formerly a phone call and days or weeks of waiting.  Now it’s a &lt;span&gt;REST&lt;/span&gt; call and 30 seconds of waiting.  Awesome.&lt;/p&gt;
&lt;p&gt;But this is a very raw resource: there are still many provisioning decisions to be made, software to set up, and then on to deployment of the app itself.  Excellent services like &lt;a href="http://www.rightscale.com/"&gt;RightScale&lt;/a&gt; and Engine Yard’s new offering &lt;a href="http://www.engineyard.com/solo"&gt;Solo&lt;/a&gt; can help automate a lot of this process and minimize the management burden.  So far, so good.&lt;/p&gt;
&lt;p&gt;But what if provisioning was instantaneous, requiring no upfront decisions about resource allocation?  What if you didn’t need to think at all about the server hardware or software, but only about your application code?  How would this change how we build applications?&lt;/p&gt;
&lt;h1&gt;The Future&lt;/h1&gt;
&lt;p&gt;When technology breakthroughs make something smaller, or faster, or cheaper, it doesn’t just change current use; it creates &lt;a href="http://books.google.com/books?id=SIexi_qgq2gC"&gt;whole new types of use&lt;/a&gt;.  If app deployment is instantaneous, without having to plan for resources, allocate servers, or beg approval from the IT department, what kind of apps will we build that don’t get built today?&lt;/p&gt;
&lt;p&gt;In the past decade we’ve seen widespread adoption of &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;agile methodologies&lt;/a&gt; in the development of software.  This has transformed software development from a slow, failure-prone, and sometimes downright painful process into one that is fast, fun, and fulfilling.  But deployment of applications has changed hardly at all during that same time period.  The way you deploy a Rails, Merb, Sinatra, or Django app today is very similar to how you deployed a Perl app in 1999.&lt;/p&gt;
&lt;p&gt;This coming decade is going to see an agile revolution for the &lt;em&gt;deployment&lt;/em&gt; side of the equation.  The manual, guesswork-heavy methods of provisioning that we use today are soon to be superseded by methods that will make deploying an app fast, easy, and fun.&lt;/p&gt;
&lt;p&gt;No one knows quite what that will look like yet (though at Heroku we certainly have our &lt;a href="http://heroku.com/"&gt;own opinion&lt;/a&gt;), but one thing is for sure: the time is ripe for a revolution in IT.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/heroku/~4/aVkt7SmHa6c" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5j5SZ0HFGBekEr-FZW1jF_6ikSc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5j5SZ0HFGBekEr-FZW1jF_6ikSc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5j5SZ0HFGBekEr-FZW1jF_6ikSc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5j5SZ0HFGBekEr-FZW1jF_6ikSc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/5AnPPiKbAGs" height="1" width="1"/&gt;</content><feedburner:origLink>http://feedproxy.google.com/~r/heroku/~3/aVkt7SmHa6c/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1233734363369"><id gr:original-id="tag:weblog.rubyonrails.com,2009-02-04:24593">tag:google.com,2005:reader/item/249eae09b7782f03</id><category term="Documentation" /><category term="documentation" /><category term="guides" /><title type="html">Rails Guides Gets a Facelift</title><published>2009-02-04T01:05:00Z</published><updated>2009-02-04T02:03:04Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/RL0eTcxzM7M/rails-guides-gets-a-facelift" type="text/html" /><content xml:base="http://weblog.rubyonrails.com/" xml:lang="en-US" type="html">&lt;p&gt;There’s a brand new version of Rails coming, &lt;a href="http://weblog.rubyonrails.org/2009/2/1/rails-2-3-0-rc1-templates-engines-rack-metal-much-more"&gt;as you already know&lt;/a&gt;. What better time for a new version of some of the Rails documentation? So the Rails Guides team is pleased to announce a refresh of the &lt;a href="http://guides.rails.info"&gt;Ruby on Rails Guides&lt;/a&gt; site, just in time for the Rails 2.3 release.&lt;/p&gt;


	&lt;p&gt;The most obvious change you’ll see is a new look, thanks to some awesome design work from &lt;a href="http://www.thinkcage.com/"&gt;Jason Zimdars&lt;/a&gt;. But the visual refresh isn’t all that’s going on here. We’ve also been working to update the Guides for Rails 2.3, as well as to add new guides to the list.&lt;/p&gt;


	&lt;p&gt;And there’s good news if you want to get involved too. Behind the scenes, &lt;a href="http://tore.darell.no"&gt;Tore&lt;/a&gt; and Pratik switched our markup engine from AsciiDoc to Textile. This makes the Guides easier to write and edit and easier to build into a Rails project. If you’ve got some spare time to help out, join us in the #docrails room on irc.freenode.net, and help make the Rails Guides into a great resource in time for the 2.3 release.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cEQevF4jQM7s5ktyWrPNzENMHjU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cEQevF4jQM7s5ktyWrPNzENMHjU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cEQevF4jQM7s5ktyWrPNzENMHjU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cEQevF4jQM7s5ktyWrPNzENMHjU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/RL0eTcxzM7M" height="1" width="1"/&gt;</content><author><name>Mike Gunderloy</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feeds.feedburner.com/~r/RidingRails/~3/531161466/rails-guides-gets-a-facelift</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1233577381461"><id gr:original-id="http://www.ruby-lang.org/fr/news/2009/02/02/sortie-de-ruby-1-9-1/">tag:google.com,2005:reader/item/5670aee4b7475e2f</id><title type="html">Sortie de Ruby 1.9.1</title><published>2009-02-02T11:24:04Z</published><updated>2009-02-02T11:24:04Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/pyYt96M67HM/" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://www.ruby-lang.org/fr/feeds/news.rss"><id>tag:google.com,2005:reader/feed/http://www.ruby-lang.org/fr/feeds/news.rss</id><title type="html">Actualités de Ruby-lang</title><link rel="alternate" href="http://www.ruby-lang.org/fr/feeds/news.rss/" type="text/html" /></source><content type="html">&lt;p&gt;La version 1.9.1 de Ruby est sortie. Il s’agit de la première version stable de la branche 1.9, qui correspond à la branche active de développement du langage : plus moderne, plus rapide, apportant une syntaxe simplifiée, un excellent support des langues, bref, un meilleur Ruby.&lt;/p&gt;


	&lt;p&gt;La branche 1.8 a été initiée en 2003 et a permis le développement de très nombreux produits. C’est maintenant au tour des 1.9.x de prendre le relai, mais les 1.8.x sont pour le moment toujours en activité — la version 1.8.8 sortira courant 2009.&lt;/p&gt;


	&lt;p&gt;Vous pouvez prendre connaissance des changements majeurs intervenus depuis la version 1.8.7 &lt;a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS"&gt;dans ce document&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Depuis la 1.9.1 &lt;span&gt;RC2&lt;/span&gt;, sept &lt;a href="http://redmine.ruby-lang.org/projects/ruby-19/issues?query_id=11"&gt;bugs ont été corrigés&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Si vous tombez sur un os ou tout autre problème, pensez à poster un rapport de bug sur le &lt;a href="http://redmine.ruby-lang.org"&gt;tracker officiel&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Téléchargement&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2&lt;/a&gt;

	&lt;p&gt;&lt;span&gt;TAILLE&lt;/span&gt; : 7190271 bytes&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;MD5&lt;/span&gt; :    0278610ec3f895ece688de703d99143e&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;SHA256&lt;/span&gt; : de7d33aeabdba123404c21230142299ac1de88c944c9f3215b816e824dd33321&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz&lt;/a&gt;

	&lt;p&gt;&lt;span&gt;TAILLE&lt;/span&gt; : 9025004 bytes&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;MD5&lt;/span&gt; :    50e4f381ce68c6de72bace6d75f0135b&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;SHA256&lt;/span&gt; : a5485951823c8c22ddf6100fc9e10c7bfc85fb5a4483844033cee0fad9e292cc&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip&lt;/a&gt;

	&lt;p&gt;&lt;span&gt;TAILLE&lt;/span&gt; : 10273609 bytes&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;MD5&lt;/span&gt; :    3377d43b041877cda108e243c6b7f436&lt;/p&gt;


	&lt;p&gt;&lt;span&gt;SHA256&lt;/span&gt; : 00562fce4108e5c6024c4152f943eaa7dcc8cf97d5c449ac102673a0d5c1943b&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Yx5r5WpUO3xYTt7nO_EH4eBbRRA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yx5r5WpUO3xYTt7nO_EH4eBbRRA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Yx5r5WpUO3xYTt7nO_EH4eBbRRA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Yx5r5WpUO3xYTt7nO_EH4eBbRRA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/pyYt96M67HM" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.ruby-lang.org/fr/news/2009/02/02/sortie-de-ruby-1-9-1/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1232965234085"><id gr:original-id="urn:uuid:dc9ad811-c5a2-40b3-aca3-7f2db76bea86">tag:google.com,2005:reader/item/2ca29f6d97ae21ac</id><category term="Développement" /><category term="rails" /><category term="ruby" /><category term="rubyonrails" /><category term="mod_rails" /><category term="passenger" /><category term="web" /><category term="sysadmin" /><title type="html">Passenger mod_rails ne supporte pas la directive RailsBaseURI</title><published>2009-01-25T11:20:00Z</published><updated>2009-01-25T11:20:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/HgEhwkBvDJ8/passenger-mod_rails-ne-supporte-pas-la-directive-railsbaseuri.html" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/FredericDeVillamilcom"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/FredericDeVillamilcom</id><title type="html">Ergonomie web, Ruby on Rails et Architecture de l&amp;#39;information</title><link rel="alternate" href="http://t37.net" type="text/html" /></source><content type="html">&lt;p&gt;&lt;a href="http://www.modrails.com/"&gt;Passenger&lt;/a&gt;, alias mod rails est probablement la meilleure chose qui soit arrivée au web depuis l’invention du navigateur graphique – rien que ça – en faisant du déploiement d’applications Ruby on Rails un véritable jeu d’enfant. Plus besoin de configuration en dehors d’un Vhost des plus standards, mod_rails reconnaît les application Rails et Merb et fait ce qu’il faut. Et pour ne pas faire de jaloux, il fait de même avec les applications Django, il est vrai avec des performances moindres.&lt;/p&gt;

&lt;p&gt;Via &lt;a href="http://blog.ashchan.com/archive/2008/12/10/passengers-railsbaseuri-not-working/"&gt;Ashchan&lt;/a&gt;, je viens cependant de découvrir un bug dans la directive RailsBaseURI, qui permet de déployer des applications ailleurs qu’à la racine d’un site, par exemple, http://t37.net/blog au lieu de http://t37.net.&lt;/p&gt;

&lt;div&gt;&lt;pre&gt;&lt;span&gt;&amp;lt;VirtualHost 91.121.80.167:80&amp;gt;
    ServerName t37.net
    DocumentRoot /path/to/t37.net/public
    RailsBaseURI /blog
&amp;lt;/VirtualHost&amp;gt;    &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;En théorie, Passenger devrait transmettre la directive RailsBaseURI à votre application Rails en initialisant sa variable &lt;code&gt;relative&lt;em&gt;url&lt;/em&gt;root&lt;/code&gt;. Comme il semble ne pas le faire, en tout cas dans la dernière version, il faut modifier le fichier &lt;code&gt;config/envionment.rb&lt;/code&gt; de votre application Rails afin d’y ajouter &lt;/p&gt;

&lt;div&gt;&lt;pre&gt;&lt;span&gt;config.action_controller.relative_url_root = &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;/blog&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Et voilà, vous êtes. Quant à moi, je vous laisse, j’ai une version stable de Typo et un patch pour mod_rails à terminer.&lt;/p&gt;

&lt;p&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/fdevillamil/3155932372"&gt;&lt;img src="http://farm4.static.flickr.com/3085/3155932372_254011064f.jpg" width="333" height="500" alt="I believe I can fly" title="I believe I can fly"&gt;&lt;/a&gt;&lt;/div&gt; &lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;Article original écrit par Frederic de Villamil et publié sur &lt;a href="http://t37.net"&gt;Ergonomie web, Ruby on Rails et Architecture de l'information&lt;/a&gt; | &lt;a href="http://t37.net/passenger-mod_rails-ne-supporte-pas-la-directive-railsbaseuri"&gt;lien direct vers cet article&lt;/a&gt; | Si vous lisez cet article ailleurs que sur &lt;a href="http://t37.net"&gt;Ergonomie web, Ruby on Rails et Architecture de l'information&lt;/a&gt;, c'est qu'il a été reproduit illégalement et sans autorisation.&lt;/small&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?a=zQaFtnT9"&gt;&lt;img src="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?d=482" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?a=zMs2Pv3i"&gt;&lt;img src="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?d=147" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?a=5U06RQ8n"&gt;&lt;img src="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?d=148" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?a=bJIenqdR"&gt;&lt;img src="http://feeds2.feedburner.com/~f/FredericDeVillamilcom?d=149" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A8yyvpUGGqPi-H545k7bLJrrS9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A8yyvpUGGqPi-H545k7bLJrrS9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A8yyvpUGGqPi-H545k7bLJrrS9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A8yyvpUGGqPi-H545k7bLJrrS9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/HgEhwkBvDJ8" height="1" width="1"/&gt;</content><feedburner:origLink>http://feedproxy.google.com/~r/FredericDeVillamilcom/~3/2aPzCEcxdS4/passenger-mod_rails-ne-supporte-pas-la-directive-railsbaseuri.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1232038032120"><id gr:original-id="tag:weblog.rubyonrails.com,2009-01-15:24449">tag:google.com,2005:reader/item/e830e54d737ed416</id><category term="Activism" /><category term="activism" /><category term="book" /><category term="documentation" /><category term="guides" /><category term="rdoc" /><category term="wiki" /><title type="html">Rails Documentation Projects</title><published>2009-01-15T09:58:00Z</published><updated>2009-01-16T10:46:02Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/pxZIVTvOaIc/rails-documentation-projects" type="text/html" /><content xml:base="http://weblog.rubyonrails.com/" xml:lang="en-US" type="html">&lt;p&gt;&lt;img src="http://weblog.rubyonrails.com/assets/2009/1/15/book.png"&gt; With the recent revitalization of the &lt;a href="http://groups.google.com/group/rubyonrails-wiki"&gt;Rails Wiki&lt;/a&gt; project, we’re seeing people ask how the various pieces of Rails documentation fit together. I thought it might be useful to lay out how the Rails Activists see everything fitting together as we move forward.&lt;/p&gt;


	&lt;p&gt;Rails is a large and mature framework, with a lot of functionality – and with the Merb merger, there will be even more to learn in the future. As such, it presents challenges for developers at all levels trying to understand how to use Rails effectively. There are many resources to help with the learning process, including commercial books and magazines, screencasts and podcasts, tutorials, blog entries, and training courses. But there is also a series of official written documentation projects.&lt;/p&gt;


	&lt;p&gt;There’s no such thing as one-size-fits-all documentation. Different developers bring different skill sets, backgrounds, and levels of professional maturity to learning Rails. There are at least four levels of official documentation, overlapping but serving different needs:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Inline documentation, with comments within the code itself (that you can see by running &lt;code&gt;rake doc:rails&lt;/code&gt; within any Rails project).&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://guides.rubyonrails.org/"&gt;Rails Guides&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Rails Book (a new project for Rails 3.0)&lt;/li&gt;
		&lt;li&gt;Rails wiki&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Although at first glance there appears to be substantial overlap, our feeling is that the each of these projects occupies a distinct (and valuable) niche.&lt;/p&gt;


	&lt;h2&gt;RDoc&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Provides immediate help for syntax questions&lt;/li&gt;
		&lt;li&gt;Maintained by the actual core developers and generally up-to-date&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Rails Guides:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Provides focused “how to” help for particular problem domains&lt;/li&gt;
		&lt;li&gt;Target the mid-level developer, possibly with Rails experience&lt;/li&gt;
		&lt;li&gt;Have a large amount of existing high-quality material&lt;/li&gt;
		&lt;li&gt;Are already being continuously revised to track changes in edge Rails&lt;/li&gt;
		&lt;li&gt;Can include version-specific tutorial code samples&lt;/li&gt;
		&lt;li&gt;Can be delivered as a part of core Rails to provide “guidance at your fingertips” for new developers&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Rails Book:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Provides high-level architectural guidance and overview of how the pieces fit together&lt;/li&gt;
		&lt;li&gt;Digs into the philosophy of the “Rails Ways”, so readers can understand why the framework works the way it does&lt;/li&gt;
		&lt;li&gt;Targets the developer new to Rails or those wanting to go from the “trees” to the “forest” view&lt;/li&gt;
		&lt;li&gt;Offers help in conceptualizing Rails and choosing between alternative modules (ORMs, routing DSLs, etc.) in the Rails 3 timeframe&lt;/li&gt;
		&lt;li&gt;Can draw on the Merb experience in simultaneous translation and pulling in contributions from many writers&lt;/li&gt;
		&lt;li&gt;Largely version independent&lt;/li&gt;
		&lt;li&gt;Gives a structured path through end-to-end documentation in a way that standalone Guides do not&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Rails Wiki&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Community-driven documentation that can respond rapidly to new software and new questions&lt;/li&gt;
		&lt;li&gt;A good repository to links to external information&lt;/li&gt;
		&lt;li&gt;Potentially a showcase for Rails itself in the underlying software&lt;/li&gt;
		&lt;li&gt;A place to put the accumulated community knowledge, even the pieces that are not often needed&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;It’s important to note that we don’t see these four projects as entirely separate efforts that have no interaction with one another. In particular, it seems likely that the Book will link to the Guides for those seeking additional detail, while the Guides will link to the Book for those seeking additional high-level guidance. We also anticipate that the wiki will point readers to both Guides and Book (as well as to other sources of information).&lt;/p&gt;


	&lt;p&gt;So, what can &lt;em&gt;you&lt;/em&gt; do to get involved? If you’re a writer, translator, or editor, any of these documentation projects would love to have your help:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;To contribute to the RDoc, write a Rails patch with good comments or check out the &lt;a href="http://weblog.rubyonrails.org/2008/5/2/help-improve-rails-documentation-on-git-branch"&gt;docrails&lt;/a&gt; project.&lt;/li&gt;
		&lt;li&gt;To help the Rails Guides, get in touch with &lt;a href="mailto:pratiknaik@gmail.com"&gt;Pratik Naik&lt;/a&gt; or &lt;a href="mailto:mikeg1@larkfarm.com"&gt;Mike Gunderloy&lt;/a&gt;, or drop by the #docrails channel on &lt;span&gt;IRC&lt;/span&gt; freenode.&lt;/li&gt;
		&lt;li&gt;To get involved with the Rails Book, contact &lt;a href="mailto:mattaimonetti@gmail.com"&gt;Matt Aimonetti&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;To add to the Rails Wiki, join the &lt;a href="http://groups.google.com/group/rubyonrails-wiki"&gt;rubyonrails-wiki&lt;/a&gt; group.&lt;/li&gt;
	&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BOspYObIft63ZscpMY95wJBXMUA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BOspYObIft63ZscpMY95wJBXMUA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BOspYObIft63ZscpMY95wJBXMUA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BOspYObIft63ZscpMY95wJBXMUA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/pxZIVTvOaIc" height="1" width="1"/&gt;</content><author><name>Mike Gunderloy</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feeds.feedburner.com/~r/RidingRails/~3/513029410/rails-documentation-projects</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1231372590917"><id gr:original-id="urn:uuid:8f6faef6-c8db-4004-bb80-bbb94d4d2b9f">tag:google.com,2005:reader/item/9b3701939fcf42e8</id><category term="Développement" /><category term="ruby" /><category term="programmation" /><category term="ebook" /><category term="script" /><title type="html">Un e-book de 400 pages sur Ruby en téléchargement gratuit</title><published>2009-01-07T22:03:00Z</published><updated>2009-01-07T22:03:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/gnad7mLtea4/un-e-book-de-400-pages-sur-ruby-en-telechargement-gratuit.html" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/FredericDeVillamilcom"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/FredericDeVillamilcom</id><title type="html">Ergonomie web, Ruby on Rails et Architecture de l&amp;#39;information</title><link rel="alternate" href="http://t37.net" type="text/html" /></source><content type="html">&lt;p&gt;&lt;a href="http://www.sapphiresteel.com/IMG/zip/book-of-ruby.zip"&gt;Le livre de Ruby&lt;/a&gt; est un livre très complet sur le langage de scripting Ruby. Écrit et  mis en ligne gratuitement au format PDF par Huw Collingbourne, un des développeurs de l’IDE Ruby In Steel, il se veut également particulièrement didactique.&lt;/p&gt;

&lt;p&gt;À travers ses quelques 20 chapitres sur 400 pages, il cherche à couvrir l’ensemble des aspects du langage en accompagnant chaque partie d’exemples de code source directement réutilisables.&lt;/p&gt;

&lt;p&gt;Bien qu’en anglais, il m’a semblé particulièrement intéressant car il couvre nombre d’outils de debug, graphiques ou non, disponibles pour Ruby. L’introduction, elle, couvre plus particulièrement l’IDE Ruby in Steel.&lt;/p&gt;

&lt;p&gt;Pour ceux qui souhaiteraient subtiliser un aide mémoire à cette étude particulièrement approfondie du langage, Huw Collingbourne a également écrit &lt;a href="http://www.sapphiresteel.com/IMG/pdf/LittleBookOfRuby.pdf"&gt;Le petit livre Ruby&lt;/a&gt; – pour ne pas dire le Petit Livre Rouge – qui couvre ce que vous avez besoin de savoir pour pratiquer ce merveilleux langage en 80 pages et 10 chapitres. &lt;/p&gt;

&lt;p&gt;Et comme dirait quelqu’un que je connais : &lt;q&gt;si c’est gratuit, c’est pas cher. Et si c’est pas cher, c’est dans mes prix !&lt;/q&gt;&lt;/p&gt;

&lt;p&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/fdevillamil/3155934824"&gt;&lt;img src="http://farm4.static.flickr.com/3265/3155934824_325b573ac2.jpg" width="333" height="500" alt="Promethée, devant le Rockfeller Center" title="Holding the world, I am"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;Article original écrit par Frederic de Villamil et publié sur &lt;a href="http://t37.net"&gt;Ergonomie web, Ruby on Rails et Architecture de l'information&lt;/a&gt; | &lt;a href="http://t37.net/un-e-book-de-400-pages-sur-ruby-en-telechargement-gratuit"&gt;lien direct vers cet article&lt;/a&gt; | Si vous lisez cet article ailleurs que sur &lt;a href="http://t37.net"&gt;Ergonomie web, Ruby on Rails et Architecture de l'information&lt;/a&gt;, c'est qu'il a été reproduit illégalement et sans autorisation.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5rNYsPNeAel1CPeS2lTze7_0I28/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5rNYsPNeAel1CPeS2lTze7_0I28/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5rNYsPNeAel1CPeS2lTze7_0I28/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5rNYsPNeAel1CPeS2lTze7_0I28/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/gnad7mLtea4" height="1" width="1"/&gt;</content><feedburner:origLink>http://t37.net/un-e-book-de-400-pages-sur-ruby-en-telechargement-gratuit.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1231195924478"><id gr:original-id="tag:weblog.rubyonrails.com,2009-01-05:24395">tag:google.com,2005:reader/item/cddd05b22f60600f</id><category term="General" /><category term="activism" /><category term="evangelism" /><title type="html">Announcing the Rails activists</title><published>2009-01-05T16:52:00Z</published><updated>2009-01-05T18:20:52Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/Lb3wV3jnfUw/announcing-the-rails-activists" type="text/html" /><content xml:base="http://weblog.rubyonrails.com/" xml:lang="en-US" type="html">&lt;p&gt;&lt;img src="http://weblog.rubyonrails.com/assets/2009/1/5/crowd.png" alt="Railway station crowd"&gt;&lt;/p&gt;


	&lt;p&gt;Bringing Rails and Merb together is about more than just merging the respective code. We’re also picking up the best ideas from both communities beyond the code. Following on Merb’s success in offering a strong evangelism effort, we’re pleased to announce the creation of the &lt;a href="http://rubyonrails.org/activists"&gt;&lt;strong&gt;Rails activists&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt;


&lt;blockquote&gt;
The mission of the Rails activists is to empower and support the worldwide network of Ruby on Rails users. We do this by publicizing Rails, making adoption easier, and enhancing developer support.
&lt;/blockquote&gt;

	&lt;p&gt;At launch, we’ve identified seven areas where the Rails activists can contribute to the Rails ecosystem:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Public Relations with media of all sizes&lt;/li&gt;
		&lt;li&gt;Ombudsman work to ensure good user-to-user support&lt;/li&gt;
		&lt;li&gt;Community Leadership at events and conferences&lt;/li&gt;
		&lt;li&gt;Media Organization to help create good promotional opportunities&lt;/li&gt;
		&lt;li&gt;Website maintenance&lt;/li&gt;
		&lt;li&gt;Documentation efforts&lt;/li&gt;
		&lt;li&gt;Developer support&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The initial members of the Rails activists are &lt;a href="http://twitter.com/greggpollack"&gt;Gregg Pollack&lt;/a&gt;, &lt;a href="http://twitter.com/merbist"&gt;Matt Aimonetti&lt;/a&gt;, &lt;a href="http://twitter.com/rbates"&gt;Ryan Bates&lt;/a&gt;, and &lt;a href="http://twitter.com/mikeg1"&gt;Mike Gunderloy&lt;/a&gt;. But we can’t do all this alone, nor do we want to! Our vision includes a large and vibrant Rails network composed of other activists, bloggers, event hosts, authors, and developers. Our intent is to provide connections, resources, and support to help the entire ecosystem to grow. To start things off, we’re bringing in a lot of our &lt;a href="http://rubyonrails.org/activists"&gt;own projects&lt;/a&gt;, including videos, screencasts, case studies, Rails documentation, and more – we’re a working group, and we hope you’ll work with us.&lt;/p&gt;


	&lt;p&gt;If you have ideas about improving the Rails community, projects you want to participate in, or are just looking for ways to get involved, get in touch with us! There are a lot of ways to do that:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Through the new &lt;a href="http://groups.google.com/group/rails-activism"&gt;Rails activism&lt;/a&gt; Google group. &lt;/li&gt;
		&lt;li&gt;Through the &lt;a href="http://rails.uservoice.com/"&gt;Rails feedback site&lt;/a&gt;, where you can vote on which projects you’d like to see us devote resources to in the Rails 3 timeframe and beyond.&lt;/li&gt;
		&lt;li&gt;Through our Twitter accounts (linked above)&lt;/li&gt;
		&lt;li&gt;Through &lt;span&gt;IRC&lt;/span&gt; to Matt (mattetti) or Mike (mikeg1a)&lt;/li&gt;
		&lt;li&gt;Through email to &lt;a href="mailto:mikeg1@larkfarm.com"&gt;Mike Gunderloy&lt;/a&gt;, &lt;a href="mailto:mattaimonetti@gmail.com"&gt;Matt Aimonetti&lt;/a&gt;, &lt;a href="mailto:Gregg@railsenvy.com"&gt;Gregg Pollack&lt;/a&gt;, or &lt;a href="mailto:ryan@railscasts.com"&gt;Ryan Bates&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;We look forward to hearing from you!&lt;/p&gt;


	&lt;p&gt;For additional perspectives from the activists, see the posts by &lt;a href="http://www.railsenvy.com/2009/1/5/the-rails-activist-team"&gt;Gregg Pollack&lt;/a&gt;, &lt;a href="http://merbist.com/2009/01/05/presenting-the-rails-activists/"&gt;Matt Aimonetti&lt;/a&gt;, and &lt;a href="http://afreshcup.com/2009/01/05/announcing-the-rails-activists/"&gt;Mike Gunderloy&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Photo by Flickr user caravinagre&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eDd8QiwcMcQUPS7PX1tkLnAFtyo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eDd8QiwcMcQUPS7PX1tkLnAFtyo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eDd8QiwcMcQUPS7PX1tkLnAFtyo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eDd8QiwcMcQUPS7PX1tkLnAFtyo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/Lb3wV3jnfUw" height="1" width="1"/&gt;</content><author><name>Mike Gunderloy</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feeds.feedburner.com/~r/RidingRails/~3/503589793/announcing-the-rails-activists</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1230111871808"><id gr:original-id="tag:weblog.rubyonrails.com,2008-12-23:24186">tag:google.com,2005:reader/item/0cefa9885358115c</id><title type="html">Merb gets merged into Rails 3!</title><published>2008-12-23T19:47:00Z</published><updated>2008-12-23T20:03:51Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/E__uerGcS6k/merb-gets-merged-into-rails-3" type="text/html" /><content xml:base="http://weblog.rubyonrails.com/" xml:lang="en-US" type="html">&lt;p&gt;It’s christmas, baby, and do we have a present for you. We’re ending the bickering between Merb and Rails with a this bombshell: Merb is being merged into Rails 3!&lt;/p&gt;


	&lt;p&gt;We all realized that working together for a common good would be much more productive than duplicating things on each side of the fence. Merb and Rails already share so much in terms of design and sensibility that joining forces seemed like the obvious way to go. All we needed was to sit down for a chat and hash it out, so we did just that.&lt;/p&gt;


	&lt;p&gt;What this will mean in practice is that the Merb team is putting their efforts into bringing all of the key Merb ideas into Rails 3. Yehuda Katz will outright join &lt;a href="http://rubyonrails.org/core"&gt;the Rails core team&lt;/a&gt;, Matt Aimonetti will work on a new evangelism team, and Carl Lerche and Daniel Neighman (hassox) will be co-starring the effort to bring all this over. We’ve immortalized the merge with plaque page at &lt;a href="http://rubyonrails.org/merb"&gt;rubyonrails.org/merb&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;What’s being brought over?&lt;/b&gt;&lt;br&gt;
Some of the key ideas that they’ll be taking with them from Merb into Rails 3 are:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Rails core: Yes, Rails is a full-stack framework and will remain so, but there’s no reason we shouldn’t also make it possible to run with less than the full monty. Rails 3 will make it easy to run just a bare minimum and then allow you to opt in just the stuff you want, if that’s necessary for your particular situation. Think “rails myapp—core” (and “rails myapp—flat”).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Performance optimizations: Merb has a lot of Rails pieces rewritten to be faster. We’ll be bringing all that good stuff over. We’ll also bend the architecture in the places where that’s necessary for a big yield. In short, Rails 3 will get all the performance attention that the Merb guys are known for.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Framework agnosticism: Rails will always have a default answer to every question within the stack. If you don’t care about testing frameworks, you’ll get test/unit. If you don’t care about which &lt;span&gt;ORM&lt;/span&gt;, you’ll get Active Record. But some people do care and want something else. Some people want RSpec for testing, others want to use Sequel or Data Mapper for &lt;span&gt;ORM&lt;/span&gt;, others again prefer Haml for templating, and some might prefer jQuery for Ajax. All these people should feel like Rails is welcoming them with open arms. Yes, we’ll have a default, but we shouldn’t have any form of discrimination against alternatives.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Rigorous &lt;span&gt;API&lt;/span&gt;: Too many plugins break when Rails is updated because it’s not clear where they can safely hook into the internals and when they’re monkeypatching and should expect things to break. The Merb guys committed to a public &lt;span&gt;API&lt;/span&gt; with tests to ensure that it wouldn’t break. They’ll bring over that line of thinking and give Rails 3 a tested and documented &lt;span&gt;API&lt;/span&gt; for extensions that won’t break willy-nilly with upgrades.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;b&gt;This is not a big bang rewrite&lt;/b&gt;&lt;br&gt;
It’s important to understand, however, that this is not a “big bang” rewrite of Rails. We’re far beyond the time when we could just throw out everything and start over. This is going to be a progressive improvement of Rails that’ll carefully judge new initiatives on their impact on backwards compatibility as well as their general utility.&lt;/p&gt;


	&lt;p&gt;I’m sure there’ll be some parts of Rails 3 that are incompatible, but we’ll try to keep them to a minimum and make it really easy to convert a Rails 2.x application to Rails 3. The Merb guys will also be working hard on giving existing Merb users a manageable upgrade path to Rails 3. We’re working with lots of ideas including allowing existing Merb controllers to be mounted alongside new Rails 3 ones. We’ll see how it all plays out, but play out it will.&lt;/p&gt;


	&lt;p&gt;Also, the Merb guys aren’t just abandoning the existing Merb user base and their applications. They’ll still be doing bug fixes, security fixes, and work on easing the upgrade path to Rails 3. This will all progress in a nice, orderly fashion.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;The timeline&lt;/b&gt;&lt;br&gt;
Rails 2.3 is just around the corner. We hope to wrap up and release in January. It’s a blockbuster release packed with goodies to the tilt. But as soon as that’s done, all eyes will be on Rails 3.&lt;/p&gt;


	&lt;p&gt;The probably-overly-optimistic goal is to have at least a beta version ready for RailsConf 2009 in Las Vegas. Who knows if we’ll make it, but we’ll certainly have made tons of progress on it by then.&lt;/p&gt;


	&lt;p&gt;So all of these changes are pretty much effective immediately. We’ve already started the collaboration and we’ll be rolling out a bunch of public initiatives announcing the concrete elements of the work under the Rails 3 milestone very shortly.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;No hard feelings, just kumbaja&lt;/b&gt;&lt;br&gt;
This is quite a dramatic turn of events. We went from testy relations to coming together in not very long at all. But I’ve been incredibly positively surprised at how well everyone on both sides have been gelling behind the scenes. The more we talk, the more we realize that we want the same things. And in the few cases were we do care about something different, it’s usually complimentary.&lt;/p&gt;


	&lt;p&gt;I really hope that everyone within both communities will deal with this news as gracefully as the key contributors from both camps. Let’s just wipe the slate clean on anything that has gone before and cherish that we can now move forward in unity instead of as fractions of the same ideas.&lt;/p&gt;


	&lt;p&gt;Rails 3 is going to kick ass.&lt;/p&gt;


	&lt;p&gt;&lt;i&gt;Also read what &lt;a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge"&gt;Yehuda wrote about this&lt;/a&gt; and &lt;a href="http://splendificent.com/2008/12/the-merb-rails-merger-announcement-an-inside-opinion/"&gt;Carl Lerche&lt;/a&gt; and &lt;a href="http://brainspl.at/articles/2008/12/23/merb-is-rails"&gt;Ezra&lt;/a&gt; and &lt;a href="http://merbist.com/2008/12/23/rails-and-merb-merge/"&gt;Matt&lt;/a&gt;&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qpN1_N3QDsXkvI3e7HEr0t5rYt8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qpN1_N3QDsXkvI3e7HEr0t5rYt8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qpN1_N3QDsXkvI3e7HEr0t5rYt8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qpN1_N3QDsXkvI3e7HEr0t5rYt8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/E__uerGcS6k" height="1" width="1"/&gt;</content><author><name>David</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/RidingRails"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/RidingRails</id><title type="html">Riding Rails - home</title><link rel="alternate" href="http://weblog.rubyonrails.org/" type="text/html" /></source><feedburner:origLink>http://feeds.feedburner.com/~r/RidingRails/~3/493415973/merb-gets-merged-into-rails-3</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1226993286525"><id gr:original-id="urn:uuid:888020a3-7094-4fa9-89cc-97c7e17236f6">tag:google.com,2005:reader/item/ee05d6d3fc7b772d</id><category term="Actualités" /><category term="ruby" /><category term="rubyonrails" /><category term="rails" /><category term="typo" /><category term="parisonrails" /><category term="barcamp" /><title type="html">Rails Party le 30 novembre 2008 à Paris</title><published>2008-11-17T21:33:00Z</published><updated>2008-11-17T21:33:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-ruby/~3/uVqBmpxSHDg/rails-party-le-30-novembre-2008-i-paris" type="text/html" /><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/FredericDeVillamilcom"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/FredericDeVillamilcom</id><title type="html">Ergonomie web, Ruby on Rails et Architecture de l&amp;#39;information</title><link rel="alternate" href="http://t37.net" type="text/html" /></source><content type="html">&lt;p&gt;L’association &lt;a href="http://www.rubyfrance.org/"&gt;Ruby France&lt;/a&gt; – à laquelle j’ai le plaisir de cotiser chaque année pour une somme modique – organise un &lt;em&gt;warm up&lt;/em&gt; à Paris On Rails le dimanche 30 novembre 2008 de 16 heures à 22 heures. Celui-ci se déroulera au Dune, 18 avenue Claude Vellefaux, dans le 10ème arrondissement de Paris. Cette Rails Party regroupera les développeurs utilisant le framework Ruby On Rails de tous niveaux, ainsi que les curieux souhaitant le découvrir sous la forme d’ateliers informels de type Barcamp, de lightning talks, de hackfest… selon les envies des présents.&lt;/p&gt;

&lt;p&gt;Suite à &lt;a href="http://t37.net/paris-on-rails-2008-premier-decembre"&gt;mon avis – critique et assez tranché – sur Paris On Rails&lt;/a&gt; il y a pas loin d’un mois, Guillaume Desrat, président de l’association Ruby France m’avait demandé si je participerais à un événement de type communautaire qui se déroulerait en marge de cette conférence. J’ai évidemment accepté avec plaisir, la question comportant un piège, puisque je pouvais difficilement refuser sans entrer en contradiction avec ma précédente envolée. Je devrais y présenter la version (quasi) finale de Typo 6.0, dont Cyril devrait lui profiter afin de parler de la migration d’une application Rails 2.0 vers une application Rails 2.2. Je n’exclue pas non plus de présenter un atelier sur la création de thèmes ou de plugins Typo s’il y a des personnes intéressées.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;Article original écrit par Frederic de Villamil et publié sur &lt;a href="http://t37.net"&gt;Ergonomie, Rails et Architecture de l'information web (2.0)&lt;/a&gt; | &lt;a href="http://t37.net/rails-party-le-30-novembre-2008-i-paris"&gt;lien direct vers cet article&lt;/a&gt; | Si vous lisez cet article ailleurs que sur &lt;a href="http://t37.net"&gt;Ergonomie, Rails et Architecture de l'information web (2.0)&lt;/a&gt;, c'est qu'il a été reproduit illégalement et sans autorisation.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/FredericDeVillamilcom?a=W4rkin"&gt;&lt;img src="http://feeds.feedburner.com/~a/FredericDeVillamilcom?i=W4rkin" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~f/FredericDeVillamilcom?a=K8ckN"&gt;&lt;img src="http://feeds.feedburner.com/~f/FredericDeVillamilcom?i=K8ckN" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/FredericDeVillamilcom?a=7cqEN"&gt;&lt;img src="http://feeds.feedburner.com/~f/FredericDeVillamilcom?i=7cqEN" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/FredericDeVillamilcom?a=uUsMN"&gt;&lt;img src="http://feeds.feedburner.com/~f/FredericDeVillamilcom?i=uUsMN" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/FredericDeVillamilcom?a=y76qN"&gt;&lt;img src="http://feeds.feedburner.com/~f/FredericDeVillamilcom?i=y76qN" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mm6vCSLozE5i5uxvshLgjmXk3eE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mm6vCSLozE5i5uxvshLgjmXk3eE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mm6vCSLozE5i5uxvshLgjmXk3eE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mm6vCSLozE5i5uxvshLgjmXk3eE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-ruby/~4/uVqBmpxSHDg" height="1" width="1"/&gt;</content><feedburner:origLink>http://feeds.feedburner.com/~r/FredericDeVillamilcom/~3/462708425/rails-party-le-30-novembre-2008-i-paris</feedburner:origLink></entry></feed>
