<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7937261726519897289</id><updated>2011-10-30T06:17:46.115-07:00</updated><category term='ruby'/><category term='javascript'/><category term='ruby gem'/><category term='ruby mysql'/><category term='Ruby Rails'/><title type='text'>spariamsgems</title><subtitle type='html'>Ruby, Ruby on Rails</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-7635571952464701748</id><published>2008-03-23T20:11:00.000-07:00</published><updated>2008-03-23T20:13:38.260-07:00</updated><title type='text'>Blog Change</title><content type='html'>Well, for now I've decided it's too much of a hassle to maintain a separate blog strictly for Rails, so I'll be posting everything to my main tech blog, &lt;a href="http://kl93.blogger.com/" &gt;kl93&lt;/a&gt;. See you there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-7635571952464701748?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/7635571952464701748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=7635571952464701748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/7635571952464701748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/7635571952464701748'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2008/03/blog-change.html' title='Blog Change'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-8641752390534146287</id><published>2008-01-05T07:33:00.001-08:00</published><updated>2008-01-05T07:33:46.822-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Install Ruby without openssl</title><content type='html'>When installing Ruby on an old machine, I got this error:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ruby make[1]: *** [ossl_ssl.o] Error 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Other than installing openssl, which wasn't option, install ruby without openssl:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ ./configure prefix=/home/doug/bin/ruby --without-openssl&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-8641752390534146287?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/8641752390534146287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=8641752390534146287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8641752390534146287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8641752390534146287'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2008/01/install-ruby-without-openssl.html' title='Install Ruby without openssl'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-8062459906070697563</id><published>2008-01-05T07:28:00.000-08:00</published><updated>2008-01-05T07:29:10.051-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby Rails'/><title type='text'>Autotesting Javascript in Rails</title><content type='html'>From &lt;a href="http://drnicwilliams.com" target="_blank"&gt;Dr. Nic's Blog&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://drnicwilliams.com/2008/01/04/autotesting-javascript-in-rails/" target="_blank"&gt;Autotesting Javascript in Rails&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-8062459906070697563?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/8062459906070697563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=8062459906070697563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8062459906070697563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8062459906070697563'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2008/01/autotesting-javascript-in-rails.html' title='Autotesting Javascript in Rails'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-5161787530438525096</id><published>2008-01-03T12:22:00.001-08:00</published><updated>2008-01-03T12:22:52.373-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby gem'/><title type='text'>Upgrading to specific version of Rails</title><content type='html'>&lt;pre&gt;&lt;br /&gt;sudo gem install -v=2.0.1 rails --include-dependencies&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-5161787530438525096?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/5161787530438525096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=5161787530438525096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/5161787530438525096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/5161787530438525096'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2008/01/upgrading-to-specific-version-of-rails.html' title='Upgrading to specific version of Rails'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-7871354829893797304</id><published>2007-12-11T19:22:00.000-08:00</published><updated>2007-12-11T19:36:00.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby mysql'/><title type='text'>Ruby Database Connectivity</title><content type='html'>After mostly doing RoR work for the last several months, lately I've had to write a few command line scripts that interact with MySQL. &lt;br /&gt;&lt;br /&gt;I came across an article by Steve Litt on &lt;a href="http://www.troubleshooters.com/" target="_blank"&gt;Troubleshooters.com&lt;/a&gt;, which I found useful for comparing the mysql driver, dbi, and ActiveRecord:&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.troubleshooters.com/codecorn/ruby/database/index.htm" target="_blank"&gt;Ruby Database Connectivity&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here a few articles by &lt;a href="http://www.kitebird.com/" target="_blank"&gt;Paul DuBois&lt;/a&gt; on Ruby and database connectivity:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kitebird.com/articles/ruby-mysql.html" target="_blank"&gt;Using the Ruby MySQL Module&lt;/a&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href="http://www.kitebird.com/articles/ruby-dbi.html" target="_blank"&gt;Using the Ruby DBI Module&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-7871354829893797304?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/7871354829893797304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=7871354829893797304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/7871354829893797304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/7871354829893797304'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/ruby-database-connectivity.html' title='Ruby Database Connectivity'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-8360339187061538503</id><published>2007-12-11T19:01:00.001-08:00</published><updated>2007-12-12T11:22:28.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby gem'/><title type='text'>My First RubyGem</title><content type='html'>I rewrote and converted one of my old sourceforge projects from C++ to a Ruby Gem:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://delaycalc.rubyforge.org/" target="_blank"&gt;http://delaycalc.rubyforge.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nothing too earth shattering, but it's certainly nice to get an open source project on Rubyforge....&lt;br /&gt;&lt;br /&gt;If you need to calculate delay times for digital delay processors for a given bpm, then please give it a go:&lt;br /&gt; &lt;br /&gt;$ sudo gem install delaycalc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-8360339187061538503?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/8360339187061538503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=8360339187061538503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8360339187061538503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8360339187061538503'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/my-first-rubygem.html' title='My First RubyGem'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-4182766676532013783</id><published>2007-12-11T18:49:00.001-08:00</published><updated>2007-12-11T18:55:33.433-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby gem'/><title type='text'>RubyGem - HighLine</title><content type='html'>I was looking for a way to prompt a user for input on the console and ran across the RubyGem HighLine. It does a lot more than this, but here's how to capture STDIN from the console:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/local/bin/ruby&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'highline/import'&lt;br /&gt;&lt;br /&gt;username = ask("Enter your username:  ") { |q| q.echo = true }&lt;br /&gt;password = ask("Enter your password:  ") { |q| q.echo = "*" }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here's the output on the console:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ruby highline.rb &lt;br /&gt;Enter your username:  doug&lt;br /&gt;Enter your password:  ******&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Get it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://highline.rubyforge.org/" target="_blank"&gt;HighLine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;or simply install the gem the normal way:&lt;br /&gt;&lt;br /&gt;$ sudo gem install highline&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-4182766676532013783?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/4182766676532013783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=4182766676532013783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/4182766676532013783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/4182766676532013783'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/rubygem-highline.html' title='RubyGem - HighLine'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-4257047259761350798</id><published>2007-12-11T18:14:00.000-08:00</published><updated>2007-12-11T18:27:50.361-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby mysql'/><title type='text'>Ruby on Rails - Legacy MySQL Database</title><content type='html'>I'm rewriting a company admin tool written in mod_perl (Catalyst) and replacing it with a new one using Ruby on Rails. At the moment, I have to keep the legacy database/schema. Most of the old tables don't use auto-incrementing keys, which means I won't get the Rails Active::Record magic and I need to work around the keys.&lt;br /&gt;&lt;br /&gt;Here's an example table:&lt;br /&gt;&lt;br /&gt;mysql&gt; describe clients;&lt;br /&gt;+--------------+-------------+------+-----+---------+-------+&lt;br /&gt;| Field        | Type        | Null | Key | Default | Extra |&lt;br /&gt;+--------------+-------------+------+-----+---------+-------+&lt;br /&gt;| client_abbrv | varchar(5)  | NO   | PRI |         |       | &lt;br /&gt;| client_name  | varchar(50) | YES  |     | NULL    |       | &lt;br /&gt;+--------------+-------------+------+-----+---------+-------+&lt;br /&gt;&lt;br /&gt;To get this to work with Rails, I had to make a few small changes.&lt;br /&gt;&lt;br /&gt;I made one small change in the view, which was setting the name of the primary key field. I changed "client_abbrv" to "id" in the form:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;app/views/client/new.rhtml&lt;/i&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;%= error_messages_for 'client' %&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;fieldset&gt;&lt;br /&gt;    &amp;lt;legend&gt;Add a Client&lt;/legend&gt;&lt;br /&gt;    &amp;lt;% form_tag :action =&gt; "create" do %&gt;&lt;br /&gt;      &amp;lt;p&gt;&lt;br /&gt;        &amp;lt;label for="client_client_name"&gt;Client Name:&lt;/label&gt;&lt;br /&gt;        &amp;lt;%= text_field 'client', 'client_name'  %&gt;&lt;br /&gt;      &amp;lt;/p&gt;&lt;br /&gt;      &amp;lt;p&gt;&lt;br /&gt;        &amp;lt;label for="client_id"&gt;Client Abbrv:&lt;/label&gt;&lt;br /&gt;        &amp;lt;%= text_field 'client', 'id' %&gt;&lt;br /&gt;      &amp;lt;/p&gt;&lt;br /&gt;      &amp;lt;p&gt;&lt;br /&gt;      &amp;lt;%= submit_tag 'Add' %&gt;&lt;br /&gt;      &amp;lt;/p&gt;&lt;br /&gt;    &amp;lt;% end %&gt;&lt;br /&gt;  &amp;lt;/fieldset&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For the model, I had set the primary key with &lt;code&gt;set_primary_key&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;app/models/clients.rb&lt;/i&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Client &lt; ActiveRecord::Base&lt;br /&gt;set_primary_key "client_abbrv"&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Luckily, the table was already pluralized. If it had been "client," then I would have had to add this line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def self.table_name() "client" end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For the controller, I had to change the create method:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;app/controllers/client_controller.rb&lt;/i&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def create&lt;br /&gt;  @client = Client.new&lt;br /&gt;  @client.id = params[:client][:id]&lt;br /&gt;  @client.client_name = params[:client][:client_name]&lt;br /&gt;  if @client.save&lt;br /&gt;    flash[:notice] = "Client was successfully created."&lt;br /&gt;    redirect_to :action =&gt; 'list'&lt;br /&gt;  else&lt;br /&gt;    render :action =&gt; 'new'&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That replaced the old create method where I had the normal:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;@client = Client.new(params[:client])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When using &lt;code&gt;set_primary_key&lt;/code&gt;, you insert data using "id" and typically select data using the actual field name, "client_abbrv" in this case.&lt;br /&gt;&lt;br /&gt;Here's what the controller is doing for the create method:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dsparling-imbps-computer:~/my/rubydev/uclick-admin dsparlingimbp$ script/console &lt;br /&gt;Loading development environment.&lt;br /&gt;&gt;&gt; client = Client.new&lt;br /&gt;=&gt; #&amp;lt;Client:0x32b5e14 @new_record=true, @attributes={"client_name"=&gt;nil}&gt;&lt;br /&gt;&gt;&gt; client.id = "abc"&lt;br /&gt;=&gt; "abc"&lt;br /&gt;&gt;&gt; client.client_name = "ABC Company"&lt;br /&gt;=&gt; "ABC Company"&lt;br /&gt;&gt;&gt; client.valid?&lt;br /&gt;=&gt; true&lt;br /&gt;&gt;&gt; client.save&lt;br /&gt;=&gt; true&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-4257047259761350798?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/4257047259761350798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=4257047259761350798' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/4257047259761350798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/4257047259761350798'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/ruby-on-rails-legacy-mysql-database.html' title='Ruby on Rails - Legacy MySQL Database'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-8863913296935039002</id><published>2007-12-11T18:13:00.002-08:00</published><updated>2007-12-11T18:14:20.691-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby Rails'/><title type='text'>Ruby on Rails - script/console</title><content type='html'>A nice and easy way to check you validation rules...&lt;br /&gt;&lt;br /&gt;With a table called users with fields user_name, password, and email, we can add simple validation to the model User.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;validates_uniqueness_of :user_name, :email&lt;br /&gt;validates_length_of :user_name, :within =&gt; 4..20&lt;br /&gt;validates_length_of :password, :within =&gt; 4..20&lt;br /&gt;validates_length_of :email, :maximum =&gt; 50&lt;br /&gt;validates_format_of :user_name,&lt;br /&gt;                    :with =&gt; /^[A-Z0-9_]*$/i,&lt;br /&gt;                    :message =&gt; "must contain only letters, " +&lt;br /&gt;                                      "numbers and underscores"&lt;br /&gt;validates_format_of :email,&lt;br /&gt;                    :with =&gt; /@/,&lt;br /&gt;                    :message =&gt; "must be a valid email address"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then using script/console, we can check our validation:&lt;br /&gt;&lt;br /&gt;First, try to add a bad record:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ script/console&lt;br /&gt;Loading development environment.&lt;br /&gt;&gt;&gt; user = User.new(:user_name =&gt; "pooh bear",&lt;br /&gt;?&gt; :password =&gt; "pb",&lt;br /&gt;?&gt; :email =&gt; "poohbear_at_100akerwood.com")&lt;br /&gt;=&gt; #&lt;User:0x32bf9b4 @new_record=true, @attributes={"user_name"=&gt;"pooh bear", "password"=&gt;"pb", "email"=&gt;"poohbear_at_100akerwood.com"}&gt;&lt;br /&gt;&gt;&gt; user.save&lt;br /&gt;=&gt; false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you can inspect the errors individually with &lt;code&gt;errors.on&lt;/code&gt; method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt; user.errors.on(:user_name)&lt;br /&gt;=&gt; "must contain only letters, numbers and underscores"&lt;br /&gt;&gt;&gt; user.errors.on(:password)&lt;br /&gt;=&gt; "is too short (minimum is 4 characters)"&lt;br /&gt;&gt;&gt; user.errors.on(:email)&lt;br /&gt;=&gt; "must be a valid email address"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;or all at once with &lt;code&gt;errors.full_messages&lt;/code&gt; method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt; user.errors.full_messages&lt;br /&gt;=&gt; ["Screen name must contain only letters, numbers and underscores", "Password is too short (minimum is 4 characters)", "Email must be a valid email address"]&lt;br /&gt;&gt;&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-8863913296935039002?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/8863913296935039002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=8863913296935039002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8863913296935039002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/8863913296935039002'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/ruby-on-rails-scriptconsole.html' title='Ruby on Rails - script/console'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-9138892126866287513</id><published>2007-12-11T18:13:00.001-08:00</published><updated>2007-12-11T18:13:34.931-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Viewing Ruby Gem documentation</title><content type='html'>1) Command line&lt;br /&gt;&lt;br /&gt;$ ri &amp;lt;gem_name&amp;gt;&lt;br /&gt;&lt;br /&gt;2) Browser (http://localhost:8808)&lt;br /&gt;&lt;br /&gt;$ gem_server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-9138892126866287513?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/9138892126866287513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=9138892126866287513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/9138892126866287513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/9138892126866287513'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/viewing-ruby-gem-documentation.html' title='Viewing Ruby Gem documentation'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-6721292932788798405</id><published>2007-12-11T18:10:00.001-08:00</published><updated>2007-12-11T18:10:40.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Sending E-mail with Ruby Net::SMTP</title><content type='html'>All you need to know is here:&lt;br /&gt;&lt;a href="http://www.ruby-doc.org/stdlib/libdoc/net/smtp/rdoc/classes/Net/SMTP.html" target="_blank"&gt;http://www.ruby-doc.org/stdlib/libdoc/net/smtp/rdoc/classes/Net/SMTP.html&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def send_email(from, from_alias, to, to_alias, subject, message)&lt;br /&gt;&lt;br /&gt;  msg = &amp;lt;&amp;lt;EOF&lt;br /&gt;From: #{from_alias} &amp;lt;#{from}&gt;&lt;br /&gt;To: #{to_alias} &amp;lt;#{to}&gt;&lt;br /&gt;Subject: #{subject}&lt;br /&gt; &lt;br /&gt;#{message}&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;  Net::SMTP.start('localhost') do |smtp|&lt;br /&gt;    smtp.send_message(msg, from, to)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Or if your mail server is on another machine:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Net::SMTP.start(mail_server, port, helo_domain) do |smtp|&lt;br /&gt;    smtp.send_message msg, from, to&lt;br /&gt;  end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;smtp.send_message('your.smtp.server', 25, 'mail.from.domain')&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-6721292932788798405?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/6721292932788798405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=6721292932788798405' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/6721292932788798405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/6721292932788798405'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/sending-e-mail-with-ruby-netsmtp.html' title='Sending E-mail with Ruby Net::SMTP'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7937261726519897289.post-705672516026583709</id><published>2007-12-11T18:02:00.000-08:00</published><updated>2007-12-11T18:08:22.170-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby Blog</title><content type='html'>I'm long-time Perl programmer (Perl/mod_perl) and I've been having a blast moving to Ruby and Ruby on Rails, both at work and for fun. I've decided to create a Ruby specific blog where I can keep my little tidbits of Ruby knowledge. So here we go...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7937261726519897289-705672516026583709?l=spariamsgems.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spariamsgems.blogspot.com/feeds/705672516026583709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7937261726519897289&amp;postID=705672516026583709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/705672516026583709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7937261726519897289/posts/default/705672516026583709'/><link rel='alternate' type='text/html' href='http://spariamsgems.blogspot.com/2007/12/ruby-blog.html' title='Ruby Blog'/><author><name>Doug Sparling</name><uri>http://www.blogger.com/profile/10217915963486446068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YFrXdAA3hPI/ShXsTVfw4sI/AAAAAAAAAJk/M1ZgQpJTv3g/S220/dss20081025-01.jpg'/></author><thr:total>0</thr:total></entry></feed>
