<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEcFSHs9fCp7ImA9WhRWGEU.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021</id><updated>2012-01-06T12:33:39.564-08:00</updated><category term="ruby" /><category term="log4j" /><category term="weather" /><category term="jrubyonrails" /><category term="jror" /><category term="mail" /><category term="archive" /><category term="quartz" /><category term="appengine" /><category term="rails" /><category term="macosx" /><category term="scriptconsole" /><category term="spotlight" /><category term="github" /><category term="jruby" /><category term="maps" /><category term="weathermaps" /><category term="google" /><category term="netbeans" /><category term="snowleopard" /><title>{job:  {type:  developer,  lang: [ruby, javascript]}}</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.rajasekharkonuru.com/" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jobtypeDeveloperLangrubyJavascript" /><feedburner:info uri="jobtypedeveloperlangrubyjavascript" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEACR386fSp7ImA9WhRRFkU.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-1178588225021395625</id><published>2011-11-30T12:54:00.001-08:00</published><updated>2011-11-30T12:59:26.115-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T12:59:26.115-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="jrubyonrails" /><category scheme="http://www.blogger.com/atom/ns#" term="scriptconsole" /><title>script console for jruby rails</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
inside your rails root directory&lt;br /&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
&amp;lt;system java path&amp;gt;/java -client&amp;nbsp; -Xbootclasspath/a:&amp;lt;path to jruby jar&amp;gt;/jruby-complete-1.6.2.jar &amp;nbsp; -Djruby.shell=/bin/sh org.jruby.Main script/console&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
useful for investigating stuff on production boxes if jruby is not installed on commandline.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-1178588225021395625?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-_jFDZgMC8L74vt2TTyiQ4D-Rgc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-_jFDZgMC8L74vt2TTyiQ4D-Rgc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-_jFDZgMC8L74vt2TTyiQ4D-Rgc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-_jFDZgMC8L74vt2TTyiQ4D-Rgc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/XLW82eiyURs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/1178588225021395625/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/11/script-console-for-jruby-rails.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/1178588225021395625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/1178588225021395625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/XLW82eiyURs/script-console-for-jruby-rails.html" title="script console for jruby rails" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/11/script-console-for-jruby-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ABSX07cCp7ImA9WhRRFko.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-4896425908920026968</id><published>2011-11-30T08:37:00.000-08:00</published><updated>2011-11-30T09:55:58.308-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T09:55:58.308-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jruby" /><category scheme="http://www.blogger.com/atom/ns#" term="quartz" /><category scheme="http://www.blogger.com/atom/ns#" term="log4j" /><category scheme="http://www.blogger.com/atom/ns#" term="jrubyonrails" /><category scheme="http://www.blogger.com/atom/ns#" term="jror" /><title>Jruby on Rails + Quartz + log4j</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
If you want your custom quartz.properties file to be picked up, please make sure you configure this in your web.xml or web.xml.erb&lt;/div&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;QuartzInitializer&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;display-name&amp;gt;&amp;nbsp;Quartz&amp;nbsp;Initializer&amp;nbsp;Servlet&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-class&amp;gt;org.quartz.ee.servlet.QuartzInitializerServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;config-file&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;WEB-INF/lib/quartz.properties&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;shutdown-on-unload&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;start-scheduler-on-load&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and you want &amp;nbsp;your log4j properties to be picked up&lt;br /&gt;
&amp;lt;context-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;log4jConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;WEB-INF/lib/frlog4j.properties&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/context-param&amp;gt;&lt;br /&gt;
&amp;lt;listener&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;listener-class&amp;gt;org.springframework.web.util.Log4jConfigListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/listener&amp;gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-4896425908920026968?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0W9_vZaqPGqdiVzdSd8KKIjWYJU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0W9_vZaqPGqdiVzdSd8KKIjWYJU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0W9_vZaqPGqdiVzdSd8KKIjWYJU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0W9_vZaqPGqdiVzdSd8KKIjWYJU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/XDUvv2wpxH4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/4896425908920026968/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/11/jruby-on-rails-quartz-log4j.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/4896425908920026968?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/4896425908920026968?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/XDUvv2wpxH4/jruby-on-rails-quartz-log4j.html" title="Jruby on Rails + Quartz + log4j" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/11/jruby-on-rails-quartz-log4j.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMRnc6eCp7ImA9WhZaE0s.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-2283825710822767661</id><published>2011-06-29T09:38:00.000-07:00</published><updated>2011-06-29T09:38:07.910-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T09:38:07.910-07:00</app:edited><title>ruboto/ruboto-core - GitHub</title><content type="html">&lt;a href="https://github.com/ruboto/ruboto-core"&gt;ruboto/ruboto-core - GitHub&lt;/a&gt; &lt;br /&gt;I simply cant wipe the grin on my face.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-2283825710822767661?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/acnbV460eKvHczDA0yWsYCJHlvw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/acnbV460eKvHczDA0yWsYCJHlvw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/acnbV460eKvHczDA0yWsYCJHlvw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/acnbV460eKvHczDA0yWsYCJHlvw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/g6BaDCPNJH8" height="1" width="1"/&gt;</content><link rel="related" href="https://github.com/ruboto/ruboto-core" title="ruboto/ruboto-core - GitHub" /><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/2283825710822767661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/06/rubotoruboto-core-github.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/2283825710822767661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/2283825710822767661?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/g6BaDCPNJH8/rubotoruboto-core-github.html" title="ruboto/ruboto-core - GitHub" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/06/rubotoruboto-core-github.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQn04cCp7ImA9WhZUF0w.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-6248746147414898768</id><published>2011-06-10T07:39:00.001-07:00</published><updated>2011-06-10T07:44:33.338-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-10T07:44:33.338-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="maps" /><category scheme="http://www.blogger.com/atom/ns#" term="weathermaps" /><category scheme="http://www.blogger.com/atom/ns#" term="jruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="github" /><category scheme="http://www.blogger.com/atom/ns#" term="weather" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="appengine" /><title>Google Directions with Weather</title><content type="html">So finally I updated my new appspot application with the weather and directions rails app that I was procrastinating for a very long time,  got its own website address instead of the appspot address.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weathermaps.rajasekharkonuru.com/maps/show"&gt;weathermaps.rajasekharkonuru.com/maps/show&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;its still very premature and may not be very intuitive, but what it does is you can either mark origin and destination on the map or type the origin and destination input entries and when you click "Get Directions" it will draw a route which is expected but it will also mark weather condition at every turn through out the route (where ever possible) , for longer routes it might not load by throwing an error, but for shorter routes it should load (may be will be slow) , try it out.&lt;br /&gt;&lt;br /&gt;Source code is at &lt;a href="https://github.com/ksekhar/weathermaps"&gt;https://github.com/ksekhar/weathermaps&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It might be very ugly code though :), I am refactoring, probably will need to put in some specs and tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-6248746147414898768?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FrZUZ96YL54-Qkc9obuqh0O5pfw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FrZUZ96YL54-Qkc9obuqh0O5pfw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FrZUZ96YL54-Qkc9obuqh0O5pfw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FrZUZ96YL54-Qkc9obuqh0O5pfw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/srB0UuXHgxo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/6248746147414898768/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/06/google-directions-with-weather.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/6248746147414898768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/6248746147414898768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/srB0UuXHgxo/google-directions-with-weather.html" title="Google Directions with Weather" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/06/google-directions-with-weather.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MEQX86cCp7ImA9WhZVGU4.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-8904189938163273279</id><published>2011-06-01T07:43:00.000-07:00</published><updated>2011-06-01T07:43:20.118-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-01T07:43:20.118-07:00</app:edited><title>Appspot + Jruby 1.6.2 + Rails 2.3.11</title><content type="html">So I successfully uploaded my Rails application to appspot, phew that was NOT a breeze, but still thanks to http://code.google.com/p/appengine-jruby/ and http://code.google.com/p/appengine-jruby/&lt;br /&gt;Now lets ride on rails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-8904189938163273279?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-yFXMY4utOHMnyPuBTyCR2FIytQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-yFXMY4utOHMnyPuBTyCR2FIytQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-yFXMY4utOHMnyPuBTyCR2FIytQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-yFXMY4utOHMnyPuBTyCR2FIytQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/fMfYdUUdeWk" height="1" width="1"/&gt;</content><link rel="related" href="http://www.gweathermaps.appspot.com/" title="Appspot + Jruby 1.6.2 + Rails 2.3.11" /><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/8904189938163273279/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/06/appspot-jruby-162-rails-2311.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/8904189938163273279?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/8904189938163273279?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/fMfYdUUdeWk/appspot-jruby-162-rails-2311.html" title="Appspot + Jruby 1.6.2 + Rails 2.3.11" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/06/appspot-jruby-162-rails-2311.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8EQ3s6fip7ImA9WhZVE04.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-542554298008579332</id><published>2011-05-25T08:44:00.000-07:00</published><updated>2011-05-25T08:53:22.516-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-25T08:53:22.516-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="jruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><title>Netbeans + rvm  = Awesome</title><content type="html">Maybe not a news but just wanted to share what difference it makes when netbeans with its really well worked out ruby platform manager and rvm enabling you to install any ruby version out there they really make life work.&lt;br /&gt;&lt;br /&gt;I can happily maintain and develop &lt;br /&gt;rails 1.2 on ruby 1.8.6&lt;br /&gt;rails 2.3.3 on jruby 1.3.1&lt;br /&gt;rails 3.0 on ruby 1.9&lt;br /&gt;rails 2.3.11 on jruby 1.6.2&lt;br /&gt;&lt;br /&gt;Its simply AWESOME&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-542554298008579332?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xs73EB-IJ99RAqjVQ0BHQFzHLCU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xs73EB-IJ99RAqjVQ0BHQFzHLCU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xs73EB-IJ99RAqjVQ0BHQFzHLCU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xs73EB-IJ99RAqjVQ0BHQFzHLCU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/JkeHNMrm8i8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/542554298008579332/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2011/05/netbeans-rvm-awesome.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/542554298008579332?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/542554298008579332?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/JkeHNMrm8i8/netbeans-rvm-awesome.html" title="Netbeans + rvm  = Awesome" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2011/05/netbeans-rvm-awesome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8FQ34_eyp7ImA9Wx9TEE8.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-2876245449117095774</id><published>2010-11-17T11:52:00.001-08:00</published><updated>2010-11-17T12:46:52.043-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-17T12:46:52.043-08:00</app:edited><title>Rails 2.3 named scope awesomeness</title><content type="html">Although sadly named scopes are&lt;a href="http://www.railway.at/2010/03/09/named-scopes-are-dead/"&gt; not the same in Rails 3 according to some&lt;/a&gt;.&lt;div&gt;I love to use them in the rails 2.3 apps that I still maintain and support.&lt;/div&gt;&lt;div&gt;most importantly in conjunction with a plugin/gem called &lt;a href="https://github.com/binarylogic/searchlogic"&gt;searchlogic&lt;/a&gt; the potential for named scope has no limit in being awesome.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Though there are too many tutorials, screen casts etc for these, a recent use I uncovered in fixing a minor issue I had with a search form in my application really moved me, that is why this post.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is already known that named scopes can be given lambda arguments to for dynamic queries on a table like
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;named_scope :of_size, lambda {|size|{:conditions =&gt; {:size =&gt; size}}}&lt;/code&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;so for two parameters I would have to do something like
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;named_scope :made_between, lambda{|from,to|&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;{:conditions =&gt; ["mfg_date between to_date (?, 'mm-dd-yyyy') and to_date (?, 'mm-dd-yyyy')",from, to]}&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;how searchlogic fits into this is that, searchlogic uses named_scopes to create search object and finally creating the query we want to get a particular subset of rows from a table.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;so things like
&lt;br /&gt;
&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Product.description_like = "abc"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Product.mfg_date_gt = "10-2-2010"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You get the picture. And this can be passed on through views by having the fields with those named scope names and it will work like charm. &lt;/div&gt;&lt;div&gt;Back to issue I was facing , there is no clean way of sending two parameters to the same named scope without some ugly confusing hack or a condition in controller to deal with these separately than the clean DRY &lt;code&gt;@object.search(params[:search])&lt;/code&gt;, so instead I sent a hash and it worked like a charm.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta charset="utf-8"&gt;&lt;div&gt;&lt;code&gt;named_scope :made_between, lambda{|manufactured_date|&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;		&lt;/span&gt;{:conditions =&gt; ["mfg_date between to_date (?, 'mm-dd-yyyy') and to_date (?, 'mm-dd-yyyy')",&lt;/code&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt; manufactured_date[:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt;from], &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt;manufactured_date[:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt;to]]}&lt;/span&gt;&lt;/div&gt;&lt;meta charset="utf-8"&gt;&lt;meta charset="utf-8"&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;though this is not a very useful post as in not a step by step tutorial, I hope this helps in getting a good insight in trying out things in context of keeping your controllers thin and code DRY.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-2876245449117095774?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gjs1e7cIQX6YKK7E_9vSzIxxTp0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gjs1e7cIQX6YKK7E_9vSzIxxTp0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gjs1e7cIQX6YKK7E_9vSzIxxTp0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gjs1e7cIQX6YKK7E_9vSzIxxTp0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/RdiUI1INlvI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/2876245449117095774/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2010/11/rails-23-named-scope-awesomeness.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/2876245449117095774?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/2876245449117095774?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/RdiUI1INlvI/rails-23-named-scope-awesomeness.html" title="Rails 2.3 named scope awesomeness" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2010/11/rails-23-named-scope-awesomeness.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCQH08eSp7ImA9WhdSF0U.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-5162590200857832499</id><published>2010-09-07T12:58:00.000-07:00</published><updated>2011-07-27T10:54:21.371-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-27T10:54:21.371-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spotlight" /><category scheme="http://www.blogger.com/atom/ns#" term="archive" /><category scheme="http://www.blogger.com/atom/ns#" term="snowleopard" /><category scheme="http://www.blogger.com/atom/ns#" term="mail" /><category scheme="http://www.blogger.com/atom/ns#" term="macosx" /><title>Searchable mail archive on Snow Leopard</title><content type="html">&lt;div&gt;Update[Wednesday, July 27th, 2011]: Theres actually a profound way to do this check it out &lt;a href="http://andreasamann.com/MacOSX/Mail_Scripts.html"&gt;here&lt;/a&gt;. [Mail Scripts]. These scripts are awesome way to organize your emails inside mail application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Synopsis: Mailbox at work is a laughable 112mb which gets filled up with the mere bulk of notification emails from production servers. Archiving mails is only choice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Problem: Every once in a while something comes up that forces me to search my email archive, which is a pain. (unzipping grep-ing etc). Mail program saves archived mail in weird format rhymes with NON-STANDARD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Solution:  After a little research that I can't make my archived mail on Snow Leopard spotlight searchable. And after finding out the frustrating truth that Apple's .mbox is NOT really the standard mbox format, which means mairix is out of the window. &lt;div&gt;I did the following and I am a little happy now. Its just 3 simple steps actually.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Save the overloaded inbox to a local directory (Snow Leopard will call it &lt;whatever&gt;.mbox&lt;/whatever&gt;&lt;/li&gt;&lt;li&gt;Then Delete all the excess mail you don't want.&lt;/li&gt;&lt;li&gt;Then in Mail program choose File&amp;gt; Import Mailboxes and select Files in mbox format and select the file saved in step 1.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;That creates a neat new mailbox in "ON MY MAC" section called "import" which has all your archived email. Voila which is spotlight searchable and well .. Mail program searchable.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Phew what a relief.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-5162590200857832499?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MiIniubWuBNvtrTFqaboeKzlLNs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MiIniubWuBNvtrTFqaboeKzlLNs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MiIniubWuBNvtrTFqaboeKzlLNs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MiIniubWuBNvtrTFqaboeKzlLNs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/7H9-EVoHE9A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/5162590200857832499/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2010/09/searchable-mail-archive-on-snow-leopard.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/5162590200857832499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/5162590200857832499?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/7H9-EVoHE9A/searchable-mail-archive-on-snow-leopard.html" title="Searchable mail archive on Snow Leopard" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2010/09/searchable-mail-archive-on-snow-leopard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQERno5fSp7ImA9WxNUEUU.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-7663051386949989067</id><published>2009-11-02T09:48:00.000-08:00</published><updated>2009-11-02T09:51:47.425-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T09:51:47.425-08:00</app:edited><title>blackra1n is the thing you want</title><content type="html">Planning to jailbreak your new ipod touch 3rd Generation ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blackra1n.com"&gt;blackra1n.com&lt;/a&gt; is the most updated jailbreak software for it. all the others are outdated at least for the latest ipods and iphones&lt;br /&gt;&lt;br /&gt;try at home, because i think almost all office firewalls don't allow you to access this website :(&lt;br /&gt;&lt;br /&gt;good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-7663051386949989067?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A-VcwoGw0sydxvZq5Nk5H8C6p_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A-VcwoGw0sydxvZq5Nk5H8C6p_8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A-VcwoGw0sydxvZq5Nk5H8C6p_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A-VcwoGw0sydxvZq5Nk5H8C6p_8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/kwXGDX9_ktA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/7663051386949989067/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2009/11/blackra1n-is-thing-you-want.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/7663051386949989067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/7663051386949989067?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/kwXGDX9_ktA/blackra1n-is-thing-you-want.html" title="blackra1n is the thing you want" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2009/11/blackra1n-is-thing-you-want.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYCQXY9fyp7ImA9WxJWGEQ.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-638913168089786532</id><published>2009-06-17T18:59:00.001-07:00</published><updated>2009-06-24T18:42:40.867-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T18:42:40.867-07:00</app:edited><title>multiple actions using context menus in rails application</title><content type="html">Context menus for a web application ? I know I am not a big fan for context menus either, but if somebody wants it bad you have to put them in, besides it depends on the website's scope.&lt;br /&gt;&lt;br /&gt;So all the rails developers are familiar with the scaffold generated tables, with show, edit, delete actions as links to each row.&lt;br /&gt;&lt;br /&gt;Now recently Ryan Bates updated his &lt;a href="http://www.railscasts.com/"&gt;railscasts&lt;/a&gt; with multiple edits, which deals with how to edit and update common fields of a two or more "resources" at a time.&lt;br /&gt;&lt;br /&gt;And I use redmine as a productivity tool and they have a cool (but very non intuitive) feature of a context menu through which you could do the same, like edit two issues, or change priority of those issues etc.&lt;br /&gt;&lt;br /&gt;So here's what I did to get that redmine's context menu functionality with as little pain as possible.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abeautifulsite.net/notebook/80"&gt;Jquery's context menu plugin&lt;/a&gt; + Ryan Bates' multiple edits&lt;br /&gt;and you get&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BocY4ZyztCY/SkLPsIG66gI/AAAAAAAAEV4/rjtKOPKKS5I/s1600-h/context_menu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 123px;" src="http://3.bp.blogspot.com/_BocY4ZyztCY/SkLPsIG66gI/AAAAAAAAEV4/rjtKOPKKS5I/s320/context_menu.jpg" alt="" id="BLOGGER_PHOTO_ID_5351067664267274754" border="0" /&gt;&lt;/a&gt;to accomplish above&lt;br /&gt;step 1: Wrap your table  in  form which posts to a special RESTful action in this case i called it multiple_actions in your template file and put a check_box field before each row. (see Ryan's scre&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt; &lt;br /&gt;&lt;span style="font-size:85%;"&gt;form_tag multiple_actions_banners_path, :id =&gt; 'multiple_actions'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;step 2: configure this route in routes.rb&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;  &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;  map.resources messages, &lt;/span&gt;&lt;span style="font-family: courier new;"&gt;:collection =&gt; {&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;:multiple_actions =&gt; :post&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;step 3:  Define the action in your controller.rb file&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;  def multiple_actions&lt;br /&gt;  unless params[:message_ids].blank?&lt;br /&gt;          @banners = Message.find(params[:message_ids])&lt;br /&gt;      end &lt;br /&gt;      case&lt;br /&gt;      when params[:revoke]&lt;br /&gt;          revoke_multiple(@messages)&lt;br /&gt;          flash[:notice] = &amp;quot;Revoked #{@messages.count}  Messages&lt;br /&gt;           ......&lt;br /&gt;      else&lt;br /&gt;      end&lt;br /&gt;      respond_to do &amp;#124;format&amp;#124;&lt;br /&gt;          format.html {redirect_to(messages_path)}&lt;br /&gt;        end&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;step 4:  Now for javascript , using guide lines from jquery context menu&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;br /&gt;function initializeContextMenu()&lt;br /&gt;{&lt;br /&gt;  jQuery(&amp;quot;table.listview tr td&amp;quot;).contextMenu({&lt;br /&gt;        menu: 'myMenu'&lt;br /&gt;    },&lt;br /&gt;        function(action, el, pos) {&lt;br /&gt;          switch(action){&lt;br /&gt;            case 'revoke':&lt;br /&gt;               form_submit(action);&lt;br /&gt;              break;&lt;br /&gt;            case 'clone':&lt;br /&gt;              form_submit(action);&lt;br /&gt;              break;&lt;br /&gt;            case 'delete':&lt;br /&gt;              form_submit(action);&lt;br /&gt;              break;&lt;br /&gt;            case 'destroy':&lt;br /&gt;              form_submit(action);&lt;br /&gt;              break;&lt;br /&gt;            default :;&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;  );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function form_submit(action)&lt;br /&gt;{&lt;br /&gt;  if(jQuery(&amp;quot;input:checked&amp;quot;).length &amp;gt; 1) {&lt;br /&gt;    if(confirm(&amp;quot;This action will impact multiple messages. Are you sure?&amp;quot;)){&lt;br /&gt;      jQuery(&amp;quot;#submit_type&amp;quot;).append(jQuery(&amp;quot;&amp;lt;input type='hidden' name='&amp;quot; + action +&amp;quot;'&amp;gt;&amp;lt;/input&amp;gt;&amp;quot;));&lt;br /&gt;      jQuery(&amp;quot;form#multiple_actions&amp;quot;).submit();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;      alert('Select at least one item.');&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thats it that got me a minimal context menu capability.&lt;br /&gt;&lt;br /&gt;Please understand that context menu is mostly eye-candy, because its not very intuitive and not the first thing a user would think of doing in a web browser.&lt;br /&gt;It would be rather more useful if along with context menu we add buttons like in Gmail labs features for "Mark as Read" or "Delete" buttons, that would be very helpful for regular users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-638913168089786532?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qI6iJbWEPrIoC-MI4peT-V2r4lQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qI6iJbWEPrIoC-MI4peT-V2r4lQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qI6iJbWEPrIoC-MI4peT-V2r4lQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qI6iJbWEPrIoC-MI4peT-V2r4lQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/NdAJU8HqA_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/638913168089786532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2009/06/multiple-actions-using-context-menus-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/638913168089786532?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/638913168089786532?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/NdAJU8HqA_M/multiple-actions-using-context-menus-in.html" title="multiple actions using context menus in rails application" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_BocY4ZyztCY/SkLPsIG66gI/AAAAAAAAEV4/rjtKOPKKS5I/s72-c/context_menu.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2009/06/multiple-actions-using-context-menus-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GRHo5eip7ImA9WxJXEUs.&quot;"><id>tag:blogger.com,1999:blog-3780658921350293021.post-8145879490587660418</id><published>2009-06-04T13:55:00.000-07:00</published><updated>2009-06-04T17:13:45.422-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T17:13:45.422-07:00</app:edited><title>habtm based javascript UI in rails</title><content type="html">From the time I have begun web-development in rails it has always been a big struggle to get Models and Views to play well together.&lt;br /&gt;Few examples being, Restricting Views Based on Roles, Search forms in views.&lt;br /&gt;&lt;br /&gt;Of course these days with ruby gems like &lt;a href="http://steffenbartsch.com/blog/2008/09/delclarative-authorization/"&gt;Declarative Authorization&lt;/a&gt; , &lt;a href="http://github.com/binarylogic/authlogic/tree/master"&gt;Authlogic&lt;/a&gt;, and &lt;a href="http://github.com/binarylogic/searchlogic/tree/master"&gt;Searchlogic&lt;/a&gt; life is not the same.&lt;br /&gt;&lt;br /&gt;Still, as things get complex more, it gets really difficult to create user interfaces to powerfully play with models while following the programming style that rails encourages.&lt;br /&gt;Forget about good CSS looks and Javascript Effects but also coming up with design which flows properly with the web application.&lt;br /&gt;&lt;br /&gt;Okay now coming to the point of my rant.&lt;br /&gt;Just today I have finished designing and developing UI which took quite a bit of ruby, javascript and rjs, but in the end was worth it, without having to put in a lot of javascript (unobtrusive or not), and not ending up writing something from scratch.&lt;br /&gt;&lt;br /&gt;So here's the problem, there are two models with habtm relationship (dont ask why), now we know the traditional form with either&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;a href="http://railscasts.com/episodes/17-habtm-checkboxes"&gt;chec&lt;/a&gt;&lt;a href="http://railscasts.com/episodes/17-habtm-checkboxes"&gt;kboxes &lt;/a&gt;or&lt;/li&gt;&lt;li&gt; &lt;a href="http://snippets.dzone.com/posts/show/4369"&gt;collection_select&lt;/a&gt; in the form ,&lt;/li&gt;&lt;li&gt;also I came across another solution which was just as I wanted with option transfer select boxes called &lt;a href="http://trendwork.kmf.de/175"&gt;SwapSelect&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;Which was kind of cool, but it was limited in certain things for example,  it needed all the options in to construct a big select box, and javascript code was  beyond my understanding of javascript or simply put the author did not use any JS library , he wrote the traditional javascript which I am not comfortable coding in.&lt;br /&gt;&lt;br /&gt;ok now I wanted the following&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A select box on the left with filters to list by name keywords, display only 25 records and then display additional by pagination etc.&lt;/li&gt;&lt;li&gt;A second select box on the right which displays existing options and acts like a container for adding new options from the one on the left.&lt;/li&gt;&lt;li&gt;and buttons in between to add selected to right, add selected  to left, add all to right and add all to left options.&lt;/li&gt;&lt;/ol&gt;Like the following picture&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BocY4ZyztCY/SihczjwG3HI/AAAAAAAAD1A/SUUTI-S61zw/s1600-h/optin_transfer.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://3.bp.blogspot.com/_BocY4ZyztCY/SihczjwG3HI/AAAAAAAAD1A/SUUTI-S61zw/s320/optin_transfer.jpg" alt="" id="BLOGGER_PHOTO_ID_5343622998715194482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ok the first point a search enabled list of available options was actually the easiest part, this is where I used Searchlogic, which is a brilliant rubygem, now other than that everything was simple javascript using Prototype library,  rjs and little ruby.&lt;br /&gt;&lt;br /&gt;What happens after the options are final is that I clone the final select box and give it a new name with _ids[] in the end folowing rails convention to make a habtm form object which I attach it to the model's form. and the voila the record updated with a put or created with a post following REST.&lt;br /&gt;&lt;br /&gt;The way rails architecture allows you to design this kind of complex simply is what inspired "Me" to write about it.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Soon as I published I saw &lt;a href="http://www.ahabman.info/blog/2008/10/ruby-on-rails-has-and-belongs-to-many-view-plugin/"&gt;another article&lt;/a&gt; which is very good, and its a plugin too.&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3780658921350293021-8145879490587660418?l=www.rajasekharkonuru.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5l8IvU7OtrGOoxX8psAfN0GAIuY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5l8IvU7OtrGOoxX8psAfN0GAIuY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5l8IvU7OtrGOoxX8psAfN0GAIuY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5l8IvU7OtrGOoxX8psAfN0GAIuY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jobtypeDeveloperLangrubyJavascript/~4/YRPCVyh8uo4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.rajasekharkonuru.com/feeds/8145879490587660418/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.rajasekharkonuru.com/2009/06/habtm-based-javascript-ui-in-rails.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/8145879490587660418?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3780658921350293021/posts/default/8145879490587660418?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jobtypeDeveloperLangrubyJavascript/~3/YRPCVyh8uo4/habtm-based-javascript-ui-in-rails.html" title="habtm based javascript UI in rails" /><author><name>Rajasekhar Konuru</name><uri>https://profiles.google.com/108693074541218147698</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_BocY4ZyztCY/SihczjwG3HI/AAAAAAAAD1A/SUUTI-S61zw/s72-c/optin_transfer.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.rajasekharkonuru.com/2009/06/habtm-based-javascript-ui-in-rails.html</feedburner:origLink></entry></feed>

