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

<channel>
	<title>AdaRuby &#187; Tips</title>
	<atom:link href="http://www.adaruby.com/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Thu, 04 Aug 2011 04:42:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Fixing RubyGems in Ubuntu Gutsy Installation</title>
		<link>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fixing-rubygems-in-ubuntu-gutsy-installation</link>
		<comments>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 11:57:08 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Complaints]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[gutsy]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[rubygems.ruby]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/</guid>
		<description><![CDATA[Upgrading to the latest RubyGems in Ubuntu Gutsy is a bit non-straightforward. I&#8217;d like to share a quick fix this time. It&#8217;s trivial when you know it, but if not, a friend of mine has almost hosed his system just because of this annoying &#8220;bug&#8221;. Installing Ruby in Ubuntu is pretty simple: sudo aptitude install [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F24%2Ffixing-rubygems-in-ubuntu-gutsy-installation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F24%2Ffixing-rubygems-in-ubuntu-gutsy-installation%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Fixing RubyGems in Ubuntu Gutsy Installation" alt=" Fixing RubyGems in Ubuntu Gutsy Installation" /><br />
			</a>
		</div>
<p><a href="http://www.flickr.com/photos/evil_genius_photography/1415180013/" rel="nofollow" ><img src="http://farm2.static.flickr.com/1098/1415180013_435881aab1.jpg?v=0" alt=" Fixing RubyGems in Ubuntu Gutsy Installation" height="500" width="333" title="Fixing RubyGems in Ubuntu Gutsy Installation" /></a></p>
<p>Upgrading to the latest <a href="http://www.rubygems.org/" rel="nofollow" >RubyGems</a> in <a href="http://www.ubuntu.com/" rel="nofollow" >Ubuntu</a> Gutsy is a bit non-straightforward. I&#8217;d like to share a quick fix this time. It&#8217;s trivial when you know it, but if not, a friend of mine has almost hosed his system just because of this annoying &#8220;bug&#8221;.</p>
<p>Installing <a href="http://www.ruby-lang.org/" rel="nofollow" >Ruby</a> in Ubuntu is pretty simple:</p>
<pre>sudo aptitude install ruby ri irb rdoc rubygems libruby-extras libmysql-ruby ruby1.8-dev</pre>
<p>(add other packages as you see fit)</p>
<p>The problem occurs right after you upgrade RubyGems to the latest version:</p>
<pre>sudo gem update --system</pre>
<p>Then you get something like this:</p>
<pre>ceefour@caliva:/usr/bin$ gem
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)</pre>
<p>Logging in and out doesn&#8217;t work. The world is coming to an end!</p>
<p>Don&#8217;t worry, the world is still running. Check out your /usr/bin folder:</p>
<pre>ceefour@caliva:/usr/bin$ ls -la gem*
-rwxr-xr-x 1 root root 701 2007-08-24 12:18 gem
-rwxr-xr-x 1 root root 698 2008-03-20 09:20 gem1.8
-rwxr-xr-x 1 root root  84 2008-03-20 09:20 gemlock
-rwxr-xr-x 1 root root  89 2008-03-20 09:20 gem_mirror
-rwxr-xr-x 1 root root  76 2008-03-20 09:20 gemri
-rwxr-xr-x 1 root root  89 2008-03-20 09:20 gem_server
-rwxr-xr-x 1 root root  86 2008-03-20 09:20 gemwhich</pre>
<p>So, there is some mismatch between gem and gem1.8. The latter being the newer/correct version.</p>
<p>Simply remove the &#8220;gem&#8221; one and replace (or link) it to the &#8220;gem1.8&#8243; one:</p>
<pre>ceefour@caliva:/usr/bin$ sudo rm gem
ceefour@caliva:/usr/bin$ sudo ln -s gem1.8 gem</pre>
<p>Now:</p>
<pre>ceefour@caliva:/usr/bin$ gem -v
1.0.1</pre>
<p>Presto! We&#8217;re back in business. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Fixing RubyGems in Ubuntu Gutsy Installation" class='wp-smiley' title="Fixing RubyGems in Ubuntu Gutsy Installation" /> </p>
<p>Interesting RubyGems articles:</p>
<ul>
<li><a href="http://blog.fiveruns.com/2008/3/3/compiling-ruby-rubygems-and-rails-on-ubuntu" rel="nofollow" >Compiling Ruby, RubyGems and Rails on Ubuntu</a></li>
<li><a href="http://dmitterdorfer.blogspot.com/2006/01/ruby-gems-on-ubuntu-linux.html" rel="nofollow" >Jag har litet bråttom: Ruby Gems on Ubuntu Linux</a></li>
<li><a href="http://wafa.web.id/2008/01/20/ruby-rubygems-mirroring/" rel="nofollow" >:: nEvEr gIVeUp :: » Ruby, RubyGems Mirroring</a></li>
<li><a href="http://www.vmunix.com/mark/blog/archives/2006/04/08/ruby-gems-still-doesnt-work-on-104/" rel="nofollow" >VMUNIX Blues » Blog Archive » Ruby GEMS still doesn’t work on 10.4?</a></li>
<li><a href="http://digitalemagine.com/wordpress/archives/18" rel="nofollow" >Stefano’s Blog(s) » The magic world of Ruby, Rails and RubyGems &#8230;</a></li>
<li><a href="http://www.openlogic.com/blogs/2007/06/rubyrailsmysql-installation-h-e-double-hockey-sticks/" rel="nofollow" >Ruby/RubyGems/Rails/MySQL installation h e double-hockey sticks &#8230;</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating Subversion repositories using SVK</title>
		<link>http://www.adaruby.com/2008/03/20/migrating-subversion-repositories-using-svk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=migrating-subversion-repositories-using-svk</link>
		<comments>http://www.adaruby.com/2008/03/20/migrating-subversion-repositories-using-svk/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 11:02:41 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svk]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/03/20/migrating-subversion-repositories-using-svk/</guid>
		<description><![CDATA[Recently I got a task which involves moving, or let&#8217;s say copying, an entire Subversion repository with history to another server. Problem is, I didn&#8217;t have access to the server itself, which means I couldn&#8217;t do a regular &#8220;svnadmin dump&#8221;. SVK comes to the rescue! To make it work, first of all you need to [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F20%2Fmigrating-subversion-repositories-using-svk%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F20%2Fmigrating-subversion-repositories-using-svk%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Migrating Subversion repositories using SVK" alt=" Migrating Subversion repositories using SVK" /><br />
			</a>
		</div>
<p>Recently I got a task which involves moving, or let&#8217;s say copying, an entire Subversion repository with history to another server. Problem is, I didn&#8217;t have access to the server itself, which means I couldn&#8217;t do a regular &#8220;svnadmin dump&#8221;.</p>
<p>SVK comes to the rescue!</p>
<p><a href="http://www.flickr.com/photos/jenniferbuehrer/447221619/" rel="nofollow" ><img src="http://farm1.static.flickr.com/250/447221619_5ab9e67a0a.jpg?v=0" alt=" Migrating Subversion repositories using SVK" height="500" width="332" title="Migrating Subversion repositories using SVK" /></a></p>
<p>To make it work, first of all you need to install SVK. In Ubuntu it goes like this:</p>
<pre>sudo aptitude install svk</pre>
<p>When you first run svk it&#8217;ll ask you to create a local depot, you can simply agree to its suggestion.</p>
<p>Now we mirror both of the Subversion repositories we&#8217;re trying to import and export from and to. Note that you need to create the destination repository first.</p>
<pre>svk mirror //source http://svn.source.com/project1/
svk mirror //dest http://svn.dest.com/newproject/</pre>
<p>A bit of niceness with this method instead of a regular svn dump/load procedure is that:</p>
<ul>
<li> you can import to a different folder/subfolder instead of the root folder</li>
<li>you can do a partial export (subfolder of project repository)</li>
</ul>
<p>Before doing the actual migration process, let&#8217;s sync these mirrors first:</p>
<pre>svk sync //source
svk sync //dest</pre>
<p>And then you&#8217;ll do the real thing. But we can simulate it first by using &#8220;&#8211;check-only&#8221;, kinda&#8217; like when you simulate a DVD burning session before actually writing it.</p>
<pre>svk smerge //source //dest --incremental --log --sync --verbatim --track-rename --baseless --check-only</pre>
<p>There are several switches that I used above, feel free to use them only as needed:</p>
<ul>
<li>-I [--incremental]: apply each change individually</li>
<li>-l [--log]: use logs of merged revisions as commit message</li>
<li>-B [--baseless]: use the earliest revision as the merge point</li>
<li>-s [--sync]: synchronize mirrored sources before update</li>
<li>&#8211;verbatim: verbatim merge log without indents and header</li>
<li>&#8211;track-rename: track changes made to renamed node</li>
<li>-C [--check-only]: try operation but make no changes</li>
</ul>
<p>After you&#8217;re ready, redo the above command without &#8220;&#8211;check-only&#8221;:</p>
<pre>svk smerge //source //dest --incremental --log --sync --verbatim --track-rename --baseless</pre>
<p>Simply wait several minutes&#8211;or possibly hours (or days!) if your project is sufficiently large&#8211;for SVK to do its job for you!</p>
<p>Are there disadvantages of using SVK to a &#8220;genuine&#8221; SVN dump/load? Sure, among them is that the original author names are lost.</p>
<p>Good luck!</p>
<p>Related articles and resources:</p>
<ul>
<li><a href="http://svk.bestpractical.com/" rel="nofollow" >HomePage &#8211; SVK Wiki</a></li>
<li><a href="http://utsl.gen.nz/talks/git-svn/intro.html" rel="nofollow" >An introduction to git-svn for Subversion/SVK users and deserters</a></li>
<li><a href="http://scottstuff.net/blog/articles/2005/07/07/distributed-development-with-svk" rel="nofollow" >Distributed development with SVK</a></li>
<li><a href="http://www.newartisans.com/blog_files/svk.primer.php" rel="nofollow" >An SVK primer | Tools | New Artisans LLC</a></li>
<li><a href="http://hsenidians.blogspot.com/2007/07/using-svk-for-offline-access-to.html" rel="nofollow" >Make it happen: Using SVK for offline access to subversion</a></li>
<li><a href="http://www.jkraemer.net/2006/8/15/work-offline-with-svk-and-subversion" rel="nofollow" >jkraemer.net: Work offline with SVK and Subversion</a></li>
<li><a href="http://sablog.com/archives/2006/03/20/svk-mirror-subversion-repositories-locally-and-more" rel="nofollow" >SVK &#8211; Mirror Subversion Repositories Locally and More at sablog.com</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/03/20/migrating-subversion-repositories-using-svk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rearranging Stuff Notice, `Experience Report&#8217; Coming Up Soon!</title>
		<link>http://www.adaruby.com/2008/02/10/rearranging-stuff-notice-experience-report-coming-up-soon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rearranging-stuff-notice-experience-report-coming-up-soon</link>
		<comments>http://www.adaruby.com/2008/02/10/rearranging-stuff-notice-experience-report-coming-up-soon/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 00:13:32 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails Hosting]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[305]]></category>
		<category><![CDATA[317]]></category>
		<category><![CDATA[321]]></category>
		<category><![CDATA[324]]></category>
		<category><![CDATA[328]]></category>
		<category><![CDATA[335]]></category>
		<category><![CDATA[355]]></category>
		<category><![CDATA[356]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/02/10/rearranging-stuff-notice-experience-report-coming-up-soon/</guid>
		<description><![CDATA[I&#8217;d like to express a warm notice that AdaRuby.com might be down intermittently as we&#8217;ll be having major rearrangement and server upgrades of our hosting facilities in the coming days. The upside is, when it&#8217;s done (and oh YES it will be done!), I&#8217;ll be providing you interesting information on the stuff that we&#8217;re doing, [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F02%2F10%2Frearranging-stuff-notice-experience-report-coming-up-soon%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F02%2F10%2Frearranging-stuff-notice-experience-report-coming-up-soon%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Rearranging Stuff Notice, `Experience Report&#8217; Coming Up Soon!" alt=" Rearranging Stuff Notice, `Experience Report&#8217; Coming Up Soon!" /><br />
			</a>
		</div>
<p>I&#8217;d like to express a warm notice that AdaRuby.com might be down intermittently as we&#8217;ll be having major rearrangement and server upgrades of our hosting facilities in the coming days.</p>
<p><a href="http://www.flickr.com/photos/asmundur/2209570995/" rel="nofollow"  title="Maintenance, rearranging, server upgrades"><img src="http://farm3.static.flickr.com/2112/2209570995_3969af4b35.jpg" title="Rearranging Stuff Notice, `Experience Report&#8217; Coming Up Soon!" alt="2209570995 3969af4b35 Rearranging Stuff Notice, `Experience Report&#8217; Coming Up Soon!" /></a></p>
<p>The upside is, when it&#8217;s done (and oh YES it will be done!), I&#8217;ll be providing you interesting information on the stuff that we&#8217;re doing, especially our experience regarding the hosting services that we have been using all this time.</p>
<p>Looking forward to hearing you share your experience as well!</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/02/10/rearranging-stuff-notice-experience-report-coming-up-soon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Design Patterns in Ruby: Software Engineering, The Ruby Way</title>
		<link>http://www.adaruby.com/2008/01/31/design-patterns-in-ruby-software-engineering-the-ruby-way/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=design-patterns-in-ruby-software-engineering-the-ruby-way</link>
		<comments>http://www.adaruby.com/2008/01/31/design-patterns-in-ruby-software-engineering-the-ruby-way/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 11:21:43 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[308]]></category>
		<category><![CDATA[309]]></category>
		<category><![CDATA[318]]></category>
		<category><![CDATA[319]]></category>
		<category><![CDATA[343]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/31/design-patterns-in-ruby-software-engineering-the-ruby-way/</guid>
		<description><![CDATA[Design Patterns in Ruby documents smart ways to resolve many problems that Ruby developers commonly encounter. Addison-Wesley Professional press has this exciting book, authored by Russ Olsen. Russ Olsen has done a great job of selecting classic patterns and augmenting these with newer patterns that have special relevance for Ruby. Most design pattern books are [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F31%2Fdesign-patterns-in-ruby-software-engineering-the-ruby-way%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F31%2Fdesign-patterns-in-ruby-software-engineering-the-ruby-way%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Design Patterns in Ruby: Software Engineering, The Ruby Way" alt=" Design Patterns in Ruby: Software Engineering, The Ruby Way" /><br />
			</a>
		</div>
<p><a href="http://www.amazon.com/gp/product/0321490452?ie=UTF8&amp;tag=adaruby-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0321490452" rel="nofollow" ><strong>Design Patterns in Ruby</strong></a> documents smart ways to resolve many problems that Ruby developers commonly encounter. Addison-Wesley Professional press has this exciting book, authored by <a href="http://www.amazon.com/exec/obidos/search-handle-url/105-0627583-5658824?%5Fencoding=UTF8&amp;search-type=ss&amp;index=books&amp;field-author=Russ%20Olsen" rel="nofollow" >Russ Olsen</a>.</p>
<blockquote><p>Russ Olsen has done a great job of selecting classic patterns and augmenting these with newer patterns that have special relevance for Ruby. Most design pattern books are based on C++ and Java. But Ruby is different—and the language&#8217;s unique qualities make design patterns easier to implement and use.</p>
<p>In this book, Russ Olsen demonstrates how to combine Ruby&#8217;s power and elegance with patterns, and write more sophisticated, effective software with far fewer lines of code.The book especially calls attention to Ruby features that simplify the use of patterns, including dynamic typing, code closures, and &#8220;mixins&#8221; for easier code reuse.</p>
<p><strong>Design Patterns in Ruby </strong>also identifies innovative new patterns that have emerged from the Ruby community. These include ways to create custom objects with metaprogramming, as well as the ambitious Rails-based &#8220;Convention over Configuration&#8221; pattern, designed to help integrate entire applications and frameworks.</p></blockquote>
<p>More resources:</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/0321490452?ie=UTF8&amp;tag=adaruby-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0321490452" rel="nofollow" >&#8220;Design Patterns in Ruby&#8221; at Amazon.com</a></li>
<li><a href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;endeca=1&amp;isbn=0321490452&amp;itm=9" rel="nofollow" >Review at barnesandnoble homepage</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/31/design-patterns-in-ruby-software-engineering-the-ruby-way/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Overview of A Rails Plugin</title>
		<link>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=overview-of-a-rails-plugin</link>
		<comments>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 11:48:23 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[294]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[344]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/27/overview-of-a-rails-plugin/</guid>
		<description><![CDATA[A common stumbling block for beginner Rails developers is learning the basics required to write plugins. This is made more complicated by the fact that Ruby is inherently dynamic and offers many techniques for code reuse. Luckily, if you can write Rails applications you can write plugins by simply drawing on a handful of basic [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F27%2Foverview-of-a-rails-plugin%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F27%2Foverview-of-a-rails-plugin%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Overview of A Rails Plugin" alt=" Overview of A Rails Plugin" /><br />
			</a>
		</div>
<p><a href="http://www.alexyoung.org/" rel="nofollow" >A common stumbling block for beginner Rails developers</a> is learning the basics required to write plugins. This is made more complicated by the fact that Ruby is inherently dynamic and offers many techniques for code reuse.</p>
<p>Luckily, if you can write Rails applications you can write plugins by simply drawing on a handful of basic patterns.</p>
<p><strong>Why write plugins?</strong></p>
<blockquote><p>Writing a plugin will:</p>
<ul>
<li>Help make sharing code more efficient, whether it’s between projects or within the same project</li>
<li>Allow you to publish generic code to the community</li>
<li>Save time and increase your confidence by testing once and reusing many times</li>
<li>Share functionality in a robust manner, especially when using namespaces with ActiveRecord</li>
</ul>
</blockquote>
<p><strong>Usage</strong></p>
<blockquote><p>Rails provides installation scripts through <tt>script/plugin install</tt>, and a generator for creating new plugins: <tt>script/generate plugin</tt>. These will work with URLs, saving time when trying out plugins. You can read more about installing and managing plugins at the <a href="http://wiki.rubyonrails.org/rails/pages/Plugins" rel="nofollow" >Rails wiki</a>.</p></blockquote>
<p><strong>Rubyisms</strong></p>
<blockquote><p>Any of the following tools and techniques provided by Ruby are used by plugins to extend functionality:</p>
<ul>
<li>Mixins: including or extending classes using modules</li>
<li>Opening a class or module definition and adding or overriding methods</li>
<li>Dynamic extension through callbacks and hooks: <tt>method_missing</tt>, <tt>Class#inherited</tt>, <tt>Module#const_missing</tt>, <tt>Module#included</tt></li>
<li>Dynamic extension through code generation: <tt>eval</tt>, <tt>class_eval</tt>, <tt>instance_eval</tt></li>
</ul>
<p>These techniques fall into two broad categories:</p>
<ul>
<li>Using modules and classes to extend existing classes, providing new features</li>
<li>Using introspection to adapt generic code to specific cases</li>
</ul>
<p>It’s important to consider exactly what should be extended when writing a plugin. If complex meta-programming to adapt your plugin to the host application is required, care should be taken to ensure concurrency will not produce unexpected results.</p></blockquote>
<p>Hopefully this very short summary clears things a bit. Read more on  <a href="http://alexyoung.org/articles/show/40/a_taxonomy_of_rails_plugins" rel="nofollow" >Alex Young&#8217;s article</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business Intelligence Made Easy: Practical Reporting with Ruby and Rails</title>
		<link>http://www.adaruby.com/2008/01/23/business-intelligence-made-easy-practical-reporting-with-ruby-and-rails/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=business-intelligence-made-easy-practical-reporting-with-ruby-and-rails</link>
		<comments>http://www.adaruby.com/2008/01/23/business-intelligence-made-easy-practical-reporting-with-ruby-and-rails/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 11:15:33 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[282]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[312]]></category>
		<category><![CDATA[347]]></category>
		<category><![CDATA[348]]></category>
		<category><![CDATA[349]]></category>
		<category><![CDATA[40]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/23/business-intelligence-made-easy-practical-reporting-with-ruby-and-rails/</guid>
		<description><![CDATA[Practical Reporting with Ruby and Rails is a great book for Ruby and Rails developers seeking to create compelling business intelligence and reporting solutions using a wide variety of applications and services. Published by Apress, and the author is David Berube. Business intelligence and real-time reporting mechanisms play a major role in any of today’s [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F23%2Fbusiness-intelligence-made-easy-practical-reporting-with-ruby-and-rails%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F23%2Fbusiness-intelligence-made-easy-practical-reporting-with-ruby-and-rails%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Business Intelligence Made Easy: Practical Reporting with Ruby and Rails" alt=" Business Intelligence Made Easy: Practical Reporting with Ruby and Rails" /><br />
			</a>
		</div>
<p><a href="http://www.amazon.com/dp/1590599330?tag=adaruby-20&amp;camp=14573&amp;creative=327641&amp;linkCode=as1&amp;creativeASIN=1590599330&amp;adid=0KH949361BNS8H1QG6CE&amp;" rel="nofollow" >Practical Reporting with Ruby and Rails</a>  is a great book for Ruby and Rails developers seeking to create compelling business intelligence and reporting solutions using a wide variety of applications and services. Published by <a href="http://www.apress.com/" rel="nofollow" >Apress</a>, and the author is <a href="http://www.cas.sc.edu/ENGL/faculty/berube/" rel="nofollow" >David Berube</a>.</p>
<blockquote><p>Business intelligence and real-time reporting mechanisms play a major role in any of today’s forward-looking business plans. With many of these solutions being moved to the Web, the popular Rails framework and its underlying Ruby language are playing a major role alongside web services in building the reporting solutions of tomorrow. </p></blockquote>
<blockquote><p><em>Practical Reporting with Ruby and Rails</em> is the first book to comprehensively introduce this popular framework, guiding readers through a wide-ranging array of features. Note this isn’t a staid guide to generating traditional reports, but rather it shows you how the Ruby language and Rails framework can create truly compelling reporting services by plugging into popular third-party applications and services such as Google AdWords, UPS.com, iTunes, and SalesForce.com.</p></blockquote>
<p>There&#8217;s a lot to learn from this book, including:</p>
<blockquote>
<ul>
<li>Create reporting solutions for both the Web and the desktop.</li>
<li>Integrate with powerful third-party retail solutions such as eBay, and Amazon.com in order to monitor your sales campaigns in real-time.</li>
<li>Build an invoice reporting system using Rails and PayPal.</li>
<li>Monitor your sales performance by taking advantage of SugarCRM’s web service offerings.</li>
</ul>
</blockquote>
<p>More resources:</p>
<ul>
<li><a href="http://www.amazon.com/dp/1590599330?tag=adaruby-20&amp;camp=14573&amp;creative=327641&amp;linkCode=as1&amp;creativeASIN=1590599330&amp;adid=0KH949361BNS8H1QG6CE&amp;" rel="nofollow" >Editorial review at Amazon.com</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/23/business-intelligence-made-easy-practical-reporting-with-ruby-and-rails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sexy Time Zones in Ruby on Rails with Timezone_Fu</title>
		<link>http://www.adaruby.com/2008/01/21/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sexy-time-zones-in-ruby-on-rails-with-timezone_fu</link>
		<comments>http://www.adaruby.com/2008/01/21/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 11:23:17 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[315]]></category>
		<category><![CDATA[316]]></category>
		<category><![CDATA[344]]></category>
		<category><![CDATA[361]]></category>
		<category><![CDATA[362]]></category>
		<category><![CDATA[363]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/21/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/</guid>
		<description><![CDATA[As easy as: has_timezone :fields =&#62; [ :start_datetime, :end_datetime] Timezone_fu makes it really easy to deal with datetime fields in your models. It adds a method to your models, has_timezone. The README for the plugin describes all of the options but below is an example: class Event &#60; ActiveRecord::Base has_timezone :fields =&#62; [ :start_datetime, :end_datetime] [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F21%2Fsexy-time-zones-in-ruby-on-rails-with-timezone_fu%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F21%2Fsexy-time-zones-in-ruby-on-rails-with-timezone_fu%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Sexy Time Zones in Ruby on Rails with Timezone Fu" alt=" Sexy Time Zones in Ruby on Rails with Timezone Fu" /><br />
			</a>
		</div>
<p>As easy as:<br />
<code>has_timezone :fields =&gt; [ :start_datetime, :end_datetime]</code><br />
<a href="http://hackd.wordpress.com/2007/11/23/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/" rel="nofollow" >Timezone_fu</a> makes it really easy to deal with datetime fields in your models. It adds a method to your models, <strong>has_timezone</strong>.</p>
<blockquote><p>The README for the plugin describes all of the options but below is an example:</p></blockquote>
<blockquote>
<pre><tt>class Event &lt; ActiveRecord::Base
</tt><tt>    has_timezone :fields =&gt; [ :start_datetime, :end_datetime]
</tt><tt>end</tt></pre>
</blockquote>
<blockquote><p>The  model has three fields a start_datetime and end_datetime and a timezone. Adding has_timezone to the model changes the behavior of the two datetime attributes.<br />
Notice below that calling event.start_datetime shows the time in local time (”America/New York”).</p>
<pre><tt>&gt;&gt;</tt><tt> event = Event.find(:first</tt><tt>)</tt><tt></tt><tt>=&gt; #&lt;Event:0×1b71b40 @attributes={</tt>
 <tt>      “end_datetime”   =&gt; “2007-11-21 15:00:00″,
</tt><tt>      “start_datetime” =&gt; “2007-11-21 14:15:00″,
</tt><tt>      “timezone”       =&gt; “America/New_York”}</tt><tt>
</tt><tt>&gt;&gt; event.start_datetime
</tt><tt>=&gt;</tt><tt> Wed Nov 21 09:15:00 UTC 2007
</tt><tt>&gt;&gt; event.display_start_datetime
</tt><tt>=&gt; “Nov. 21, 2007 09:15 AM”</tt><tt>
</tt><tt>&gt;&gt; event.utc_start_datetime
</tt><tt>=&gt;</tt><tt> Wed Nov 21 14:15:00 UTC 2007</tt></pre>
<p>You can also set the value of the field to a local date/time and it will be converted to UTC automatically:</p>
<pre><tt>&gt;&gt; event.start_datetime = Time.now
</tt><tt>=&gt;</tt><tt> Sun Nov 25 06:26:35 +0000 2007
</tt><tt>=&gt;</tt><tt> #&lt;Biz::Event:0×1b71b40 @attributes={
</tt><tt>  “end_datetime”    =&gt;  “2007-11-21 15:00:00″</tt>
<tt>  “start_datetime”  =&gt;  Sun Nov 25 11:26:35 +0000 2007,
</tt><tt>  “timezone”        =&gt;  “America/New_York” } </tt></pre>
<p>If you want to access the fields and retrieve the database value you can use the utc_field_name method to access the UTC value of the attribute. The plugin makes a couple of core assumptions. One it assumes that the default rails timezone is UTC:</p>
<pre><tt>ENV[‘TZ’] = ‘UTC’</tt></pre>
<p>Second it assumes that the model has a timezone attribute named timezone:</p>
<pre><tt>t.column :timezone, :string, :default =&gt; ”</tt></pre>
</blockquote>
<p>Read more on:  <a href="http://hackd.wordpress.com/2007/11/23/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/" rel="nofollow" >hackd.wordpress homepage</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/21/sexy-time-zones-in-ruby-on-rails-with-timezone_fu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!</title>
		<link>http://www.adaruby.com/2008/01/17/ruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch</link>
		<comments>http://www.adaruby.com/2008/01/17/ruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 11:25:37 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[286]]></category>
		<category><![CDATA[291]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[309]]></category>
		<category><![CDATA[311]]></category>
		<category><![CDATA[322]]></category>
		<category><![CDATA[325]]></category>
		<category><![CDATA[327]]></category>
		<category><![CDATA[330]]></category>
		<category><![CDATA[331]]></category>
		<category><![CDATA[332]]></category>
		<category><![CDATA[333]]></category>
		<category><![CDATA[350]]></category>
		<category><![CDATA[351]]></category>
		<category><![CDATA[353]]></category>
		<category><![CDATA[358]]></category>
		<category><![CDATA[366]]></category>
		<category><![CDATA[368]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/17/ruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch/</guid>
		<description><![CDATA[You know what, I really wanna learn this whole JavaEE-related thingy&#8230;&#8230; For some reason it&#8217;s unavoidable&#8230;&#8230;. it&#8217;s bound to be touched by me&#8230;&#8230; You see, the trend is going RIA. MVC is going away. AJAX ain&#8217;t gonna compete. At least not fully. And will lose in many ways in respect to something like Adobe&#8217;s Flex. [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F17%2Fruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F17%2Fruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" alt=" Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" /><br />
			</a>
		</div>
<p>You know what, I really wanna learn this whole <a href="http://java.sun.com/javaee/" rel="nofollow" >JavaEE</a>-related thingy&#8230;&#8230;</p>
<p>For some reason it&#8217;s unavoidable&#8230;&#8230;. it&#8217;s bound to be touched by me&#8230;&#8230;</p>
<p><a href="http://www.flickr.com/photos/ckinskey/2197267694/" rel="nofollow"  title="too many things at once!"><img src="http://farm3.static.flickr.com/2059/2197267694_57c9a653b2.jpg?v=0" title="Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" alt=" Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" /></a></p>
<p>You see, the trend is going <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" rel="nofollow" >RIA</a>. <a href="http://en.wikipedia.org/wiki/Model-view-controller" rel="nofollow" >MVC</a> is going away. <a href="http://en.wikipedia.org/wiki/AJAX" rel="nofollow" >AJAX</a> ain&#8217;t gonna compete. At least not fully. And will lose in many ways in respect to something like <a href="http://www.adobe.com/products/flex/" rel="nofollow" >Adobe&#8217;s Flex</a>. (Unfortunately there&#8217;s not much competitor better than Flex, and fortunately it&#8217;d probably be &#8220;standard&#8221; in the near future). Esp. with <a href="http://www.readwriteweb.com/archives/adobe_takes_fle.php" rel="nofollow" >Flex going open source</a>. Flex will need a backend, since it&#8217;s not a server-side product. There is <a href="http://www.adobe.com/products/livecycle/dataservices/" rel="nofollow" >Flex LiveCycle Data Services ES</a> (what a name!!) by Adobe. There&#8217;s also <a href="http://labs.adobe.com/technologies/blazeds/" rel="nofollow" >BlazeDS</a> open source. There&#8217;s also the excellent <a href="http://www.themidnightcoders.com/weborb/" rel="nofollow" >WebORB</a>, which is <a href="http://www.themidnightcoders.com/weborb/rubyonrails/index.htm" rel="nofollow" >free <strong>and open source</strong> for Rails</a> and <a href="http://www.themidnightcoders.com/weborb/php/index.htm" rel="nofollow" >PHP</a>. Oh yeah, it&#8217;s free for Rails! <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" class='wp-smiley' title="Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" /> </p>
<p>Sure you can go with plain Rails, but it&#8217;s maybe too much work, when WebORB already does it for you.</p>
<p>This is wonderful, but it only gives you <a href="http://en.wikipedia.org/wiki/Remote_procedure_call" rel="nofollow" >plain RPC</a>. It&#8217;s traditional (legacy?) synchronous RPC camouflaged as &#8220;asynchronous&#8221;.</p>
<p>Real asynchronous power comes from <a href="http://en.wikipedia.org/wiki/Message_queue" rel="nofollow" >Messaging</a>. And the buzzword is now <a href="http://en.wikipedia.org/wiki/Comet_%28programming%29" rel="nofollow" >Comet</a>. The latest <a href="http://www.mortbay.org/" rel="nofollow" >Jetty</a> already <a href="http://ajaxian.com/archives/jetty-servlet-container-implements-comet" rel="nofollow" >supports Comet technique</a>, which can continuously &#8220;streams&#8221; asynchronous messages and data <strong>to</strong> (instead of being pulled) your client-side web UI&#8230; (that might just be a Flex app)</p>
<p>Simple messaging is fine, but the real power of messaging comes from features that had existed for a long time it&#8217;s actually legacy, such as publish/subcribe, message routing, and reliable delivery and timeouts. Fortunately, we have <a href="http://activemq.apache.org/" rel="nofollow" >ActiveMQ</a>, and yes we have <a href="http://code.google.com/p/activemessaging/wiki/ActiveMessaging" rel="nofollow" >activemessaging library for Ruby and Rails plugin</a>.</p>
<p>Unfortunately messaging servers have different protocols. Although there are &#8220;universal&#8221; protocols like <a href="http://stomp.codehaus.org/Protocol" rel="nofollow" >Stomp </a>and <a href="http://www.iona.com/opensource/amqp/" rel="nofollow" >AMQP</a> (backed by <a href="http://www.rabbitmq.com/" rel="nofollow" >RabbitMQ</a>), you can also use an <a href="http://en.wikipedia.org/wiki/Enterprise_Service_Bus" rel="nofollow"  title="Enterprise service bus">ESB</a> like <a href="http://mule.mulesource.org/" rel="nofollow" >Mule</a> or <a href="https://open-esb.dev.java.net/" rel="nofollow" >OpenESB</a> or <a href="http://servicemix.apache.org/" rel="nofollow" >Apache ServiceMix</a> if your component needs to talk to components with a different protocol. Oh yes they&#8217;re from the Java world.</p>
<p>Even as we&#8217;re embracing THE <a href="http://wiki.rubyonrails.org/rails/pages/ActiveRecord" rel="nofollow" >ActiveRecord</a>, the Java community coming up with an also-cool solution called <a href="http://java.sun.com/javaee/overview/faq/persistence.jsp" rel="nofollow"  title="Java Persistence API">JPA</a>, supported by all popular Java ORM tools such as <a href="http://www.hibernate.org/" rel="nofollow" >Hibernate</a> and <a href="http://www.oracle.com/technology/products/ias/toplink/index.html" rel="nofollow" >TopLink</a>; Microsoft strikes back with the invulnerable <a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx" rel="nofollow" >LINQ</a>.</p>
<p>Yet we still have too many queued messages and database records to handle, we need to know how to make use of them. <a href="http://en.wikipedia.org/wiki/Event_Driven_Architecture" rel="nofollow"  title="Event Driven Architecture">EDA</a> comes to the rescue, like what <a href="http://esper.codehaus.org/" rel="nofollow" >Esper</a> does. And of course <a href="http://en.wikipedia.org/wiki/Business_Intelligence" rel="nofollow"  title="Business Intelligence">BI</a> and reporting tools such as <a href="http://www.jaspersoft.com/JasperSoft_JasperReports.html" rel="nofollow" >JasperReports</a>, <a href="http://www.pentaho.com/" rel="nofollow" >Pentaho</a> and Ruby&#8217;s <a href="http://rubyreports.org/" rel="nofollow" >Ruport</a>.</p>
<p>We like <a href="http://en.wikipedia.org/wiki/REST" rel="nofollow" >REST</a>&#8216;s simplicity over <a href="http://fuzzypanic.blogspot.com/2006/04/ws-deathstar.html" rel="nofollow"  title="WS-DeathStar">WS-*</a> for enterprise-y <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" rel="nofollow"  title="Service-oriented architecture">SOA</a> apps. <a href="http://microformats.org/" rel="nofollow" >Microformats</a> is very nice with just a little <a href="http://code.whytheluckystiff.net/hpricot/" rel="nofollow" >Hpricot</a> and <a href="http://mofo.rubyforge.org/" rel="nofollow" >Mofo</a> goodness. And thanks to <a href="https://rubyforge.org/projects/mechanize/" rel="nofollow" >Mechanize</a> or <a href="http://scrubyt.org/" rel="nofollow" >Scrubyt</a> or <a href="http://openkapow.com/" rel="nofollow" >openkapow</a> and the good ole&#8217; <a href="http://en.wikipedia.org/wiki/RSS" rel="nofollow" >RSS</a>, mashup is always getting easier. Let&#8217;s hope Atom&#8217;s <a href="http://atomenabled.org/" rel="nofollow"  title="Atom Publishing Protocol">APP</a> really does take off as well. But sometimes we want more flexibility, we want <a href="http://en.wikipedia.org/wiki/Business_Process_Modeling" rel="nofollow"  title="Business Process Modeling">BPM</a>-powered workflow. No worries, we have <a href="http://www.jboss.com/products/jbpm" rel="nofollow" >JBoss&#8217;</a> <a href="http://jbpm.org/" rel="nofollow" >jBPM</a>. Our Ruby community also has <a href="http://openwferu.rubyforge.org/" rel="nofollow" >OpenWFEru</a>!</p>
<p>Everybody hates the login form, especially if it comes more often than we brush our teeth. We want <a href="http://en.wikipedia.org/wiki/Single_sign-on" rel="nofollow"  title="Single sign-on">SSO</a>, be it <a href="http://www.ja-sig.org/products/cas/" rel="nofollow" >CAS</a>, <a href="http://openid.net/" rel="nofollow" >OpenID</a>, <a href="http://en.wikipedia.org/wiki/SAML" rel="nofollow" >SAML</a>, or plain <a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol" rel="nofollow"  title="Lightweight Directory Access Protocol">LDAP</a> (with <a href="http://www.openldap.org/" rel="nofollow" >OpenLDAP</a>), we want it now.</p>
<p>And no, I haven&#8217;t forgotten <a href="http://code.google.com/android/" rel="nofollow" >Android</a>, nor <a href="http://www.apple.com/iphone/" rel="nofollow" >iPhone</a>, nor <a href="http://www.symbian.com/" rel="nofollow" >Symbian</a>, nor <a href="http://www.microsoft.com/windowsmobile/smartphone/default.mspx" rel="nofollow" >Windows Mobile</a>. The mobile space is getting more, not less, fragmented. All because they know the market is growing. Everybody wants a pie. (me too!)</p>
<p><a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html" rel="nofollow" >You&#8217;ve heard him</a>. Not all startups are profitable. Especially not when we&#8217;re fighting with each other. The &#8220;enterprise&#8221;, and corporate, has money&#8230; (unfortunately not all of us do, no matter how much we [all] want it&#8230;)</p>
<p>Users are getting more demanding and demands are getting more complicated, so are the technologies. We probably should embrace these technologies and the people who work on them (whether paid or unpaid or voluntary or forced&#8230;!) more so than we criticize and demotivate each other.</p>
<p><a href="http://www.ruby-lang.org/" rel="nofollow" >Ruby</a> is a great tool, and so is <a href="http://java.sun.com/" rel="nofollow" >Java</a> (<a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" rel="nofollow" >JVM</a>) and so is <a href="http://jruby.codehaus.org/" rel="nofollow" >JRuby</a> and its close mates like <a href="http://groovy.codehaus.org/" rel="nofollow" >Groovy</a>, <a href="http://www.scala-lang.org/" rel="nofollow" >Scala</a>, <a href="http://www.jython.org/" rel="nofollow" >Jython</a>, and <a href="http://www.mozilla.org/rhino/" rel="nofollow" >Rhino</a> with <a href="http://www.ecmascript.org/" rel="nofollow" >ECMAScript 4</a> and <a href="http://www.ibm.com/developerworks/webservices/library/ws-ajax1/" rel="nofollow"  title="ECMAScript for XML">E4X</a> support. <a href="http://www.hendyirawan.com/2007/08/20/erlang-the-concurrent-programming-language/" rel="nofollow" >Some people are also starting to fall in love</a> with <a href="http://erlang.org/" rel="nofollow" >Erlang</a>.</p>
<p>Oh well&#8230; This isn&#8217;t a rant. It&#8217;s just a brain-dump from me. Hope somebody finds it useful. Good morning guys <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" class='wp-smiley' title="Ruby on Rails, Java EE, RIA, Adobe Flex, Comet, Messaging, EDA, SOA, &#8230;, ouch!!" /> </p>
<p><strong>UPDATE:</strong> Clarifications regarding WebORB and messaging protocols.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/17/ruby-on-rails-java-ee-ria-adobe-flex-comet-messaging-eda-soa-ouch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Update Your Ruby Environment Using Portable Ruby</title>
		<link>http://www.adaruby.com/2008/01/15/update-your-ruby-environment-using-portable-ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-your-ruby-environment-using-portable-ruby</link>
		<comments>http://www.adaruby.com/2008/01/15/update-your-ruby-environment-using-portable-ruby/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 11:31:37 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[300]]></category>
		<category><![CDATA[320]]></category>
		<category><![CDATA[323]]></category>
		<category><![CDATA[338]]></category>
		<category><![CDATA[345]]></category>
		<category><![CDATA[346]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/15/update-your-ruby-environment-using-portable-ruby/</guid>
		<description><![CDATA[The goal of Portable Ruby is to reduce those updates to a single place, your USB drive. About.com describes how to make this possible: Installing Ruby The easiest way to setup a Portable Ruby application is to start with an existing Ruby installation. I recommend the One-Click Installer. If you haven&#8217;t done so already, go [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F15%2Fupdate-your-ruby-environment-using-portable-ruby%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F15%2Fupdate-your-ruby-environment-using-portable-ruby%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Update Your Ruby Environment Using Portable Ruby" alt=" Update Your Ruby Environment Using Portable Ruby" /><br />
			</a>
		</div>
<p>The goal of <a href="http://ruby.about.com/od/resources/ss/portable_ruby_3.htm" rel="nofollow" >Portable Ruby</a> is to reduce those updates to a single place, your USB drive. About.com describes how to make this possible:</p>
<blockquote><p><strong>Installing Ruby</strong></p>
<p>The easiest way to setup a Portable Ruby application is to start with an existing Ruby installation. I recommend the <a href="http://rubyinstaller.rubyforge.org/wiki/wiki.pl" rel="nofollow" >One-Click Installer</a>. If you haven&#8217;t done so already, go ahead and install it.</p>
<p>The entire Ruby distribution is created in a single &#8220;ruby&#8221; directory structure. Additional changes include the creation of shortcuts  for the start menu, which we will simulate in the PortableApp menu. The <a href="http://rubyinstaller.rubyforge.org/wiki/wiki.pl" rel="nofollow" >One-Click Installer</a> also updates the Windows PATH environment variable to include the ruby\bin directory.</p>
<p><strong>Layout the PortableApp Structure</strong></p>
<p>Another helpful tip is to install PortableApps to the root of your hard drive so you can easily test the integration of your Portable Ruby development. Using the earlier articles as a reference, install PortableApps to &#8220;C:\PortableRoot&#8221;.</p>
<p>The next step is to create a standard PortableApp directory structure. To make this easy, you can download the <a href="http://ruby.about.com/library/rubytools/RubyPortable.zip" rel="nofollow" >Ruby Portable Template</a> starter zip. In addition to the directory structure, the starter zip also contains files for creating the Ruby and SciTE Portable launchers.</p>
<p>Unzip the <a href="http://ruby.about.com/library/rubytools/RubyPortable.zip" rel="nofollow" >Ruby Portable Template</a> inside of the directory &#8220;C:\PortableRoot\PortableApps\&#8221;. Your directory structure should look similar to the following.</p>
<ul>
<li>C:\PortableRoot
<ul>
<li>PortableApps
<ul>
<li><em>OtherApps</em></li>
<li>RubyPortable
<ul>
<li>App
<ul>
<li>AppInfo</li>
<li>ruby</li>
</ul>
</li>
<li>Data
<ul>
<li>settings</li>
</ul>
</li>
<li>Other
<ul>
<li>RubyPortableSource</li>
<li>RubySource</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote></blockquote>
<blockquote>
<p align="left">At this point, you can copy the contents of the &#8220;ruby&#8221; directory the One-Click Installer created into the RubyPortable -&gt; App -&gt; ruby directory.</p>
<p align="left"> Check your free space first. The directory is about 80MB, but I would plan on having additional free space for your projects. Once you have copied the Ruby directories over, you can uninstall the One-Click Installer. While this isn&#8217;t technically necessary, it is helpful to remove the changes to the Windows environment so they do not conflict with testing your setup of the Portable Ruby application.</p>
</blockquote>
<p align="left">More information and instructions are available on <a href="http://ruby.about.com/od/resources/ss/portable_ruby_3.htm" rel="nofollow" >About.com: Ruby</a> page.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/15/update-your-ruby-environment-using-portable-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extremely Good Ruby on Rails Book: The Rails Way</title>
		<link>http://www.adaruby.com/2008/01/13/extremely-good-ruby-on-rails-book-the-rails-way/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extremely-good-ruby-on-rails-book-the-rails-way</link>
		<comments>http://www.adaruby.com/2008/01/13/extremely-good-ruby-on-rails-book-the-rails-way/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 11:17:07 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[310]]></category>
		<category><![CDATA[342]]></category>
		<category><![CDATA[351]]></category>
		<category><![CDATA[360]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/13/extremely-good-ruby-on-rails-book-the-rails-way/</guid>
		<description><![CDATA[The latest entry in Addison-Wesley&#8217;s Professional Ruby Series is The Rails Way, by Obie Fernandez, is a long awaited book billing itself as the &#8220;expert guide to building Ruby on Rails applications.&#8221; More precisely, the book dives into nearly every area of the Rails libraries and APIs and acts as a reference work for them. [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F13%2Fextremely-good-ruby-on-rails-book-the-rails-way%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F13%2Fextremely-good-ruby-on-rails-book-the-rails-way%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" title="Extremely Good Ruby on Rails Book: The Rails Way" alt=" Extremely Good Ruby on Rails Book: The Rails Way" /><br />
			</a>
		</div>
<p>The latest entry in <a href="http://www.informit.com/imprint/index.aspx?st=61085" rel="nofollow" >Addison-Wesley&#8217;s Professional</a> Ruby Series is <a href="http://www.amazon.com/gp/product/0321445619?ie=UTF8&amp;tag=adaruby-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321445619" rel="nofollow" ><em>The Rails Way</em></a>, by <a href="http://obiefernandez.com/" rel="nofollow" >Obie Fernandez</a>, is a long awaited book billing itself as the &#8220;expert guide to building Ruby on Rails applications.&#8221;</p>
<blockquote><p>More precisely, the book dives into nearly every area of the Rails libraries and APIs and acts as a reference work for them. Coming in at about 850 pages, the book is physically very similar to <a href="http://www.amazon.com/gp/product/0672328844?ie=UTF8&amp;tag=adaruby-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0672328844" rel="nofollow" >The Ruby Way</a> by Hal Fulton. There&#8217;s no denying that these two books look good next to each other on the bookshelf, and a lot of comparison can be made between the two.</p></blockquote>
<blockquote><p>Using detailed code examples, Obie systematically covers Rails’ key capabilities and subsystems. He presents advanced programming techniques, introduces open source libraries that facilitate easy Rails adoption, and offers important insights into testing and production deployment. Dive deep into the Rails codebase together, discovering why Rails behaves as it does– and how to make it behave the way you want it to.</p></blockquote>
<p>This book will help you:</p>
<blockquote>
<ul>
<li>Increase your productivity as a web developer</li>
<li>Realize the overall joy of programming with Ruby on Rails</li>
<li>Learn what’s new in Rails 2.0</li>
<li>Drive design and protect long-term maintainability with TestUnit and RSpec</li>
<li>Understand and manage complex program flow in Rails controllers</li>
<li>Leverage Rails’ support for designing REST-compliant APIs</li>
<li>Master sophisticated Rails routing concepts and techniques</li>
<li>Examine and troubleshoot Rails routing</li>
<li>Make the most of ActiveRecord object-relational mapping</li>
<li>Utilize Ajax within your Rails applications</li>
<li>Incorporate logins and authentication into your application</li>
<li>Extend Rails with the best third-party plug-ins and write your own</li>
<li>Integrate email services into your applications with ActionMailer</li>
<li>Choose the right Rails production configurations</li>
<li>Streamline deployment with Capistrano</li>
</ul>
</blockquote>
<p>More resources:</p>
<blockquote></blockquote>
<ul>
<li><a href="http://www.amazon.com/gp/product/0321445619?ie=UTF8&amp;tag=adaruby-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321445619" rel="nofollow" >Editorial review at Amazon.com</a></li>
<li><a href="http://blog.hasmanythrough.com/2007/12/20/book-review-the-rails-way" rel="nofollow" >Review for this book at hasmanythrough blog</a></li>
</ul>
<blockquote></blockquote>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/13/extremely-good-ruby-on-rails-book-the-rails-way/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

