<?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; Cool</title>
	<atom:link href="http://www.adaruby.com/category/cool/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Fri, 02 Jul 2010 09:06:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Migrating Subversion repositories using SVK</title>
		<link>http://www.adaruby.com/2008/03/20/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 install SVK. [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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="Firefighter in style!" 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://mitcho.com/code/yarpp/'>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>Morph Application Platform Simplifies Ruby on Rails Development</title>
		<link>http://www.adaruby.com/2008/02/16/morph-application-platform-simplifies-ruby-on-rails-development/</link>
		<comments>http://www.adaruby.com/2008/02/16/morph-application-platform-simplifies-ruby-on-rails-development/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 03:46:07 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[284]]></category>
		<category><![CDATA[289]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[300]]></category>
		<category><![CDATA[302]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/02/16/morph-application-platform-simplifies-ruby-on-rails-development/</guid>
		<description><![CDATA[
			
				
			
		

Morph Labs is currently beta-testing their next-generation solution in application deployment, delivery, and management, the Morph Application Platform.
Acquiring hardware and configuring software to support web apps are things of the past. Morph Labs brings you the next-generation solution in application deployment, delivery, and management. Reduce your time to market and lower your startup costs no [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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%2F16%2Fmorph-application-platform-simplifies-ruby-on-rails-development%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F02%2F16%2Fmorph-application-platform-simplifies-ruby-on-rails-development%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Morph Application Platform Simplifies Ruby on Rails Development" alt=" Morph Application Platform Simplifies Ruby on Rails Development" /><br />
			</a>
		</div>
<p><a href="http://www.morphexchange.com/" rel="nofollow" ><img src="http://www.adaruby.com/wp-content/uploads/2008/02/morph-logo.jpg" alt="Morph logo" title="Morph Application Platform Simplifies Ruby on Rails Development" /></a></p>
<p><strong><a href="http://mor.ph/" rel="nofollow" >Morph Labs</a></strong> is currently beta-testing their next-generation solution in application deployment, delivery, and management, the <a href="http://www.morphexchange.com/map_info" rel="nofollow" >Morph Application Platform</a>.</p>
<blockquote><p>Acquiring hardware and configuring software to support web apps are things of the past. Morph Labs brings you the next-generation solution in application deployment, delivery, and management. Reduce your time to market and lower your startup costs no matter if you are an ISV, a developer or a business.</p></blockquote>
<p><strong>About Morph Labs</strong></p>
<blockquote><p><strong>Morph Labs Inc.</strong> <a href="http://www.morphexchange.com/" rel="nofollow" >www.morphexchange.com</a> is a Philippine-based Web 2.0 technology company focused on providing innovative technologies and applications to support Software as a Service (SaaS) globally.</p></blockquote>
<blockquote></blockquote>
<blockquote><p> Morph offers independent software vendors (ISVs), IT consulting organizations, application developers and entrepreneurs the quickest and simplest route to SaaS-enablement. Morph simplifies deployment and management of software as a service with an elastic Web 2.0 delivery and management solution &#8212; the Morph Application Platform.</p></blockquote>
<blockquote></blockquote>
<blockquote><p>Morph Application Platform, powered by Amazon EC2 grid computing technology, combines the elasticity in delivering and managing Web 2.0 applications and the simplicity of deploying software as a service (SaaS).</p>
<p>With no hardware to buy and no software to install and configure, Morph allows developers to easily grow or shrink their application environment on demand without disruption to the application. The Morph Application Platform is offered through a subscription to a Morph AppSpace, which is an instance of the Morph Application Platform.</p></blockquote>
<blockquote><p>Beyond delivery platforms and managed services, Morph will build simplified software applications (that run on our platform) that leverage open source technologies for small and medium businesses.</p>
<p>Morph&#8217;s first on-demand application is Morph helpME (released October 2007), provided via the software as a service model and runs on top of the Morph Application Platform. It&#8217;s an on-demand help and training system that enables sharing of knowledge while reducing overall cost and technical burden.</p>
<p>Morph <a href="http://helpme.morphexchange.com/ruby" rel="nofollow" >helpME</a> is a Ruby on Rails application running on the Morph Application Platform. It&#8217;s automatically formats, structures and creates menus, enabling faster deployment of new content.</p></blockquote>
<p>If you are Ruby on Rails developers, bring your on-demand application to life with the Morph Application and leave the details to us!</p>
<p>Visit <a href="http://mor.ph/" rel="nofollow" >Morph home page</a> to find out more!</p>
<blockquote></blockquote>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/02/16/morph-application-platform-simplifies-ruby-on-rails-development/feed/</wfw:commentRss>
		<slash:comments>0</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/</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 based [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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://mitcho.com/code/yarpp/'>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>RM-Manage: Monitor Your Rails Apps</title>
		<link>http://www.adaruby.com/2008/01/25/rm-manage-monitor-your-rails-apps/</link>
		<comments>http://www.adaruby.com/2008/01/25/rm-manage-monitor-your-rails-apps/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 11:29:25 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[299]]></category>
		<category><![CDATA[341]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/25/rm-manage-monitor-your-rails-apps/</guid>
		<description><![CDATA[
			
				
			
		
RM-Manage is a monitoring product for Rails applications. Their claim:
Building elegant and powerful Rails applications rapidly is important. Ensuring that they perform properly once deployed in production is even more important. A poorly performing or unavailable business-critical application can have a devastating impact on your bottom line, negating the benefits of Rails development.
Rails applications are [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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%2F25%2Frm-manage-monitor-your-rails-apps%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F25%2Frm-manage-monitor-your-rails-apps%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="RM Manage: Monitor Your Rails Apps" alt=" RM Manage: Monitor Your Rails Apps" /><br />
			</a>
		</div>
<p><a href="http://www.fiveruns.com/products/manage" rel="nofollow" >RM-Manage</a> is a monitoring product for Rails applications. Their claim:</p>
<blockquote><p>Building elegant and powerful Rails applications rapidly is important. Ensuring that they perform properly once deployed in production is even more important. A poorly performing or unavailable business-critical application can have a devastating impact on your bottom line, negating the benefits of Rails development.</p>
<p>Rails applications are more than just Rails itself. Databases like MySQL and Oracle, web servers such as Apache, and even the host operating system each affect performance and availability.</p></blockquote>
<blockquote><p> Although you may have done a great job designing a well-behaved Rails application, the fact is you won’t know how well it will truly perform until you monitor and respond to it in production. RM-Manage wraps the task of monitoring your applications in a simple and affordable interface.</p></blockquote>
<p><strong>Application Browser</strong></p>
<blockquote><p>The Application Browser for Rails allows you to view and filter important performance metrics for your production Rails applications. The application browser quickly gathers collected Model, View and Controller statistics such as averages, slowest and fastest performing models or views and more making it easy to explore application problems and bottlencks.</p>
<p><img src="http://www.fiveruns.com/images/tour/appbrowser-features.jpg?1197314871" height="306" width="360" title="RM Manage: Monitor Your Rails Apps" alt=" RM Manage: Monitor Your Rails Apps" /></p>
<p>Screen Highlights</p></blockquote>
<blockquote>
<ol>
<li>Browse and select a particular system and production Rails application for which to view performance metrics.</li>
<li>See a full list of actions in the selected application grouped by their respective controllers. Select an action to see all its related MVC information.</li>
<li>Take a closer look at the amount of time spent in the controller, model and view layers.</li>
<li>Filter method invocation information by the model, view or controller layer to see common metrics such as average, slowest and fastest invocation times, ordered by severity for the currently selected filter.</li>
</ol>
<p>As your applications evolve and expand, you will encounter performance and availability problems. How will you troubleshoot and accurately diagnose these issues? How will you know for sure if the problem is a bug, a memory leak, a database connection issue, or a design issue? How will you ensure performance and uptime?</p>
<p><img src="http://www.fiveruns.com/images/icons/setup.gif?1197314870" alt="Setup Icons" title="RM Manage: Monitor Your Rails Apps" /></p>
<p>RM-Manage is the first and only Rails application monitoring product to instrument and monitor all aspects of the Rails framework and its supporting infrastructure resources.</p>
<p>RM-Manage makes it easy to design your Rails applications for optimal performance and reliability. Define personalized views of performance data (timings, counts, errors, size) based on how you want to view your application. Use the <a href="http://www.fiveruns.com/products" rel="nofollow"  title="Learn more about the FiveRuns Management Suite for Rails">other integrated monitoring services</a> to provide you with all the tools you’ll need to troubleshoot your application and its underlying infrastructure.</p></blockquote>
<p>Interested? Read more at <a href="http://www.fiveruns.com/products/manage" rel="nofollow" >FiveRuns&#8217; site</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/25/rm-manage-monitor-your-rails-apps/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/</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://mitcho.com/code/yarpp/'>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" 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://mitcho.com/code/yarpp/'>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>1</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/</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]
end

The  [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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://mitcho.com/code/yarpp/'>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>0</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/</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. (Unfortunately there&#8217;s [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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=':)' 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>&#8217;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=':-)' 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://mitcho.com/code/yarpp/'>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/</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 ahead and [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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://mitcho.com/code/yarpp/'>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/</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. Coming [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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" 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://mitcho.com/code/yarpp/'>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>
		<item>
		<title>Scraping Gmail with Mechanize and Hpricot</title>
		<link>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/</link>
		<comments>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 00:14:00 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[326]]></category>
		<category><![CDATA[329]]></category>
		<category><![CDATA[336]]></category>
		<category><![CDATA[337]]></category>
		<category><![CDATA[354]]></category>
		<category><![CDATA[364]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/</guid>
		<description><![CDATA[
			
				
			
		
We&#8217;ve been doing a lot of scraping and mashups lately. So we&#8217;d love to share on how to do this. Fortunately Schadenfreude has written a good tutorial about using Mechanize and Hpricot to scrape Gmail.
The tutorial uses mechanize and hpricot to login to gmail and return a list of Unread emails.
Installation of required tools
 gem [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>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%2F11%2Fscraping-gmail-with-mechanize-and-hpricot%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F11%2Fscraping-gmail-with-mechanize-and-hpricot%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Scraping Gmail with Mechanize and Hpricot" alt=" Scraping Gmail with Mechanize and Hpricot" /><br />
			</a>
		</div>
<p>We&#8217;ve been doing a lot of scraping and mashups lately. So we&#8217;d love to share on how to do this. Fortunately <a href="http://schf.uc.org/articles/2007/02/14/scraping-gmail-with-mechanize-and-hpricot" rel="nofollow" >Schadenfreude has written a good tutorial about using Mechanize and Hpricot to scrape Gmail</a>.</p>
<p>The tutorial uses mechanize and hpricot to login to gmail and return a list of Unread emails.</p>
<p><strong>Installation of required tools</strong></p>
<blockquote><p> <code>gem install mechanize --include-dependencies<br />
</code></p></blockquote>
<blockquote><p>This will install both mechanize and hpricot.</p></blockquote>
<p><strong>Usage</strong></p>
<blockquote><p>Before we can scrape our gmail account, we will need to login. Mechanize is a lib for “automating interaction with websites”. It can store and send cookies as well so once we login our script will now have a session to putter around in as if it was a web browser.</p></blockquote>
<p>&nbsp;</p>
<blockquote>
<pre>require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
page = agent.get 'http://www.gmail.com'

form = page.forms.first
form.Email = '***your gmail account***'
form.Passwd = '***your password***'

page = agent.submit form</pre>
</blockquote>
<blockquote><p>After logging in gmail will try to redirect us to http://mail.google.com/mail?ui&amp;auth=DC8F…. we need to follow this link. Using hpricot we can search for the meta redirect and grab the href attribute then have mechanize follow the link.</p></blockquote>
<p>&nbsp;</p>
<blockquote><p> <code>page = agent.get page.search("//meta").first.attributes['href'].gsub(/'/,'')</code></p></blockquote>
<blockquote><p><em>Note we need to strip the single quotes from around the url, i used gsub for this.</em></p></blockquote>
<blockquote><p>The returned page will try to use javascript to load the interface but it will not work for use. Thankfully a <strong>noscript</strong> tag is included in the source and contains a helpful clue.</p></blockquote>
<blockquote>
<pre>&lt;noscript&gt;&lt;font face="arial"&gt;JavaScript must be enabled in order for you to use Gmail in standard view.
However, it seems JavaScript is either disabled or not supported by your browser.
To use standard view, enable JavaScript by changing your browser options, then &lt;a href=""&gt;try again&lt;/a&gt;.

&lt;p&gt;To use Gmail's basic HTML view, which does not require JavaScript,
&lt;a href="?ui=html&amp;zy=n"&gt;click here&lt;/a&gt;.&lt;/p&gt;&lt;/font&gt;

&lt;p&gt;&lt;font face="arial"&gt;If you want to view Gmail on a mobile phone or similar device
&lt;a href="?ui=mobile&amp;zyp=n"&gt;click here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/noscript&gt;</pre>
</blockquote>
<p><strong>Full source</strong></p>
<p>&nbsp;</p>
<blockquote>
<pre>require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new

page = agent.get 'http://www.gmail.com'
form = page.forms.first
form.Email = '***your gmail account***'
form.Passwd = '***your password***'
page = agent.submit form

page = agent.get page.search("//meta").first.attributes['href'].gsub(/'/,'')
page = agent.get page.uri.to_s.sub(/\?.*$/, "?ui=html&amp;zy=n")
page.search("//tr[@bgcolor='#ffffff']")  do |row|
from, subject = *row.search("//b/text()")
url = page.uri.to_s.sub(/ui.*$/, row.search("//a").first.attributes["href"])
puts "From: #{from}\nSubject: #{subject}\nLink: #{url}\n\n"

email = agent.get url
# ..
end</pre>
</blockquote>
<p>Enjoy the tutorial!</p>
<p>Read more on <a href="http://schf.uc.org/articles/2007/02/14/scraping-gmail-with-mechanize-and-hpricot" rel="nofollow" >Schadenfreude</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
