<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
  <channel>
    <title>Özgün Koyun | Freelance Web Developer (Ruby on Rails)</title>
    <description>Ozgun Koyun - Freelance Web Developer</description>
    <link>http://kozgun.net/</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/kozgun" type="application/rss+xml" /><item>
      <title>A few git tips</title>
      <description>&lt;p&gt;&lt;strong&gt;To enable spell checking with git-gui, Install aspell and aspell-en packages.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo pacman -S aspell aspell-en&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Colorful outputs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/articles/21-Lets-bring-some-colors-to--git"&gt;Over Here&lt;/a&gt;-&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To ignore all &amp;#8220;.swp&amp;#8221; files add the following line to your &amp;#8220;.git/info/exclude&amp;#8221; file.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*.swp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;My .gitignore file.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tmp/**/*
log/*.log
db/*.sqlite3
db/*.sql
db/schema.rb
config/database.yml
config/deploy.rb
.loadpath
.project
.DS_Store
cache/views/*
test/fixtures/settings.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Initializing a bare repo&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ mkdir myapp.git
$ cd myapp.git
$ git --bare init&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Creating a remote branch&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git checkout -b mynewbranch
$ git push origin mynewbranch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Playing with branches(create, switch, merge)&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git branch #Display local branches
$ git checkout -b newbranchname # Create a new branch and switch to it.
$ git checkout master # Switch back to master
$ git checkout newbranchname # Switch back to newbranchname
$ git merge master #Merge master branch into newbranchname
$ git checkout newbranchname # Switch back to newbranchname&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Adding a new remote repository&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git remote add origin ssh://user@example.com/home/user/repositories/myapp.git/
$ git remote add origin file:///home/user/repositories/myapp.git/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Undo(revert) committed changes&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ touch file.txt
$ git add file.txt
$ git commit -a -m "Adding file.txt"
$ git log # ==&amp;gt; commit 9972713b5677302580959644aebd33196eefa38e 
$ git-revert 9972713b5677302580959644aebd33196eefa38e
$ git status&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;To revert the most recent commit&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git revert HEAD&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Lets say you changed some files in your working tree and you haven&amp;#8217;t committed yet, but suddenly you decide that it was a big mistake and you want to go back to last committed state. You could undo uncommitted changes with the following command.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git reset --hard HEAD&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://git-scm.com/"&gt;Git &amp;#8211; The Fast Version Control System&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://book.git-scm.com/index.html"&gt;The Git Community Book&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/"&gt;Git Manual&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://delicious.com/search?p=git&amp;amp;u=&amp;amp;chk=&amp;amp;context=main&amp;amp;fr=del_icio_us&amp;amp;lc=0"&gt;Git on del.icio.us&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://git.or.cz/gitwiki"&gt;Git Wiki&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png"&gt;Git cheat sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 14 Feb 2009 01:55:09 +0000</pubDate>
      <link>http://kozgun.net/articles/22-A-few-git-tips</link>
    </item>
    <item>
      <title>Lets bring some colors to &amp;quot;git&amp;quot;</title>
      <description>&lt;h3&gt;Create your .gitconfig file in your home directory.&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;vim ~/.gitconfig&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Copy and paste the following lines to ~/.gitconfig file.&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;[color]
  ui = auto
[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
[color "status"]
  added = yellow
  changed = green
  untracked = cyan&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Now, run some git commands to see some colorful output:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;git status
git branch
git log -p&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Bonus: Lets add some aliases to .gitconfig.&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;[alias]
  st = status
  df = diff
  lg = log -p&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Wanna learn more about &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; ? Lets cheat!&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ sudo gem install cheat
$ cheat git&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Sat, 14 Feb 2009 01:39:41 +0000</pubDate>
      <link>http://kozgun.net/articles/21-Lets-bring-some-colors-to--git-</link>
    </item>
    <item>
      <title>Generating diagrams with Railroad for Rails apps</title>
      <description>&lt;p&gt;&lt;a href="http://railroad.rubyforge.org/"&gt;RailRoad&lt;/a&gt; is a class diagrams generator for Ruby on Rails applications.&lt;sup class="footnote"&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ sudo apt-get install graphviz
$ sudo gem install railroad&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Generating Diagrams&lt;/h3&gt;
&lt;p&gt;Generating models diagram in .dot file format and converting it to png:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ railroad -o models.dot -M
$ dot -Tpng models.dot &amp;gt; models.png&lt;/code&gt;&lt;/pre&gt;
&lt;h6&gt;&lt;a href="/uploads/0000/0014/sopar_models_diagram600.png"&gt;&lt;img src="/uploads/0000/0013/sopar_models_diagram400.png" title="Models diagram of sopar" alt="Models diagram of sopar" /&gt;&lt;/a&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Models diagram in svg format.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ railroad -M | dot -Tsvg &amp;gt; models.svg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Models diagram with all classes showing inheritance relations&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ railroad -a -i -o full_models.dot -M&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controllers diagram in png format.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ railroad -C | neato -Tpng &amp;gt; controllers.png&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;p class="footnote" id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href="http://railroad.rubyforge.org/"&gt;Railroad gem&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.blainekendall.com/index.php/archives/2007/04/11/ruby-on-rails-diagram-generator-railroad/"&gt;Ruby on rails diagram generator &amp;#8211; RailRoad&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 26 Nov 2008 04:57:02 +0000</pubDate>
      <link>http://kozgun.net/articles/19-Generating-diagrams-with-Railroad-for-Rails-apps</link>
    </item>
    <item>
      <title>Rails 2.2 released</title>
      <description>&lt;p&gt;Rails 2.2 has just released. You can read the new features of this release in &lt;a href="http://weblog.rubyonrails.com/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs"&gt;Rails weblog.&lt;/a&gt; Some highlights for the new release which are mentioned in &lt;a href="http://weblog.rubyonrails.com/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs"&gt;Rails weblog&lt;/a&gt; are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Internationalization by default&lt;/li&gt;
	&lt;li&gt;Stronger etag and last-modified support&lt;/li&gt;
	&lt;li&gt;Thread safety and a connection pool&lt;/li&gt;
	&lt;li&gt;Ruby 1.9 and JRuby compatibility&lt;/li&gt;
	&lt;li&gt;Better &lt;span class="caps"&gt;API&lt;/span&gt; docs, great guides&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Rails 2.2 requires the latest RubGems version which is 1.3.1. If you haven&amp;#8217;t upgraded yet, you can do it with the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem update --system&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After updating RubyGems, you are ready to install the new shiny Rails 2.2&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem install rails&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Further readings&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.infoq.com/news/2008/11/rails-22"&gt;Rails 2.2 Released: A Glance at New Features&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://weblog.rubyonrails.com/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs"&gt;Rails 2.2: i18n, &lt;span class="caps"&gt;HTTP&lt;/span&gt; validators, thread safety, JRuby/1.9 compatibility, docs&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com/rails-22-released-27-links-and-resources-to-get-you-going-1354.html"&gt;Rails 2.2 Released &amp;#8211; 27 Links and Resources To Get You Going&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 22 Nov 2008 19:04:10 +0000</pubDate>
      <link>http://kozgun.net/articles/16-Rails-2-2-released</link>
    </item>
    <item>
      <title>Upgrading your rails app from 1.2.x to 2.1.x</title>
      <description>&lt;p&gt;These are the steps I followed while upgrading 2 of my rails applications. One of them was developed with &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt; 1.2.2 and the other was 1.2.3. They are not complicated apps, so my job here was easy. If you have a sophisticated application you may need to work a little bit harder.&lt;/p&gt;
&lt;p&gt;First of all, backup your rails app, in case something bad happens!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cp -r myapp myapp.backup&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Backup your database.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ mysqldump -u username -ppassword db_development &amp;gt; db_development.sql
$ mysqldump -u username -ppassword db_production &amp;gt; db_production.sql&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dive into your old applicaiton and remove all session files.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ cd tmp/sessions
$ find . -name "*_sess*" -exec rm '{}' \;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Update RAILS_GEM_VERSION in your config/environment.rb file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Update your rails app.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ rake rails:update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install necessary plugins. With Rails 2.x some integrated features turned to plugins such as acts_as tree, acts_as_list..&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ ./script/plugin install acts_as_tree
$ ./script/plugin install acts_as_list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add secret key to your config/environment.rb file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config.action_controller.session = { 
    :session_key =&amp;gt; "_myapp_session", 
    :secret =&amp;gt; "your secret here .. don't tell anyone" 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install &amp;#8220;classic_pagination&amp;#8221; plugin if you used pagination in your application. The official source for this plugin should be &amp;#8220;svn://errtheblog.com/svn/plugins/classic_pagination&amp;#8221;. However, this &lt;span class="caps"&gt;URL&lt;/span&gt; is unreachable. So we are going to try another workaround to install it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ cd vendor/plugins
$ git clone git://github.com/masterkain/classic_pagination.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Find and replace all &amp;#8220;find_all&amp;#8221; with &amp;#8220;find(:all)&amp;#8221;. To find out:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ grep find_all * -r&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you used &amp;#8220;start_form_tag&amp;#8221; and &amp;#8220;end_form_tag&amp;#8221; in you app, you should add 2 methods to application helper. If you don&amp;#8217;t want to add these 2 methods, then you should convert your forms to code block. Check out &lt;a href="http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/a38549a4dc4d3feb?pli=1"&gt;this google group discussion&lt;/a&gt; for more info.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd myapp
$ vim app/helpers/application.helper&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;def start_form_tag(*args)
  form_tag(*args)
end
def end_form_tag
  '&amp;lt;/form&amp;gt;'
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;ve realized that I didn&amp;#8217;t use RAILS_ROOT in my application while setting file or directory paths. Rails 1.2.x version didn&amp;#8217;t complain about that, however, Rails 2.x complains about not finding directory paths. I solved this issue by using RAILS_ROOT while creating directory or file paths. If you have file uploads in your application, I suggest you look over your codes.&lt;/p&gt;
&lt;p&gt;Show time! Start your application server and test with your browser. I know you run &lt;a href="http://mozilla.com"&gt;Firefox&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./script/server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is how I managed to work my old rails app work in Rails 2.1.2. They are not very complicated apps, so it was easy to switch to Rails 2.1.2. If you want to add something to my list please be my guest. Thanks!&lt;/p&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyonrails.org/deprecation"&gt;Deprecation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Fri, 14 Nov 2008 18:33:49 +0000</pubDate>
      <link>http://kozgun.net/articles/14-Upgrading-your-rails-app-from-1-2-x-to-2-1-x</link>
    </item>
    <item>
      <title>Looking up coordinates with google-geocode gem in Ruby</title>
      <description>&lt;p&gt;&amp;#8220;google-geocode&amp;#8221; helps you to look up the coordinates of a given address.&lt;/p&gt;
&lt;p&gt;Installing google-geocode&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem install google-geocode&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Getting your google maps api key.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://code.google.com/apis/maps/signup.html&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is the simple code to fetch coordinates of a given address.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby
require 'rubygems'
require 'google_geocode'
api_key = 'yourapikey'
address = "34357 Istanbul Dolmabahce"
begin
  gc = GoogleGeocode.new(api_key)
  location = gc.locate(address)
  puts "Adress queried: #{address}"
  puts "---------------------------------------"
  puts "Fetched results:"
  puts "latitude: #{location.latitude}"
  puts "longitude: #{location.longitude}"
  puts "Coordinates lat,lon: #{location.coordinates}"
  puts "Adress fetched: #{location.address}"
rescue GoogleGeocode::KeyError =&amp;gt; e
  puts "GoogleGeocode::KeyError =&amp;gt; #{e.message}"
rescue GoogleGeocode::AddressError =&amp;gt; e 
  puts "GoogleGeocode::AddressError =&amp;gt; #{e.message}"
rescue GoogleGeocode::Error =&amp;gt; e
  puts "GoogleGeocode::Error =&amp;gt; #{e.message}"
rescue Exception =&amp;gt; e
  puts "Exception =&amp;gt; #{$!}"
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://dev.robotcoop.com/Libraries/google-geocode"&gt;google-gecode gem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 08 Nov 2008 02:33:28 +0000</pubDate>
      <link>http://kozgun.net/articles/13-Looking-up-coordinates-with-google-geocode-gem-in-Ruby</link>
    </item>
    <item>
      <title>Hall of Fame of Rails Rumble 2008</title>
      <description>&lt;p&gt;&lt;a href="http://railsrumble.com/"&gt;Rails Rumble&lt;/a&gt; is a competition for &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; developers which developer teams compete during a weekend (48 hours) to create a working web application from scratch. &lt;a href="http://railsrumble.com/entries"&gt;130 applications&lt;/a&gt; qualified in Rails Rumble 2008. The winners are decided with the users votes. Yeah, it&amp;#8217;s democary in action. So I&amp;#8217;ve reviewed and voted at least a dozen of apps during last week. It was amazing to see how fast talented developers produce web applications using one of the most effective and productive web development framework &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let me cut to the chase and introduce the winners to you:&lt;/p&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;Application &lt;/th&gt;
		&lt;th&gt;Developer Team &lt;/th&gt;
		&lt;th&gt;Awarded &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://meetinbetween.r08.railsrumble.com/"&gt;Meet In Between&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/great-lakes-geeks"&gt;Great Lakes Geeks&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; First Overall &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://qflip.r08.railsrumble.com/"&gt;Qflip&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/scatapult"&gt;Scatapult&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Second Overall &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://riverdex.r08.railsrumble.com/"&gt;Riverdex&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/new-media-logic"&gt;New Media Logic&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Third Overall &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://handcrafted.r08.railsrumble.com/"&gt;Jot.ly&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/team-handcrafted"&gt;Team Handcrafted&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Best Appearance &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://app.r08.railsrumble.com/"&gt;TrackClass&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/the-loose-knuckles"&gt;The Loose Knuckles&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Best Completeness &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://so2speak.r08.railsrumble.com/"&gt;So2Speak&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/the-verbose"&gt;The Verbose&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Best Innovation &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://whatdoesthiserrormean.r08.railsrumble.com/"&gt;What Does this Error Mean?&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/team-giraffesoft"&gt;Team GiraffeSoft&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Best Usefulness  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://foreverhome.r08.railsrumble.com/"&gt;Forever Home&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;a href="http://railsrumble.com/teams/leaf-on-the-wind"&gt;Leaf on the Wind&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Best Solo Team &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;The list above summarizes the winners. However, I can say that there are &lt;a href="http://railsrumble.com/entries"&gt;more than 8 apps&lt;/a&gt; which you can find useful and intersting. Here, I want to share my favorites with you.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myideadrawer.r08.railsrumble.com/"&gt;MyIdeaDrawer&lt;/a&gt; which helps you to organize and share your projects easily, was created by &lt;a href="http://railsrumble.com/teams/teamwnn"&gt;TeamWNN&lt;/a&gt;. The team consits of one developer and one designer: &lt;a href="http://railscasts.com/"&gt;Ryan Bates&lt;/a&gt; and &lt;a href="http://kellishaver.com/"&gt;Kelli Shaver&lt;/a&gt; . (I&amp;#8217;m sure Rails fans will remember Ryan Bates from &lt;a href="http://railscasts.com/"&gt;Railscasts&lt;/a&gt; ) After a quick signup with OpenID, you could immediately start to create your projects. Your project may include codes snippets, notes, links, screenshots, color palletes and photos. Control panel is really easy to use. You could see recent activites on your project in the sidebar. And the design is pretty nice.&lt;/p&gt;
&lt;p&gt;Another favorite of mine is &lt;a href="http://getalime.r08.railsrumble.com/"&gt;Remindr&lt;/a&gt; which is kind of a reminder service supporting &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt;, &lt;a href="http://jabber.org"&gt;Jabber&lt;/a&gt;, Email and Cell Phone. It was developed by the theam &lt;a href="http://railsrumble.com/teams/getalime"&gt;Getalime&lt;/a&gt; . The purpose of the app is very simple: It reminds you what you want to remember and when you want to remember, via the services you define. I&amp;#8217;ve tried twitter reminder service. Worked great. So if you are lookig for a simple reminder, &lt;a href="http://getalime.r08.railsrumble.com"&gt;Remindr&lt;/a&gt; could be the solution for you.&lt;/p&gt;
&lt;p&gt;So you decided to become a writer and you don&amp;#8217;t know where to start. Luckily you, I could suggest you some place to start. &lt;a href="http://storyseed.r08.railsrumble.com/"&gt;StorySeed&lt;/a&gt; . It was created by the team &lt;a href="http://railsrumble.com/teams/bibliophiles"&gt;Bibliophiles&lt;/a&gt; . After signing up and loggin in, you could start to create your book which may hit the shelves and may become best seller soon! Who knows?&lt;/p&gt;
&lt;p&gt;&amp;#8220;Life! Don&amp;#8217;t talk to me about Life&amp;#8221; says Marvin the Paranoid Android. If you are a fan of great quotations too like me, I suggest you to give a chance to &lt;a href="http://quotagious.r08.railsrumble.com/"&gt;Quotagious&lt;/a&gt; which created by &lt;a href="http://railsrumble.com/teams/cphftw"&gt;CphFTW&lt;/a&gt; . After you singed up, you could enter your favorite quotes and share them with the rest of the world. If you follow &lt;a href="http://twitter.com/quotagious"&gt;Quotagious&lt;/a&gt; on &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt; you will get a free quote everyday.&lt;/p&gt;
&lt;p&gt;I think it&amp;#8217;s enough for one article! Maybe I&amp;#8217;ll continue to review more rumble applications at another time. By the way, what took my attention about the apps created in the Rails Rumble that how widely &lt;a href="http://en.wikipedia.org/wiki/Openid"&gt;OpenID&lt;/a&gt; is used. At least i run into it many apps I&amp;#8217;v reviewed.&lt;/p&gt;
&lt;p&gt;I hope to compete in Rails Rumble in 2009. We&amp;#8217;ll see&amp;#8230; Oh, by the way, if you want to share your favorites here, please be my guest.&lt;/p&gt;</description>
      <pubDate>Sun, 02 Nov 2008 20:06:37 +0000</pubDate>
      <link>http://kozgun.net/articles/12-Hall-of-Fame-of-Rails-Rumble-2008</link>
    </item>
    <item>
      <title>User Authentication with restful-authentication Plugin in Rails</title>
      <description>&lt;p&gt;This is a tutorial about how to integrate &lt;a href="http://github.com/technoweenie/restful-authentication/tree/master"&gt;restful-authentication&lt;/a&gt; plugin to your &lt;a href="http://rubyonrails.org/"&gt;rails&lt;/a&gt; application. &lt;strong&gt;restufl-authentication&lt;/strong&gt; is a plugin that makes user authentication easy for you. Installation and configuration is rather simple.&lt;/p&gt;
&lt;p&gt;Before starting, I want to give information about my system. I&amp;#8217;ve Linux Ubuntu 7.04 installed on my computer. Installed Ruby version is 1.8.6. And the Rails version running on my desktop is 1.2.1.&lt;/p&gt;
&lt;h3&gt;Preparing/Installing Requirements&lt;/h3&gt;
&lt;p&gt;First of all, we&amp;#8217;ll handle requirements by installing required gems. This step is necessary if you plan to use rspec tests in your rails apps. Since our installation requires this feature, first we need to install the following 2 gems.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo gem install rspec
$ sudo gem install rspec-rails&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create your rails app which will be used during this tutorial. I called it &amp;#8220;restauth&amp;#8221;. You are free to give any name you like. For the sake of simplicty i chose to use &amp;#8220;sqlite&amp;#8221; instaead of &amp;#8220;mysql&amp;#8221; database. If you want to use mysql rather than sqlite, run the &amp;#8220;rails&amp;#8221; command with &amp;#8220;-d mysql&amp;#8221; parameter. After creating your rails app, change your current working directory to your newly created rails app.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ rails restauth
$ cd restauth&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ cd vendor/plugins
$ git clone git://github.com/technoweenie/restful-authentication.git restful_authentication
$ cd ../..
$ ./script/generate authenticated user sessions --include-activation --stateful --rspec&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install &amp;#8220;acts_as_state_machine&amp;#8221; plugin.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Running the commands above will add some files to our rails app and also add piece of code to existing files.&lt;/p&gt;
&lt;p&gt;Routes created: (config/routes.rb)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map.logout '/logout', :controller =&amp;gt; 'sessions', :action =&amp;gt; 'destroy'
map.login '/login', :controller =&amp;gt; 'sessions', :action =&amp;gt; 'new'
map.register '/register', :controller =&amp;gt; 'users', :action =&amp;gt; 'create'
map.signup '/signup', :controller =&amp;gt; 'users', :action =&amp;gt; 'new'
map.resources :users
map.resource :session&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Models generated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app/models/user_mailer.rb
app/models/user_observer.rb
app/models/user.rb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controllers generated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app/controllers/sessions_controller.rb
app/controllers/users_controller.rb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Views generated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app/views/sessions/*
app/views/user_mailer/*
app/views/users/*&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Migration generated: (&lt;span class="caps"&gt;XXXXXXXXXXXXXX&lt;/span&gt; depends on the time you create migration)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;db/migrate/XXXXXXXXXXXXXX_create_users.rb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rspec tests and stories generated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec/
stories/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So far so good. If you still haven&amp;#8217;t run into any errors it&amp;#8217;s time to run migration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ rake db:migrate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add user activation routes to &amp;#8220;config/routes.rb&amp;#8221; file. (Because we used &amp;#8220;&amp;#8212;include-activation&amp;#8221; parameter.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map.activate '/activate/:activation_code', 
             :controller =&amp;gt; 'users', 
             :action =&amp;gt; 'activate', 
             :activation_code =&amp;gt; nil&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We used &amp;#8220;&amp;#8212;stateful&amp;#8221;, so we need to add an observer to enviroments and resource for users to routes.&lt;/p&gt;
&lt;p&gt;Add user observer to &amp;#8220;config/environment.rb&amp;#8221; file (inside &amp;#8220;Rails::Initializer.run do |config|&amp;#8221; block)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config.active_record.observers = :user_observer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;p. Add users resource to &amp;#8220;config/routes.rb&amp;#8221; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map.resources :users, :member =&amp;gt; { :suspend   =&amp;gt; :put,
                                   :unsuspend =&amp;gt; :put,
                                   :purge     =&amp;gt; :delete }&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Configuration&lt;/h3&gt;
&lt;p&gt;As you may remember, we had used &amp;#8220;&amp;#8212;include-activation&amp;#8221; parameter while we were installing the plugin, so we need to make a few quick and easy changes.&lt;/p&gt;
&lt;p&gt;Now, open the file &amp;#8220;app/models/user_mailer.rb&amp;#8221; and find and replace &amp;#8220;&lt;span class="caps"&gt;YOURSITE&lt;/span&gt;&amp;#8221; with your website url, &amp;#8220;&lt;span class="caps"&gt;ADMINEMAIL&lt;/span&gt;&amp;#8221; with your email address, &amp;#8220;[&lt;span class="caps"&gt;YOURSITE&lt;/span&gt;]&amp;#8221; with your website&amp;#8217;s title/name.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@body[:url]  = "http://YOURSITE/activate/#{user.activation_code}"
@body[:url]  = "http://YOURSITE/"
@from        = "ADMINEMAIL"
subject     = "[YOURSITE] "&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t want to use randomly generated site key, you could change the value of &amp;#8220;REST_AUTH_SITE_KEY&amp;#8221; located in &amp;#8220;config/initializers/site_keys.rb&amp;#8221; file to something you want.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;REST_AUTH_SITE_KEY = "Life, Don't talk to me about life!"&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;More Customization&lt;/h3&gt;
&lt;p&gt;If you want to change the contents of the activation email or signup notification mail sent to  users, feel free to alter the following templates to meet your needs.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app/views/user_mailer/activation.erb
app/views/user_mailer/signup_notification.erb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Default installation of the plugin doesn&amp;#8217;t enable the &amp;#8220;Remember Me&amp;#8221; option. However, you don&amp;#8217;t need to worry about it, it&amp;#8217;s so very easy to enable it. Just edit the file &amp;#8220;app/views/sessions/new.html.erb&amp;#8221; and uncomment the following lines.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;%= label_tag 'remember_me', 'Remember me' %&amp;gt;
&amp;lt;%= check_box_tag 'remember_me', '1', @remember_me %&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Show Time!&lt;/h3&gt;
&lt;p&gt;Now, fasten your seatbelt and prepare to take off!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./script/server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Signup: Make sure your mail server is running and enter a valid email address of yours. If you don&amp;#8217;t&lt;br /&gt;
have mail server installed on your computer you may want to glance at &lt;a href="http://kozgun.net/articles/3-Using-gmail-to-send-emails-with-Ruby-on-Rails"&gt;this tutorail&lt;/a&gt; which explains how to use &lt;a href="http://gmail.com"&gt;gmail&lt;/a&gt; to send emails with your rails app.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hppt://localhost:3000/signup&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Login&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;htpp://localhost:3000/login&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s all. If you have any questions about this tutorial don&amp;#8217;t hesitate to ask. Thanks for reading.&lt;/p&gt;
&lt;h3&gt;Resources:&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/technoweenie/restful-authentication/tree/master" title="includes documentation"&gt;restful-authentication at github&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://railsforum.com/viewtopic.php?id=14216"&gt;Restful Authentication with all the bells and whistles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 25 Oct 2008 17:10:10 +0000</pubDate>
      <link>http://kozgun.net/articles/11-User-Authentication-with-restful-authentication-Plugin-in-Rails</link>
    </item>
    <item>
      <title>Garfield - My  favorite ones</title>
      <description>&lt;p&gt;A few Garfield comic strips that make me laugh.&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0001/garfield-0201.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0002/garfield-0223.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0003/garfield-0227.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0004/garfield-0314.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0005/garfield-0403.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0006/garfield-0424.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0007/garfield-0502.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0008/garfield-0522.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The following one is kind of special for me.&lt;/p&gt;
&lt;h6&gt;&lt;img src="/uploads/0000/0010/ga790421.gif" alt="" /&gt;&lt;/h6&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;More info and comics about Garfield and his creator Jim Davis:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Garfield"&gt;Garfield at Wikipedia&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;http://en.wikipedia.org/wiki/Jim_Davis_(cartoonist)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.garfield.com/"&gt;Official Website of Garfield&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://garfield.nfshost.com/"&gt;Searchable Garfield comic strips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Fri, 24 Oct 2008 12:01:50 +0000</pubDate>
      <link>http://kozgun.net/articles/10-Garfield---My--favorite-ones</link>
    </item>
    <item>
      <title>Naming Conventions in Ruby</title>
      <description>&lt;p&gt;It&amp;#8217;s good to follow Ruby convetions while writing Ruby programs. In this short tutorial I will a cover a few rules about naming variables, methods, classes and modules in Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Global Variables:&lt;/strong&gt; Golabal variables in Ruby start with a dollar sign: $&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$i_am_a_global_variable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Class Variables:&lt;/strong&gt; Class variables are prefixed with two &amp;#8220;at&amp;#8221; signs: @@&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@@i_am_a_class_variable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Instance Variables:&lt;/strong&gt; Instance variable starts with an &amp;#8220;at&amp;#8221; sign: @&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@i_am_an_instance_variable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Local Varaibles:&lt;/strong&gt; Local variables are in lowercase letters.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;i_am_a_local_variable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Constants:&lt;/strong&gt; Constants start with an uppercase letter.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PI
FeetPerMile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Class Names:&lt;/strong&gt; Class names begin with an uppercase letter.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class String 
  ...
end
class ReadOnlyAssociation
  ...
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Module Names:&lt;/strong&gt; Module names start with an uppercase letter like class names.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module Kernel 
  ...
end
module ActiveRecord
  ...
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Method names and parameters:&lt;/strong&gt; In Ruby, method names and parameters should start with smallcase letter. If method name or parameters has includes than one words, you should separate them using underscores.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def my_method(param1, param2)
  ...
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubycentral.com/book/"&gt;Programming Ruby &amp;#8211; The Pragmatic Programmer&amp;#8217;s Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sun, 19 Oct 2008 05:27:43 +0000</pubDate>
      <link>http://kozgun.net/articles/9-Naming-Conventions-in-Ruby</link>
    </item>
  </channel>
</rss>
