<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>RailsOnWave Ruby on Rails web 2.0 Ajax - Home</title>
  <id>tag:www.railsonwave.com,2009:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  
  <link href="http://www.railsonwave.com/" rel="alternate" type="text/html" />
  <updated>2009-10-29T06:11:19Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/Railsonwave-Home" type="application/atom+xml" /><feedburner:emailServiceId>Railsonwave-Home</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2009-10-29:8230</id>
    <published>2009-10-29T06:07:00Z</published>
    <updated>2009-10-29T06:11:19Z</updated>
    <category term="Events" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/SQ7HSuCsJac/live-from-startup-school-2009" rel="alternate" type="text/html" />
    <title>Startup School 2009</title>
<content type="html">
            &lt;p&gt;This day I had the pleasure to attend the 2009 edition of Y-Combinator’s &lt;a href="http://startupschool.org/"&gt;Startup School 2009&lt;/a&gt; helded at Berkley university, California. When I read the schedule of the event I stood impressed by the &lt;a href="http://startupschool.org/speakers.html;"&gt;names of the speakers&lt;/a&gt; in particular I was curious to hear &lt;a href="http://www.google.com/search?q=Mark+Zuckerberg&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:it:official&amp;client=firefox-a"&gt;Mark Zuckerberg&lt;/a&gt; , the creator of Facebook, and Jason Fried, from 37 Signals. The event begun with a very entertaning presentation from &lt;a href="http://www.paulgraham.com/"&gt;Paul Graham&lt;/a&gt; focused on determing what are the key factors of a successful startup and, more generally, what really means be a startup founder. Then it was the turn of Greg McAdoo from &lt;a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAYQFjAA&amp;url=http%3A%2F%2Fwww.sequoiacap.com%2F&amp;ei=oBXpSr2JFomksgP-_bXnCA&amp;usg=AFQjCNGnR8ufnQWSP-UA_I4oJNRoRS-pmw&amp;sig2=PqbngKdG_DgasD4XzPaW0A"&gt;Sequoia Capital&lt;/a&gt; who gave us advices on how and when a startup need to do fund-raising.&lt;/p&gt;


&amp;lt;center&gt;
&lt;img src="http://railsonwave.com/assets/2009/10/29/IMG_8289.JPG" alt="" /&gt;
&amp;lt;/center&gt;

	&lt;p&gt;Jason Fried tryed in his speech to demiystify some of the common sentences related to a startup business; in his opinion you don’t need to search an initial investment to start a company; that’s because if you begun with money your first thought are on how spend it (employees, fornitures, ...); but if you don’t have money you focus only on how to make money.&lt;/p&gt;


&amp;lt;center&gt;
&lt;img src="http://railsonwave.com/assets/2009/10/29/IMG_8332.JPG" alt="" /&gt;
&amp;lt;/center&gt;

	&lt;p&gt;Next went Evan Williams and Biz Stone, founders of twitter; their interview was full of funny anecdotes and tips; one over all: In the beginning of Twitter someone said ‘twitter is fun but it’s not useful’. Ev dryly remarked: ‘so is ice cream’.&lt;/p&gt;


&amp;lt;center&gt;
&lt;img src="http://railsonwave.com/assets/2009/10/29/IMG_8352.JPG" alt="" /&gt;
&amp;lt;/center&gt;

	&lt;p&gt;After lunch the conference continued with an interview with Mark Zuckerberg, founder of Facebook, and ended up with a party helded within the Y combinator offices !&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/SQ7HSuCsJac" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/10/29/live-from-startup-school-2009</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-09-18:8226</id>
    <published>2009-09-18T10:45:00Z</published>
    <updated>2009-09-18T10:48:32Z</updated>
    <category term="Got Things Done" />
    <category term="Ruby on Rails" />
    <category term="Whodo.es" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/LFYJs1LHb-g/where-is-row-and-whodoes-users" rel="alternate" type="text/html" />
    <title>Mapping ROR, ROW and WhoDoes users....?</title>
<content type="html">
            &lt;p&gt;We thought it would be interesting to know where about our &lt;a href="http://railsonwave.com"&gt;railsonwave.com&lt;/a&gt; and &lt;a href="http://whodo.es"&gt;whodoe.es&lt;/a&gt; users are in the world…&lt;/p&gt;


	&lt;p&gt;So if you use  &lt;a href="http://whodo.es"&gt;Whodoe.es&lt;/a&gt;, read our blog &lt;a href="http://railsonwave.com"&gt;railsonwave.com&lt;/a&gt;, you are a user of  &lt;strong&gt;Ruby on Rails&lt;/strong&gt; or a &lt;strong&gt;Web 2.0&lt;/strong&gt; designer, please add where you are located on the shared google map here, just your name/nickname and the area you are in, it does not have to be the exact address:&lt;/p&gt;


&lt;p&gt;

&amp;lt;iframe src="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;msa=0&amp;amp;msid=117545570678571808633.000473d5f3cc100c3242a&amp;amp;ll=45.39845,10.50293&amp;amp;spn=13.886382,28.125&amp;amp;z=5&amp;amp;output=embed" marginwidth="0" frameborder="0" height="450" marginheight="0" scrolling="no" width="580"&gt;&amp;lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;View &lt;a href="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;msa=0&amp;amp;msid=117545570678571808633.000473d5f3cc100c3242a&amp;amp;ll=45.39845,10.50293&amp;amp;spn=13.886382,28.125&amp;amp;z=5&amp;amp;source=embed"&gt;Where is &lt;span class="caps"&gt;ROW&lt;/span&gt; and WhoDoes users….?&lt;/a&gt; in a larger map&lt;/small&gt;

&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/LFYJs1LHb-g" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/9/18/where-is-row-and-whodoes-users</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-08-28:8222</id>
    <published>2009-08-28T10:59:00Z</published>
    <updated>2009-08-28T10:59:13Z</updated>
    <category term="Ruby on Rails" />
    <category term="Web 2.0" />
    <category term="Whodo.es" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/d-5BoSVVBns/tools-we-need" rel="alternate" type="text/html" />
    <title>Tools we need...</title>
<content type="html">
            &lt;p&gt;When we look for a successful project management tool, what are the important aspects that we need to look for:&lt;/p&gt;


&lt;h3&gt;Share&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upload files and share them with your team&lt;/li&gt;
&lt;li&gt;Tasks that need to be completed to reach deadlines&lt;/li&gt;
&lt;li&gt;Share ideas and comments on tasks&lt;/li&gt;
&lt;li&gt;Share e-mails with project e-mailer, keeping all e-mails archived&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://railsonwave.com/assets/2009/8/28/files.png"&gt;
&lt;br /&gt;

&lt;h3&gt; Collaborate &lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Collaborate with team members even from other networks&lt;/li&gt;
&lt;li&gt;Teams collaborate with managers&lt;/li&gt;
&lt;li&gt;Fast plan your tasks and milestones with Fastplan&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://railsonwave.com/assets/2009/8/28/FirefoxScreenSnapz002.png"&gt;
&lt;br /&gt;

&lt;h3&gt; Manage &lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Manage your tasks and milestones for a project&lt;/li&gt;
&lt;li&gt;Manage your team members and what needs to be completed to reach deadlines&lt;/li&gt;
&lt;li&gt;Keep Clients are satisfied by managing your teams and completing projects successfully&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://railsonwave.com/assets/2009/8/28/manage.png"&gt;

	&lt;p&gt;&lt;a href="http://whodo.es"&gt;WhoDoes&lt;/a&gt; helps you: &lt;strong&gt;share, collaborate and manage&lt;/strong&gt; your projects and team members. Simple and easy-to-use, quick registration.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/d-5BoSVVBns" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/8/28/tools-we-need</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2009-06-19:8218</id>
    <published>2009-06-19T18:24:00Z</published>
    <updated>2009-06-19T18:24:56Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/a_XGC6zxYpQ/time-driven-crawling-with-tarantula" rel="alternate" type="text/html" />
    <title>Time driven crawling with Tarantula </title>
<content type="html">
            &lt;p&gt;We are using &lt;a href="http://github.com/relevance/tarantula/tree/master"&gt;Tarantula&lt;/a&gt; as an additional form of testing within our last project, Tarantula is called during a cruise control task to ensure that the application works also with realistic data (taken from the production database during the night).&lt;/p&gt;


	&lt;p&gt;The main problem we found in this approach was how to stop the crawler before it finish to load all the possible links collected during the session. This was critical for us ‘cause the web application currently handles thousands of elements and we could not wait hours.&lt;/p&gt;


So we chose to patch Tarantula in order to:
	&lt;ul&gt;
	&lt;li&gt;let the spider follow links in a random order &lt;/li&gt;
		&lt;li&gt;stop the spider after a configurable period of time (eg: 10 min)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Here’s the &lt;a href="http://www.railsonwave.com/assets/2009/6/19/crawler.rb"&gt;crawler.rb&lt;/a&gt; you’ll need to put under ‘lib/relevance/tarantula/’ in order to obtain this effect, then you can change two instance_variables: test_max_time_links and test_max_time_forms in order to choose how many minutes the spider will spend on these elements.&lt;/p&gt;


	&lt;p&gt;In the next days we’ll fork the Tarantula projects in order to better share this new behavior.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/a_XGC6zxYpQ" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/6/19/time-driven-crawling-with-tarantula</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-05-29:8215</id>
    <published>2009-05-29T13:11:00Z</published>
    <updated>2009-05-29T13:13:44Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/GssBTJSr93w/upgrading-your-rails-app-from-rails-2-1-to-rails-2-3" rel="alternate" type="text/html" />
    <title>Upgrading your Rails app from Rails 2.1 to Rails 2.3....</title>
<content type="html">
            &lt;p&gt;If you still have some of your rails applications in Rails 2.1, here is how to start migrating to Rails 2.3 and take advantage of the new features….&lt;/p&gt;


	&lt;p&gt;Firstly, create a branch of your application&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;svn checkout path_of_application&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;Delete your current rails folder from &lt;strong&gt;vendor/rails&lt;/strong&gt; from your branched application (if you had frozen rails into your app before)
Install the Rails 2.3.2 framework and then freeze it into your application with these two commands:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;sudo gem install rails --version 2.3.2
rake rails:freeze:gems
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;create a sample rails 2.3 application, then copy all the missing the  &lt;strong&gt;config/initializers/&lt;/strong&gt; files from the test application to your branched application such as the &lt;em&gt;session_store.rb&lt;/em&gt;, then copy the secret key from the &lt;em&gt;environment.rb&lt;/em&gt; file into this file. This is to keep the &lt;em&gt;environment.rb&lt;/em&gt; file small, braking parts into the  &lt;strong&gt;config/initializers/&lt;/strong&gt; files&lt;/p&gt;


	&lt;p&gt;Remember to change your Rails version in your &lt;em&gt;environment.rb&lt;/em&gt; file to &lt;strong&gt;Rails 2.3.2&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.railsonwave.com/assets/2009/5/29/TextMateScreenSnapz001.png" /&gt;&lt;/p&gt;


	&lt;p&gt;rename your &lt;em&gt;application.rb&lt;/em&gt; file to &lt;em&gt;application_controller.rb&lt;/em&gt; or run&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rails:update:application_controller&lt;/pre&gt;&lt;/code&gt;

	&lt;h4&gt;formatted urls&lt;/h4&gt;


formatted_ * are no longer supported in the route helper due to using too much memory:
&lt;pre&gt;&lt;code&gt;
 formatted_users_path(:format =&amp;gt; 'xml')  changed to users_path(:format =&amp;gt; 'xml')
&lt;/pre&gt;&lt;/code&gt;

	&lt;h4&gt;Internationalization&lt;/h4&gt;


	&lt;p&gt;If you have used the globalization gem, it will no longer be compatible in Rails 2.3. Rails has now built in I18n Internationalization. (&lt;a href="http://rails-i18n.org/wiki/pages/i18n-rails-guide"&gt;read more about internationalization&lt;/a&gt;)&lt;/p&gt;


	&lt;p&gt;The old way: &lt;br /&gt;
&lt;img src="http://railsonwave.com/assets/2009/5/29/TextMateScreenSnapz002.png" height="115px" width="580px"&gt;&lt;/p&gt;


	&lt;p&gt;The new way: &lt;br /&gt;
&lt;img src="http://railsonwave.com/assets/2009/5/29/TextMateScreenSnapz003.png" height="115px" width="580px"&gt;&lt;/p&gt;


	&lt;p&gt;In the config/locales/en.yml file we have the following:&lt;br /&gt;
&lt;img src="http://railsonwave.com/assets/2009/5/29/TextMateScreenSnapz004.png" height="59px" width="454px"&gt;&lt;/p&gt;


	&lt;p&gt;The text is retrieved from these files, as well as if you have other languages such as italian, just create an &lt;em&gt;it.yml&lt;/em&gt; file and replace the text with the translated text.&lt;/p&gt;


	&lt;p&gt;Hope this will help when you migrate to Rails 2.3….&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/GssBTJSr93w" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/5/29/upgrading-your-rails-app-from-rails-2-1-to-rails-2-3</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-05-20:8212</id>
    <published>2009-05-20T14:52:00Z</published>
    <updated>2009-05-22T09:50:36Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/5bc3UA_1vKE/translate-plugin" rel="alternate" type="text/html" />
    <title> I18n translate interface plugin...</title>
<content type="html">
            &lt;p&gt;I came across a really cool plugin that has a web interface for translating I18n texts.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.railsonwave.com/assets/2009/5/20/FirefoxScreenSnapz001.png" /&gt;&lt;/p&gt;


	&lt;p&gt;Download the &lt;a href="http://github.com/newsdesk/translate/tree/master"&gt;translate plugin&lt;/a&gt; from github written by &lt;em&gt;Peter Marklund&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;In the routes.rb file add the following:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.railsonwave.com/assets/2009/5/20/TextMateScreenSnapz001.png" /&gt;&lt;/p&gt;


	&lt;p&gt;now visit &lt;em&gt;/translate&lt;/em&gt; and you will have an interface for translating text.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/5bc3UA_1vKE" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/5/20/translate-plugin</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2009-05-11:8211</id>
    <published>2009-05-11T22:00:00Z</published>
    <updated>2009-05-12T09:42:54Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/SQ_76ZDBJGM/euruko-2009-summary" rel="alternate" type="text/html" />
    <title>Euruko 2009 Summary</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://euruko2009.org/"&gt;Euroko’s 2009&lt;/a&gt; is over and in these few lines I’ll try to summarize two days full of sessions,
laughs and Ruby. Everything started with &lt;a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto"&gt;Matz’s&lt;/a&gt; opening speech which focuses on ‘Things we got’ explaining why Ruby’s got all the features a good language need (starting from the name), what are the next steps in the core development and why we don’t need to rush in the future.&lt;/p&gt;


	&lt;p&gt;During the day I found two very interesting speeches: one from &lt;a href="http://formatinternet.wordpress.com/"&gt;Javier Ramirez&lt;/a&gt; that &lt;a href="http://app.euruko2009.org/talks/9-fun-with-ruby-and-without-r-s-program-your-own-games-with-gosu"&gt;told us&lt;/a&gt; about &lt;a href="http://code.google.com/p/gosu/"&gt;Gosu&lt;/a&gt;, an enjoyable and pretty powerful gaming framework suitable for Ruby which can also be combined with &lt;a href="http://code.google.com/p/chipmunk-physics/"&gt;Chipmunk&lt;/a&gt; (a physics engine) in order to obtain
awesome effects and collisions.&lt;/p&gt;


	&lt;p&gt;Then I stumbled upon Cory Forsyth and his talk about &lt;a href="http://app.euruko2009.org/talks/10-who-needs-photoshop-creative-image-manipulation-and-processing-using-ruby-to-do-image-recognition-movie-decomposition-and-more"&gt;Image Manipulation with Ruby&lt;/a&gt; that focuses on how to obtain three kind of quite advanced effects: photo-mosaic, seam carving and face detection using  Ruby, &lt;a href="http://rmagick.rubyforge.org/"&gt;Rmagick&lt;/a&gt; and &lt;a href="http://github.com/bantic/ruby-opencv/tree/master"&gt;some&lt;/a&gt; other cool libraries. On &lt;a href="http://github.com/bantic"&gt;Cory Forsyth github page&lt;/a&gt; is also possible to appreciate &lt;a href="http://github.com/bantic/image_labs/tree/master"&gt;some very well made examples about these techniques&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;The day ends up (at least for me ‘cause I know some guys went partying somewhere) with a very 
nice stand up dinner made with delicious catalan ‘Jamon y Queso’ .&lt;/p&gt;


	&lt;p&gt;Sunday comes with an exceptional list of talks that impressed me much, starting from &lt;a href="http://adhearsion.com/"&gt;Adhearsion&lt;/a&gt;:
 a framework crafted to help people deploy applications that need to interact with &lt;a href="http://www.asterisk.org/"&gt;Asterisk  servers&lt;/a&gt;. The presentation was really cool and comprised a live coding demo which showed us how to write simple voice-enabled applications (with menus and digit recognition). After a short coffee break we met Adam Blum and &lt;a href="http://www.rhomobile.com/products/rhodes"&gt;Rhodes&lt;/a&gt;, a framework that let you create mobile applications for almost
any existing smartphone using Ruby as coding language and &lt;span class="caps"&gt;HTML&lt;/span&gt; for creating views.&lt;/p&gt;


	&lt;p&gt;Then it was the turn of Pablo Formoso Estrada; his talk focused on Archaeopteryx which make the whole conference dance and 
clap their hands at the rhythm of a Ruby-driven runtime midi generator at which Pablo made adjustment
just like a dj does with disks. Aslak Hellesøy then performed a good presentation explaining us what is &lt;a href="http://wiki.github.com/aslakhellesoy/cucumber"&gt;Cucumber&lt;/a&gt; (a tool that helps creating semantic and readable tests written in human language) and showing us its latest features.&lt;/p&gt;


	&lt;p&gt;The last cool speech of the day was helded by Tomasz Stachewicz and focused on &lt;a href="http://tomash.wrug.eu/2009/03/03/rudy-ruby-native-extensions-in-d-programming-language.html"&gt;RuDy&lt;/a&gt; , a tool that lets you create 
Ruby extensions in D. &lt;a href="tinyurl.com/euruko-rudy"&gt;The whole presentation&lt;/a&gt; was made to look like Antonietti’s much discussed 
‘Perfoming like a Pr0n star’ but with ‘rock’ instead of ‘porn’, the result was very hilarious and it’s definitively worth a look.&lt;/p&gt;


	&lt;p&gt;And.. that’s it! Hope you enjoyed this summary and… see you next year in Krakovia!&lt;/p&gt;


	&lt;p&gt;ps: pictures of the event can be found at &lt;a href="http://www.flickr.com/photos/tags/euruko2009/"&gt;Euruko 2009 flickr photostream&lt;/a&gt;&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/SQ_76ZDBJGM" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/5/11/euruko-2009-summary</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2009-04-22:8208</id>
    <published>2009-04-22T07:45:00Z</published>
    <updated>2009-04-22T07:46:28Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/KRuZ0kjBIYQ/selenium-and-cruisecontrol-rb" rel="alternate" type="text/html" />
    <title>Selenium and CruiseControl.rb</title>
<content type="html">
            &lt;p&gt;Within the project we’re developing we found ourselves pretty attracted from the features offered by &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt; so we started to use its beautiful &lt;span class="caps"&gt;IDE&lt;/span&gt; to create behavioral tests that try to ensure our quality requirements.&lt;/p&gt;


	&lt;p&gt;But soon we discovered that manually aggregating and running these tests often lead to problems: first of all you don’t really have the same data on your developer instance each time you run Selenium so it happens that a particular business object is no more present or has been already, let’s say, processed and that means failure.&lt;/p&gt;


	&lt;p&gt;So we decide to move all the test we created to our CruiseControl.rb instance. To do that we followed these steps:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Create a Selenium startup script by following &lt;a href="http://mohammed.morsi.org/blog/?q=node/244"&gt;this good post&lt;/a&gt; from Mohammed Morsi;&lt;/li&gt;
		&lt;li&gt;Save your Selenium &lt;span class="caps"&gt;IDE&lt;/span&gt; tests as Unit Test File (File &amp;gt; Export Test Case As.. &amp;gt; Ruby) and copy them under your application tests/unit directory;&lt;/li&gt;
		&lt;li&gt; Put this piece of code within your ‘custom_cc.rake’ file&lt;/li&gt;
	&lt;/ul&gt;


&lt;pre&gt;&lt;code&gt;
      begin
        puts "="*10 + "SELENIUM TESTS" + "="*10
        Kernel.system "ruby","script/server","-d","-e","development","-p","3000" 
        CruiseControl::invoke_rake_task 'test:units'
      rescue =&amp;gt; e
        @test_errors &amp;lt;&amp;lt; e
      end
        Kernel.system "killall","ruby" 
      end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;That’s all! Hope you’ll find it useful !&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/KRuZ0kjBIYQ" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/4/22/selenium-and-cruisecontrol-rb</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2009-04-08:8207</id>
    <published>2009-04-08T08:28:00Z</published>
    <updated>2009-04-08T08:30:59Z</updated>
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/ScS2NtC3BIg/how-to-retrieve-find-options-from-named-scopes" rel="alternate" type="text/html" />
    <title>How to retrieve find options from named scopes </title>
<content type="html">
            &lt;p&gt;Hi, It’s been a while since my last post, I apologize but I have been really busy with coding and testing (Cucumber is awesome!) for a quite important project. Within these days I came across this interesting trick that lets me discover how to return a ready-for-find options hash from a named_scope and also from an association.&lt;/p&gt;


So, let’s take this (simple) named scope for example:
&lt;pre&gt;&lt;code&gt;
named_scope :name, lambda do |query|
    firstname, lastname = query.split(" ")
    {:conditions=&amp;gt;{:firstname =&amp;gt;firstname, :lastname =&amp;gt; lastname}}
end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;By calling the method ‘proxy_options’ after the scope you’ll be able to retrieve the generated options Hash:&lt;/p&gt;


&lt;pre&gt;&lt;/code&gt;
User.name(“Sandro Paganotti”).proxy_options 
#  {:conditions=&amp;gt;{:firstname=&amp;gt;”Sandro”, :lastname=&amp;gt;”Paganotti”}}
&lt;/code&gt;&lt;/pre&gt;

If you need to obtain the same result from an association you can use the method ‘construct_scope’ as follows
&lt;pre&gt;&lt;/code&gt;
User.first.comments.send(:construct_scope)[:find]
# {:limit=&amp;gt;nil, :readonly=&amp;gt;false, :order=&amp;gt;nil, :include=&amp;gt;nil, :conditions=&amp;gt;”`comments`.user_id = 1”}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Sandro&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/ScS2NtC3BIg" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/4/8/how-to-retrieve-find-options-from-named-scopes</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-04-03:8206</id>
    <published>2009-04-03T14:00:00Z</published>
    <updated>2009-04-03T14:01:09Z</updated>
    <category term="Ruby on Rails" />
    <category term="Whodo.es" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/9mVThwgjn2A/rails-1-2-3-ro-rails-2-3" rel="alternate" type="text/html" />
    <title>Rails 1.2.3 to Rails 2.3</title>
<content type="html">
            &lt;p&gt;As I mentioned last week, I am busy doing an upgrade of &lt;a href="http://whodo.es"&gt;WhoDo.es&lt;/a&gt; from Rails 1.2.2 to Rails 2.3 and it is slowly sowly coming together, still have to do a lot of modifications for internationalization.&lt;/p&gt;


	&lt;p&gt;In my search for any help, I came across a very good step-by-step guide from &lt;em&gt;Peter Marklund&lt;/em&gt; that might help someone if they might have a similar quest!&lt;/p&gt;


	&lt;p&gt;Hope it might be useful for someone else. Please follow the link &lt;a href="http://marklunds.com/articles/one/409"&gt;here&lt;/a&gt;&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/9mVThwgjn2A" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/4/3/rails-1-2-3-ro-rails-2-3</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2009-03-27:8205</id>
    <published>2009-03-27T16:44:00Z</published>
    <updated>2009-03-27T16:46:52Z</updated>
    <category term="Ruby on Rails" />
    <category term="Whodo.es" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/-3L9TBebVj0/migrating-whodo-es" rel="alternate" type="text/html" />
    <title>Migrating WhoDo.es...</title>
<content type="html">
            &lt;p&gt;&lt;img src="http://railsonwave.com/assets/2009/3/27/KeynoteScreenSnapz001.png" height="80px" width="590px"&gt;
&lt;b&gt;I am currently  working on Migrating &lt;a href="http://whodo.es"&gt;WhoDo.es&lt;/a&gt; from Rails 1.2.2 to Rails 2.3. &lt;/b&gt;&lt;/p&gt;


	&lt;p&gt;My first steps were to migrate from Rails 1.2.2 to Rails 2.0 and no real big issues were faced, I only had to make sure that the gems that we were using were compatible with Rails 2.0.&lt;/p&gt;


	&lt;p&gt;Some of the following configurations had to be done:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Updated &lt;em&gt;environments.rb&lt;/em&gt; with &lt;span class="caps"&gt;RAILS&lt;/span&gt;_GEM_VERSION = ‘2.0.2’ &lt;/li&gt;
&lt;li&gt;run &lt;strong&gt;rake rails:update:configs&lt;/strong&gt; to update your  &lt;em&gt;config/boot.rb&lt;/em&gt; file from your current rails install. &lt;/li&gt;
&lt;li&gt;In my &lt;em&gt;config/environment/development.rb&lt;/em&gt; commenting out the following :&lt;/li&gt;

&lt;code&gt;
&lt;pre&gt;
   #config.action_view.cache_template_extensions = false
&lt;/pre&gt;
&lt;/code&gt;

&lt;li&gt;Since they removed pagination from the new version, I had to install the &lt;a href="http://github.com/mislav/will_paginate/tree/master"&gt;will_paginate&lt;/a&gt; plugin.&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;My next biggest challenge is to migrate to Rails 2.3. Some more serious changes will need to be made, such as:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="http://guides.rubyonrails.org/i18n.html"&gt;Rails Internationalization&lt;/a&gt; a change from globalization&lt;/li&gt;
&lt;li&gt;Using the Rails&lt;a href="http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/"&gt;Time-zone&lt;/a&gt; instead of the &lt;a href="http://tzinfo.rubyforge.org/"&gt;TzInfo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;Keep an eye on this blog, any discoveries that I might come across I will be posting here…&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/-3L9TBebVj0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/3/27/migrating-whodo-es</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Giuseppe Arici</name>
    </author>
    <id>tag:www.railsonwave.com,2009-02-27:8202</id>
    <published>2009-02-27T09:39:00Z</published>
    <updated>2009-02-27T10:33:15Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/JGBEi6rpfJ0/iphone-on-rails" rel="alternate" type="text/html" />
    <title>iPhone on Rails</title>
<summary type="html">&lt;p&gt;Introduction to ObjectiveResource, the open source framework that connects the iPhone to the Ruby on Rails application&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Introduction to ObjectiveResource, the open source framework that connects the iPhone to the Ruby on Rails application&lt;/p&gt;
&lt;h3&gt;Introduction to ObjectiveResource, the open source framework that connects the iPhone to the Ruby on Rails application&lt;/h3&gt;


	&lt;p&gt;&lt;img src="http://railsonwave.com/assets/2009/2/27/iphoneonrails.jpg" /&gt;API&lt;/span&gt; directly.&lt;/p&gt;


	&lt;p&gt;The opinion of ObjectiveResource can only be positive: good idea, good projecting and  careful implementation.  Welcoming instruments that facilitate integration between the world of web and mobile devices  such as iPhone.
The opportunity that this library offers are interesting and many. Think of a possible example to simply develop functional applications for the iPhone, that makes it possible directly in real-time on the terminal of the user an altogether well-defined and limited to updated data (for example earnings of the quotations, on the variation of prices, on the unsold goods, ...) without having to develop the mobile version of the whole application.&lt;/p&gt;


	&lt;p&gt;At the end of this library it allows you to quickly develop with Ruby on Rails to the flexibility of the utilization of the iPhone: agility to the nth power!&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/JGBEi6rpfJ0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2009/2/27/iphone-on-rails</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2008-12-23:8201</id>
    <published>2008-12-23T21:15:00Z</published>
    <updated>2008-12-23T21:16:51Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/FiS75i24vfc/scrubyt-a-quick-view" rel="alternate" type="text/html" />
    <title>Scrubyt, a quick view:</title>
<content type="html">
            &lt;p&gt;Today I come up to &lt;a href="http://scrubyt.org/"&gt;Scrubyt&lt;/a&gt;, an excellent piece of code developed by  Peter Szinek, Glenn Gillen and a bunch of other collaborators. What this software do is essentially fetch and operate on &lt;span class="caps"&gt;XML&lt;/span&gt;/HTML pages, here’s an example &lt;a href="http://github.com/scrubber/scrubyt_examples/tree/master/ebay.rb"&gt;taken&lt;/a&gt; from the official website:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
require 'rubygems'
require 'scrubyt'

ebay_data = Scrubyt::Extractor.define do

     fetch 'http://www.ebay.com/'
     fill_textfield 'satitle', 'ipod'
     submit

     record "//table[@class='nol']" do
       name "//td[@class='details']/div/a" 
     end
end

puts ebay_data.to_xml
&lt;/code&gt;&lt;/pre&gt; 

	&lt;p&gt;In this ten lines of code (including the two ‘require’ on top of the page) we fetch ‘ebay.com’ website, then we fill a textfield with the id ‘satitle’ with the text ‘ipod’ and we press the submit button. Next we create a container (named ‘record’) for each table with class ‘nol’ of the returning page (the page containing the results from our ‘ipod’ search) and we fill this container with a ‘name’ variable containing the text within an ‘A’ element incapsulated inside a td with class ‘details’.&lt;/p&gt;


	&lt;p&gt;If we print the result as xml (as we do in the last line) this will be the output (truncated):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
&amp;lt;root&amp;gt;
  &amp;lt;record&amp;gt;
    &amp;lt;name&amp;gt;USB 2.0 Sync Data Cable for iPhone 3G iPod Mini NanoPOWER SELLER-30 DAYS MONEY BACK GUARANTEE-FAST SHIPPING$1.99Free shipping22d&amp;amp;amp;#160;5h&amp;amp;amp;#160;50m&amp;lt;/name&amp;gt;
  &amp;lt;/record&amp;gt;
  &amp;lt;record&amp;gt;
    &amp;lt;name&amp;gt;EnlargePIONEER 5.8&amp;amp;quot; GPS NEW AVIC-F90BT DVD MP3 IPOD AVICF90BT!!!  HAS THE NEW 2.0 UPDATE INSTALLED  !!!!! 2.0 UPDATE$637.00Free shipping9d&amp;amp;amp;#160;5h&amp;amp;amp;#160;35m&amp;lt;/name&amp;gt;
  &amp;lt;/record&amp;gt;
  &amp;lt;record&amp;gt;
...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;In conclusion, this is a very nice and handy toy that can help us during deployment and test.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/FiS75i24vfc" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2008/12/23/scrubyt-a-quick-view</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-11-19:7995</id>
    <published>2008-11-19T14:57:00Z</published>
    <updated>2008-11-19T14:58:57Z</updated>
    <category term="Ruby on Rails" />
    <category term="Web 2.0" />
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/3M-IF-ffDAE/iphone-hype" rel="alternate" type="text/html" />
    <title>iPhone hype...</title>
<content type="html">
            &lt;p&gt;If we consider the business world, since the &lt;strong&gt;Blackberry&lt;/strong&gt; was released in 2002, it broadened the use of IT in the business world. Receiving e-mail on your smartphone and being able to be updated in real-time was a useful tool for everyone.&lt;/p&gt;


	&lt;h3&gt;But then came along the iPhone….&lt;/h3&gt;


	&lt;p&gt;&lt;img src="http://railsonwave.com/assets/2008/11/19/iphones.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;The iPhone changed the whole game of the smartphone. Not only is it an interesting little device that allows you to be updated with your e-mail, organize your appointments, manage what you need to do but so many more applications are being developed that have reached the top of the top 25 list of apps to have. Like the new &lt;em&gt;Google voice search application&lt;/em&gt;
that enables you to search a website using your voice, but I have tried it and maybe it didn’t like my voice…&lt;/p&gt;


	&lt;p&gt;iPhone applications have created another dimension in the development of web applications, not only to develop web 2.0 applications in Ruby on Rails but for our applications to be successful and competing within the current market, we need to develop iPhone web applications that are synchronized with our web applications. A simple to-do list application is much more useful if you can view it on your iPhone and manage it from there too.&lt;/p&gt;


	&lt;p&gt;But then I ask myself…&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;is it better to develop iPhone web applications or native applications?&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Some advantages of web applications :&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;web based therefore can be cross -browsered&lt;/li&gt;
&lt;li&gt;it can be used with other smartphones and not only for the iPhone&lt;/li&gt;
&lt;li&gt;you don’t need approval from Apple&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;If anyone has any comments I would appreciate it.&lt;/p&gt;


	&lt;p&gt;Thanks&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/3M-IF-ffDAE" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2008/11/19/iphone-hype</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2008-11-10:7921</id>
    <published>2008-11-10T11:25:00Z</published>
    <updated>2008-11-10T11:27:26Z</updated>
    <link href="http://feedproxy.google.com/~r/Railsonwave-Home/~3/pKfhB4ea7bw/is-this-a-globalize-bug" rel="alternate" type="text/html" />
    <title>Is this a Globalize bug ?</title>
<content type="html">
            &lt;p&gt;While installing Globalize I stumbled upon the plug in’s table structure. If we look at the ‘tr_key’ field inside the table ‘globalize_translations’ we may notice that this field type is ‘VARCHAR (255)’ (obviously only under mysql but I think this 
is the database chosen by the majority of rails developers).&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Hey, but isn’t this column the one holding the strings to be translated?&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;The answer is (ASAIK) yes, in fact if we look inside file ‘view_translation.rb’ (inside the plug in’s models’ folder) we  spot this piece of code:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
    def self.pick(key, language, idx, namespace = nil)
      conditions = 'tr_key = ? AND language_id = ? AND pluralization_index = ?'
      namespace_condition = namespace ? ' AND namespace = ?' : ' AND namespace IS NULL'
      conditions &amp;lt;&amp;lt; namespace_condition
      find(:first, :conditions =&amp;gt; [conditions,*[key, language.id, idx, namespace].compact])
    end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Wow, the ‘tr_key’ is used also to store and (as shown here) retrieve translations from the db; but &lt;em&gt;what happens if the string I’m trying to translate exceed the 255 chars limit?&lt;/em&gt;. Simple, the string get saved on the database truncated at its 255th character, then when the plug in try to search for this string obviously it didn’t find anything (‘cause it’s looking for the whole string, not its first 255 chars); the result? A string longer than 255 chars never get translated plus it creates a duplicate row each time is called its ‘t’ method.&lt;/p&gt;


	&lt;p&gt;The fix I coded is pretty easy:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
    def self.pick(key, language, idx, namespace = nil)
      conditions = 'tr_key = ? AND language_id = ? AND pluralization_index = ?'
      namespace_condition = namespace ? ' AND namespace = ?' : ' AND namespace IS NULL'
      conditions &amp;lt;&amp;lt; namespace_condition
      find(:first, :conditions =&amp;gt; [conditions,*[key[0...256], language.id, idx, namespace].compact])
    end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;In this way you just need to be aware of long string with the first 255 chars in common; but this is quite rare, so you can easily ignore it.&lt;/p&gt;


	&lt;p&gt;Sandro&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/pKfhB4ea7bw" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/2008/11/10/is-this-a-globalize-bug</feedburner:origLink></entry>
</feed>
