<?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; Enterprise</title>
	<atom:link href="http://www.adaruby.com/category/enterprise/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>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>2</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>Sexy DSL for Active Record Permissions</title>
		<link>http://www.adaruby.com/2007/11/19/concept-dsl-for-active-record-permissions/</link>
		<comments>http://www.adaruby.com/2007/11/19/concept-dsl-for-active-record-permissions/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 15:49:59 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></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>

		<guid isPermaLink="false">http://adaruby.com/2007/11/19/concept-dsl-for-active-record-permissions/</guid>
		<description><![CDATA[
			
				
			
		
Robert Thau from Smartleaf proposes a cool idea for implementing DSL for use in Active Record permissions. It makes it easy  for a lot of users to have access rights and very exciting at the same time&#8230;
This is the Tease&#8230;.

class Order &#60; ActiveRecord::Base

  access_control_keys ['id', 'owner_id', 'paid']

  require_privilege :place,
    [...]


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%2F2007%2F11%2F19%2Fconcept-dsl-for-active-record-permissions%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F11%2F19%2Fconcept-dsl-for-active-record-permissions%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Sexy DSL for Active Record Permissions" alt=" Sexy DSL for Active Record Permissions" /><br />
			</a>
		</div>
<p>Robert Thau from <a href="http://www.smartleaf.com/" rel="nofollow" >Smartleaf</a> proposes a cool idea for <a href="http://www.smartleaf.com/rst/perm_present/perm_present.html" rel="nofollow" >implementing DSL for use in Active Record permissions</a>. It makes it easy  for a lot of users to have access rights and very exciting at the same time&#8230;</p>
<blockquote><p>This is the Tease&#8230;.</p></blockquote>
<blockquote>
<pre>class Order &lt; ActiveRecord::Base

  access_control_keys ['id', 'owner_id', 'paid']

  require_privilege :place,
    :for_action =&gt; :create,
    :to_update_attribute =&gt; [:payment_authenticator, :paid]

  require_privilege :edit,      # LineItem also checks this for attr changes
    :to_associate_as  =&gt; ['LineItem#order'],
    :to_dissociate_as =&gt; ['LineItem#order'],
    :to_update_attribute =&gt; [ :shipping_address ]

  require_privilege :ship,       :to_update_attribute =&gt; :shipped

  ...

end</pre>
<p>&nbsp;</p>
<p> The implementation:</p>
<ul>
<li>Data model</li>
<li>Checking privileges:  does user <em>x</em> have privilege <em>y</em>     on this order?</li>
<li>Finding <em>all</em> orders where user <em>x</em> has      privilege <em>y</em></li>
<li>Adding privilege checks in interesting places&#8230;
<ul>
<li>On events:  create, update&#8230;</li>
<li>On attribute sets</li>
<li>For associations</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote><p>It&#8217;s just Ruby!  Class variables and class methods:</p>
<blockquote>
<ul>
<li>All declared privileges (for choosers in the UI)</li>
<li>Dual-keyed hash:  <tt>reflected_privilege[<em>type</em>][<em>key</em>]</tt></li>
<li>&#8230; e.g., <tt>reflected_privilege[:read_attribute][<em>attr</em>]</tt></li>
<li>&#8230; e.g., <tt>reflected_privilege[:associate][<em>assoc_key</em>]</tt></li>
<li>Class helpers (<tt>permits_update_attr?</tt>, etc.) just read the     hash, and do the appropriate check.</li>
</ul>
</blockquote>
</blockquote>
<blockquote></blockquote>
<p>Read more on:<a href="http://www.smartleaf.com/rst/perm_present/perm_present.html" rel="nofollow" ></a></p>
<blockquote>
<p>&nbsp;</p>
</blockquote>
<p><a href="http://www.smartleaf.com/rst/perm_present/perm_present.html" rel="nofollow" >http://www.smartleaf.com/rst/perm_present/perm_present.html</a></p>
<p><a href="http://www.smartleaf.com/rst/perm_present/perm_present.html" rel="nofollow" ></a>No downloadable code (yet), but still cool <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Sexy DSL for Active Record Permissions" /> </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/2007/11/19/concept-dsl-for-active-record-permissions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Just Released: ActiveRecord-JDBC 0.6</title>
		<link>http://www.adaruby.com/2007/11/15/just-released-activerecord-jdbc-06/</link>
		<comments>http://www.adaruby.com/2007/11/15/just-released-activerecord-jdbc-06/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 03:37:15 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/11/15/just-released-activerecord-jdbc-06/</guid>
		<description><![CDATA[
			
				
			
		
Just out is ActiveRecord-JDBC 0.6, the post-RubyConf release.
The sparkly new feature is Rails 2.0 support. In the soon-to-be-released Rails 2.0 (edge), Rails will automatically look for and load an adapter gem based on the name of the adapter you specify in database.yml.
let’s see the example:
development:

  adapter: funkdb

  ...
We can leverage this convention to make it [...]


Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol>

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%2F2007%2F11%2F15%2Fjust-released-activerecord-jdbc-06%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F11%2F15%2Fjust-released-activerecord-jdbc-06%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Just Released: ActiveRecord JDBC 0.6" alt=" Just Released: ActiveRecord JDBC 0.6" /><br />
			</a>
		</div>
<p>Just out is <a href="http://jruby-extras.rubyforge.org/ActiveRecord-JDBC/" rel="nofollow" >ActiveRecord-JDBC</a> 0.6, the post-RubyConf release.</p>
<blockquote><p>The sparkly new feature is Rails 2.0 support. In the soon-to-be-released Rails 2.0 (edge), Rails will automatically look for and load an adapter gem based on the name of the adapter you specify in <code>database</code><code>.yml.</code></p>
<p>let’s see the example:</p>
<pre><code>development:

  adapter: funkdb

  ...</code></pre>
<p>We can leverage this convention to make it easier than ever to get started using JRuby with your Rails application. So, the first thing new in the 0.6 release is the name. You now install <code>activerecord-jdbc-adapter</code>:</p>
<p><code>jruby -S gem install activerecord-jdbc-adapter</code></p>
<p>But wait, there’s more! We also have adapters for four open-source databases, including MySQL, PostgreSQL, and two embedded Java databases, Derby and HSQLDB. And, for your convenience, we’ve bundled the JDBC drivers in dependent gems, so you don’t have to go hunting them down if you don’t have them handy.</p>
<p>if you need to connect to a different database, you’ll still need to place your database’s JDBC driver jar file in the appropriate place and use the straight <code>activerecord-jdbc-adapter</code>. Also note that in this case, and for Rails 1.2.x in general, you’ll still need to add that pesky <code>require</code> statement to <code>config/environment.rb</code>.</p>
<p>As always, there are bug fixes too (though we haven’t been tracking exactly which ones are fixed). We’re starting to file <a href="http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&amp;&amp;pid=11295&amp;resolution=-1&amp;component=12786&amp;sorter/field=priority&amp;sorter/order=ASC" rel="nofollow" >ActiveRecord-JDBC bugs</a> in the JRuby JIRA now, and will be putting in future AR-JDBC versions to target soon too. So, please <a href="http://jira.codehaus.org/secure/CreateIssue.jspa?pid=11295" rel="nofollow" >file new bugs in JIRA</a> (and select component “ActiveRecord-JDBC”) rather than in the antiquated Rubyforge tracker.</p></blockquote>
<p align="left">Read more on <a href="http://blog.nicksieger.com/articles/2007/11/06/activerecord-jdbc-0-6-released" rel="nofollow" >Nick Sieger&#8217;s blog</a>.</p>


<p>Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol></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/2007/11/15/just-released-activerecord-jdbc-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be an Expert of Ruby on Rails&#8217; Active Record!</title>
		<link>http://www.adaruby.com/2007/10/23/be-an-expert-of-ruby-on-rails-active-record/</link>
		<comments>http://www.adaruby.com/2007/10/23/be-an-expert-of-ruby-on-rails-active-record/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 14:54:35 +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[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/10/23/be-an-expert-of-ruby-on-rails-active-record/</guid>
		<description><![CDATA[
			
				
			
		
Any Ruby on Rails programmer would have touched Active Record, probably in a very early phase. Active Record deals with everything that&#8217;s related to the database of your Ruby on Rails applications, and in many ways a bit more.

Apress recently launched Pro Active Record: Databases with Ruby on Rails, which I can honestly say, is [...]


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%2F2007%2F10%2F23%2Fbe-an-expert-of-ruby-on-rails-active-record%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F10%2F23%2Fbe-an-expert-of-ruby-on-rails-active-record%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Be an Expert of Ruby on Rails&#8217; Active Record!" alt=" Be an Expert of Ruby on Rails&#8217; Active Record!" /><br />
			</a>
		</div>
<p>Any <a href="http://www.rubyonrails.org/" rel="nofollow" >Ruby on Rails</a> programmer would have touched <a href="http://ar.rubyonrails.com/" rel="nofollow" >Active Record</a>, probably in a very early phase. Active Record deals with everything that&#8217;s related to the database of your Ruby on Rails applications, and in many ways a bit more.</p>
<p><a href="http://www.flickr.com/photos/debeney/1338722410/" rel="nofollow" ><img src="http://farm2.static.flickr.com/1030/1338722410_b59d1018af.jpg?v=0" height="375" width="500" title="Be an Expert of Ruby on Rails&#8217; Active Record!" alt=" Be an Expert of Ruby on Rails&#8217; Active Record!" /></a></p>
<p><a href="http://www.apress.com/" rel="nofollow" >Apress</a> recently launched <a href="http://www.amazon.com/gp/product/1590598474?ie=UTF8&amp;tag=adaruby-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=1590598474" rel="nofollow" >Pro Active Record: Databases with Ruby on Rails</a>, which I can honestly say, is the most exhaustive, if not the only, book about Active Record I&#8217;ve ever known to date.</p>
<p>The book starts with a little bit of a “wow” factor, especially true if you&#8217;re new to Ruby on Rails: demonstrating the ease of use of Active Record itself. No configuration needed! Seriously, that&#8217;s not the claim of the book but it&#8217;s fact of Active Record: all you need is your database credentials and name of the table you want to work with. Everything else is almost magical.</p>
<p>The next sections deal with installing and configuring Active Record. I have to say sometimes (based on my own experiences) it&#8217;s not that trivial, especially on Windows. The book guides you through installing drivers/adapters for common and less popular DBMSes. OK, let&#8217;s name them: DB2, Firebird, FrontBase, MySQL, OpenBase, Oracle, PostgreSQL, SQLite, Microsoft SQL Server, Sybase, they&#8217;re all covered! I was wondering if I can connect to ODBC?</p>
<p>The second chapter deals with the “simple” things, namely, how to do SELECT, UPDATE, DELETE, INSERT, or what you cool guys usually call “CRUD”, the Active Record-way. This information is usually taken for granted, but it&#8217;s explained quite deeply in this book.</p>
<p>The next chapter guides you to design your tables so they work smoothly with Active Record. Although you can use legacy designs just fine with Active Record, your life will be much, much easier if you follow Active Record conventions. This book shows you just how, and in many cases, why.</p>
<p>Chapter 4 shows you how to use core Active Record features, including triggers and validations. If you&#8217;re asking that question, then the answer is yes, it&#8217;s almost completely overlapping with native but proprietary DBMS functionality such as PL/SQL, DBMS triggers, and constraints. The book doesn&#8217;t seem to explain much of this holy war, but I encourage you to ask Google why <a href="http://www.google.co.id/search?q=stored+procedures+are+evil" rel="nofollow" >stored procedures are evil</a>.</p>
<p>Chapter 5 gives you a view of Active Record “bonus features”. I think the chapter title is a misnomer because these features are not just bonus, but one of the greatest strengths of Active Record (compared to other ORM). Things like nested sets, lists, observers, aggregations, and little bit of extending Active Record: these are things that you&#8217;ll do, and use, daily &#8212; not something you try to avoid. They make your life as a DB integrator easier, not the other way around.</p>
<p>You want to make sure your app works fine, chapter 6 covers unit testing very thoroughly, down to the descriptions of errors (i.e. Active Record Exception objects) you may encounter.</p>
<p>If you already had a previous database, as most of us are, no worries, chapter 7 will guide you how to work with them. This is one of the most useful chapters in this book, because there is less information on the Internet on this topic, but it&#8217;s very common that everybody is bound to meet this problem. Come on, who actually learned Active Record before hearing the word DBMS?</p>
<p>The last chapter talks about issues that you&#8217;ll encounter in the “real world”, including alternatives and related enhancements to Active Record. What follows is the appendix, which is a really useful quick reference.</p>
<p align="left">The book is really, really good. Full of core information, and related information that aren&#8217;t readily available even after asking Mr. Google a hundred times. Despite being written by 3 different developers: <a href="http://falicon.com/" rel="nofollow" >Kevin Marshall</a>, <a href="http://giantrobots.thoughtbot.com" rel="nofollow" >Chad Pytel</a>, and <a href="http://www.thoughtbot.com/" rel="nofollow" >Jon Yurek</a>; the entire book is nicely structured and feels cohesive. It will save you lots of time in times of frustration, you can look up the information much quickly here than does a search engine.</p>
<p>Interested already? You can get more information about <a href="http://www.amazon.com/gp/product/1590598474?ie=UTF8&amp;tag=adaruby-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=1590598474" rel="nofollow" >Pro Active Record book on Amazon</a>, and buy it there too of course. It&#8217;s also <a href="http://www.apress.com/book/view/9781590598474" rel="nofollow"  title="Databases with Ruby on Rails">available on Apress official site</a>.</p>
<p>Personal minor gripe, not a flaw, is there wasn&#8217;t a (detachable) cheatsheet. A poster-sized, deluxe exclusive cheatsheet would be a tremendous killer plus to this book. I really think Apress should make this kind of thing mandatory in the future, not only regular Appendixes.</p>
<p>Other resources related to this book:</p>
<ul>
<li><a href="http://jystewart.net/process/2007/10/boo-review-pro-activerecord/" rel="nofollow" >James Stewart&#8217;s review</a></li>
<li><a href="http://opensource.apress.com/article/288/pro-active-record-published" rel="nofollow" >Inside Apress blog</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/2007/10/23/be-an-expert-of-ruby-on-rails-active-record/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms</title>
		<link>http://www.adaruby.com/2007/08/23/professional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms/</link>
		<comments>http://www.adaruby.com/2007/08/23/professional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 18:52:24 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/23/professional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms/</guid>
		<description><![CDATA[
			
				
			
		
Just out from a pack of several of the world&#8217;s greatest Ruby and/on Rails programmers:  Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms.
GET STRAIGHT TO THE LEADING EDGE WITH RUBY AND RAILS
Information that’s so hot, new, and valuable, you can’t wait for a book. This package brings together 8 [...]


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%2F2007%2F08%2F23%2Fprofessional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F23%2Fprofessional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms" alt=" Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms" /><br />
			</a>
		</div>
<p>Just out from a pack of several of the world&#8217;s greatest Ruby and/on Rails programmers:  <a href="http://www.amazon.com/gp/product/0132417995?ie=UTF8&amp;tag=gauldong-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0132417995" rel="nofollow" >Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms</a>.</p>
<p><strong>GET STRAIGHT TO THE LEADING EDGE WITH RUBY AND RAILS</strong></p>
<p>Information that’s so hot, new, and valuable, you can’t wait for a book. This package brings together 8 breakthrough primers on today’s most valuable Ruby and Rails technologies &#8212; including five new digital Short Cuts worth $69.95! From RailsSpace to ActiveRecord to Mongrel, here’s new content, techniques, and code from the Ruby community’s top innovators: insider’s information that’s never been available before in one place.</p>
<p>&amp;amp;lt;br /&amp;amp;gt;On the CD-ROM: 5 brand-new digital Short Cuts&#8230;</p>
<ul>
<li>Mongrel: Serving, Deploying, and Extending Your Ruby Applications, by <a href="http://eastmedia.com/" rel="nofollow"  title="EastMedia">Matt Pelletier</a> and <a href="http://www.zedshaw.com/" rel="nofollow" >Zed Shaw</a></li>
<li>Rails Plugins: Extending Rails Beyond the Core, by James Adam</li>
<li>Rails Routing, by David A. Black</li>
<li>Rails Refactoring to Resources: Using CRUD and REST in Your Rails Application, by Trotter Cashion</li>
<li>Rubyisms in Rails, by Jacob Harris</li>
</ul>
<p><strong>PLUS, PRINTED BONUS CONTENT INCLUDES</strong></p>
<ul>
<li>Working with Active Record (from the forthcoming Addison-Wesley book The Rails Way by Obie Fernandez)</li>
<li>RESTful Blogs (from RailsSpace by Michael Hartl and Aurelius Prochazka)</li>
<li>OOP and Dynamic Features in Ruby (from The Ruby Way, Second Edition, by Hal Fulton)</li>
</ul>
<p><strong>About the Authors</strong></p>
<ul>
<li><a href="http://eastmedia.com/" rel="nofollow"  title="EastMedia"><strong>Matt Pelletier</strong></a> (<a href="http://www.workingwithrails.com/person/1363-matt-pelletier" rel="nofollow" >WorkingWithRails profile</a>) is a partner at <a href="http://eastmedia.com/" rel="nofollow" >EastMedia</a>, a software, mobile, and business development firm. He is also cofounder of NYC.rb, the New York City Ruby group.</li>
<li><a href="http://www.zedshaw.com/" rel="nofollow" ><strong>Zed Shaw</strong></a> (<a href="http://www.workingwithrails.com/person/5455-zed-shaw" rel="nofollow"  title="Zed Shaw">WorkingWithRails profile</a>) is the original and primary author of Mongrel.</li>
<li><a href="http://dablog.rubypal.com/" rel="nofollow" ><strong>David A. Black</strong></a> (<a href="http://www.workingwithrails.com/person/5747-david-a-black" rel="nofollow" >WorkingWithRails profile</a>) is Director, <a href="http://www.rubypowerandlight.com/" rel="nofollow" >Ruby Power and Light, LLC</a> and also Co-Director, Ruby Central, Inc. He is the bestselling author of Ruby for Rails.</li>
<li><a href="http://identity.eastmedia.com/identity/show/Trotter+Cashion" rel="nofollow" ><strong>Trotter Cashion</strong></a> (<a href="http://www.workingwithrails.com/person/5541-trotter-cashion" rel="nofollow" >WorkingWithRails profile</a>) is an application developer at <a href="http://motionbox.com/" rel="nofollow" >motionbox.com</a>, a Rails-based video sharing site.</li>
<li><a href="http://interblah.net/" rel="nofollow" ><strong>Dr. James Adam</strong></a> (<a href="http://www.workingwithrails.com/person/5137-james-adam" rel="nofollow" >WorkingWithRails profile</a>) is the developer behind the <a href="http://rails-engines.org/" rel="nofollow" >Engines plugin</a>.</li>
<li><a href="http://www.nimblecode.com/" rel="nofollow" ><strong>Jacob Harris</strong></a> (<a href="http://www.workingwithrails.com/person/5590-jacob-harris" rel="nofollow" >WorkingWithRails profile</a>) is a web developer for <a href="http://www.nytimes.com/" rel="nofollow" >New York Times Digital</a>.</li>
</ul>
<p>Enough said! <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms" /> </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/2007/08/23/professional-ruby-collection-mongrel-rails-plugins-rails-routing-refactoring-to-rest-and-rubyisms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVK Quick Start Guide</title>
		<link>http://www.adaruby.com/2007/08/22/svk-quick-start/</link>
		<comments>http://www.adaruby.com/2007/08/22/svk-quick-start/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 16:39:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/22/svk-quick-start/</guid>
		<description><![CDATA[
			
				
			
		
Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.
SVK is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server [...]


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%2F2007%2F08%2F22%2Fsvk-quick-start%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F22%2Fsvk-quick-start%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="SVK Quick Start Guide" alt=" SVK Quick Start Guide" /><br />
			</a>
		</div>
<p>Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.</p>
<p><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server if you want.</p>
<p><strong>English version</strong></p>
<p><strong>UPDATE:</strong> This is an <em>outdated version</em>. The most up-to-date version with newer tips and tricks is in <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>, which unfortunately is only available in Indonesian. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="SVK Quick Start Guide" /> </p>
<p><strong>Method 1: Use Subversion repository, but SVK working copy</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk cp /try/remote /try/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /try/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk push</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk pull</pre>
<p><strong>Method 2: Use remote Subversion repository, local Subversion repository, and SVK to merge between those repositories </strong></p>
<p>The advantage of this approach is that you can use usual Subversion tools (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, or native utility from <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, etc.)</p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> Subversion repository local: http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge /try/remote /try/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/try/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/localsvn /try/remote</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/remote /try/localsvn</pre>
<p><strong>Tip: Moving local Subversion repository history to remote Subversion server</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote (<strong>still empty</strong>): http://svn.example.com/try/</li>
<li> Subversion repository local (<strong>has history</strong>): http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<p>In short:</p>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge --incremental --log --baseless /try/localsvn /try/remote</pre>
<p><strong>Versi Indonesia</strong></p>
<p><strong>UPDATE:</strong> Versi ini sudah <em>out-of-date</em>. Versi paling up-to-date dengan tips-tips tambahan dan edisi revisi ada di <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>.</p>
<p><!-- start content --><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> adalah sistem version control terdistribusi.</p>
<p><strong>Cara 1: Pake Subversion repository, SVK working copy</strong></p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk cp /coba/remote /coba/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /coba/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk push</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk pull</pre>
<p><strong>Cara 2: Pake Subversion repository remote, Subversion repository local, dan SVK untuk merge</strong></p>
<p>Kelebihan dari cara ini adalah Anda bisa menggunakan tools Subversion seperti biasanya (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, maupun native utility dari <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, dsb.)</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local: <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge /coba/remote /coba/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/coba/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk sync /coba/localsvn

svk sync /coba/remote

svk smerge /coba/localsvn /coba/remote</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk sync /coba/localsvn
svk sync /coba/remote
svk smerge /coba/remote /coba/localsvn</pre>
<p><strong>Tip: Mindahin history Subversion local ke remote </strong></p>
<p>Ini pertanyaan dari Marcel.</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote (<strong>masih kosong</strong>): <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local (<strong>sudah berisi</strong>): <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<p>So singkatnya:</p>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge --incremental --log --baseless /coba/localsvn /coba/remote</pre>
<p><strong>Credits</strong></p>
<p>Thanks buat <a href="http://wiki.ruby-id.web.id/wiki?title=Marcel&amp;action=edit" rel="nofollow"  title="Marcel">Marcel</a> (<a href="mailto:mgozali@yahoo.com" title="mailto:mgozali@yahoo.com" rel="nofollow">[1]</a>) yang sudah menyumbang pertanyaan yang akhirnya membuat saya menulis artikel ini. Trims. &#8211;<a href="http://wiki.ruby-id.web.id/wiki/Pengguna:Ceefour" rel="nofollow"  title="Ceefour">Ceefour</a> 11:23, 22 Agustus 2007 (CDT)</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/2007/08/22/svk-quick-start/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Deploying Joomla using Capistrano 2.0</title>
		<link>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</link>
		<comments>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 17:17:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></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>

		<guid isPermaLink="false">http://adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</guid>
		<description><![CDATA[
			
				
			
		
Who said Capistrano is for Ruby on Rails only?

That&#8217;s probably the major tagline of the whole Capistrano 2.0 saga. You can use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using Joomla:
Capistrano adalah library/tool yang digunakan untuk meng-online-kan aplikasi Ruby on Rails, tapi bisa juga digunakan [...]


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%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /><br />
			</a>
		</div>
<p>Who said <a href="http://capify.org/" rel="nofollow"  title="Capistrano">Capistrano</a> is for <a href="http://www.rubyonrails.org/" rel="nofollow" >Ruby on Rails</a> only?</p>
<p><a href="http://www.flickr.com/photos/dollen/429429873/" rel="nofollow"  title="Future girl"><img src="http://farm1.static.flickr.com/186/429429873_b772b96890.jpg?v=0" height="349" width="500" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /></a></p>
<p>That&#8217;s probably the major tagline of the whole <a href="http://www.rubyinside.com/capistrano-20-flexible-automated-deployment-system-541.html" rel="nofollow" >Capistrano 2.0</a> saga. You <em>can</em> use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla CMS for PHP">Joomla</a>:</p>
<p><a href="http://capify.org/" rel="nofollow"  title="Capistrano deployment">Capistrano</a> adalah library/tool yang digunakan untuk meng-online-kan aplikasi <a href="http://www.rubyonrails.org/" rel="nofollow"  title="Ruby on Rails framework">Ruby on Rails</a>, tapi bisa juga digunakan untuk aplikasi PHP, misalnya <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla Content Management System for PHP">Joomla</a>:</p>
<pre>ceefour@ojalanow:~/project/layout_mania/trunk$ cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
  * executing "svn checkout -q --username ceefour --no-auth-cache -r11 http://tools.assembla.com/svn/layout_mania/trunk /home/rainbow/apps/layout_mania/releases/20070814160555 &amp;&amp; (echo 11 &gt; /home/rainbow/apps/layout_mania/releases/20070814160555/REVISION)"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /home/rainbow/apps/layout_mania/releases/20070814160555"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
    triggering after callbacks for `deploy:finalize_update'
  * executing `deploy:symlink_secret'
  * executing "ln -s /home/rainbow/apps/layout_mania/secret /home/rainbow/apps/layout_mania/releases/20070814160555/secret"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:use_live_configuration'
  * executing "cp -f /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php.live /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink_cache'
  * executing "rm -rf /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache &amp;&amp; ln -s /home/rainbow/apps/layout_mania/shared/cache /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink'
  * executing "rm -f /home/rainbow/apps/layout_mania/current &amp;&amp; ln -s /home/rainbow/apps/layout_mania/releases/20070814160555 /home/rainbow/apps/layout_mania/current"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
 ** transaction: commit
  * executing `deploy:restart'</pre>
<p>The result? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com.</a> Below is the source code of deploy/config.rb used to deploy this Joomla app.</p>
<p>Hasilnya? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com</a>. Di bawah ini adalah <em>source code</em> dari file konfigurasi Capistrano deploy/config.rb yang digunakan untuk aplikasi ini.</p>
<pre>set :application, "layout_mania"
set :repository,  "http://tools.assembla.com/svn/layout_mania/trunk"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/home/rainbow/apps/#{application}"
set :user, "rainbow"
set :scm_username, 'ceefour'
set :use_sudo, false
set :cache_path, "#{shared_path}/cache"
set :media_path, "#{shared_path}/media"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "rainbowpurple.com"
role :web, "rainbowpurple.com"
role :db,  "rainbowpurple.com", :primary =&gt; true

after 'deploy:finalize_update', 'deploy:symlink_secret'
after 'deploy:finalize_update', 'deploy:use_live_configuration'
after 'deploy:finalize_update', 'deploy:symlink_cache'

namespace :deploy do

  # Overwritten to provide flexibility for people who aren't using Rails.
  task :setup, :except =&gt; { :no_release =&gt; true } do
    dirs = [deploy_to, releases_path, shared_path, cache_path, media_path]
    dirs += %w(system).map { |d| File.join(shared_path, d) }
    run "umask 02 &amp;&amp; mkdir -p #{dirs.join(' ')}"
  end

  # Also overwritten to remove Rails-specific code.
  task :finalize_update, :except =&gt; { :no_release =&gt; true } do
    run "chmod -R g+w #{release_path}" if fetch(:group_writable, true)
  end

  # Each of the following tasks are Rails specific. They're removed.
  task :migrate do
  end

  task :migrations do
  end

  task :cold do
  end

  task :start do
  end

  task :stop do
  end

  # Do nothing (To restart apache, run 'cap deploy:apache:restart')
  task :restart do
  end

  task :use_live_configuration, :roles =&gt; :app do
    run "cp -f #{release_path}/joomla/configuration.php.live #{release_path}/joomla/configuration.php"
  end

  task :symlink_cache, :roles =&gt; :app do
    run "rm -rf #{release_path}/joomla/cache &amp;&amp; ln -s #{cache_path} #{release_path}/joomla/cache"
  end
  task :symlink_secret, :roles =&gt; :app do
    run "ln -s #{deploy_to}/secret #{release_path}/secret"
  end

end

namespace :db do

  desc "Overwrite the remote database with local database."
  task :push_force, :roles =&gt; :db do
    system "mysqldump --opt rainbow_layoutmania | bzip2 &gt; /tmp/rainbow_layoutmania.sql.bz2"
    system "rsync -vPa /tmp/rainbow_layoutmania.sql.bz2 rainbowpurple.com:tmp/"
    run "bunzip2 -dc /home/rainbow/tmp/rainbow_layoutmania.sql.bz2 | mysql -u rainbow_layoutma -p`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
    run "rm -f /home/rainbow/tmp/rainbow_layoutmania.sql.bz2"
    system "rm -f /tmp/rainbow_layoutmania.sql.bz2"
  end

  desc "Optimize remote database."
  task <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> ptimize, :roles =&gt; :db do
    run "mysqlcheck --analyze --repair --optimize --user=rainbow_layoutma --password=`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
  end

end</pre>
<p>Interested? Unfortunately this isn&#8217;t a tutorial. Look more on the resources below:</p>
<p>Tertarik? Sayang sekali ini bukan tutorial, coba cari informasi lebih lanjut di:</p>
<ul>
<li><a href="http://capify.org/" rel="nofollow"  title="Capistrano 2.0 deployment">Capistrano 2.0 official site</a></li>
<li><a href="http://capify.stikipad.com/wiki/" rel="nofollow"  title="Capistrano / Capify Wiki">Capistrano Wiki</a></li>
<li><a href="http://devthatweb.com/view/deploy-any-project-using-capistrano-2" rel="nofollow" >Deploy any project using Capistrano 2</a></li>
<li><a href="http://devthatweb.com/view/automate-the-deployment-of-any-php-project-using-capistrano" rel="nofollow" >Automate the deployment of any PHP project using Capistrano 2.0</a></li>
<li><a href="http://weblog.jamisbuck.org/" rel="nofollow"  title="Jamis Buck aka Capistrano Man">Jamis Buck&#8217;s blog</a> (creator, lead developer, and chief inventor of Capistrano <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" />  )</li>
<li><a href="http://safari.oreilly.com/0596529627" rel="nofollow"  title="Capistrano book from O'Reilly">Capistrano and the Rails Application Lifecycle</a> book from O&#8217;Reilly</li>
</ul>
<p><em>Note:</em> Sorry for dual-language posting, any better suggestion? <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> </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/2007/08/14/deploying-joomla-using-capistrano-20/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
