<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Web Professional</title><link>http://blogofchirag.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WebProfessional" /><description>Working with Ruby on Rails since july 2007. RoR web application development along with other technologies like LAMP.The reason to love programming with RoR is, it helps keep code simple, clean and nice… 
Also working with php/cakephp etc.</description><language>en</language><managingEditor>noreply@blogger.com (Chirag Shah)</managingEditor><lastBuildDate>Wed, 28 Sep 2011 09:57:22 PDT</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">31</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="webprofessional" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>copyright 2011 - chirag shah</media:copyright><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Software How-To</media:category><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Working with Ruby on Rails since july 2007. RoR web application development along with other technologies like LAMP.The reason to love programming with RoR is, it helps keep code simple, clean and nice… Also working with php/cakephp etc.</itunes:subtitle><itunes:summary>Working with Ruby on Rails since july 2007. RoR web application development along with other technologies like LAMP.The reason to love programming with RoR is, it helps keep code simple, clean and nice… Also working with php/cakephp etc.</itunes:summary><itunes:category text="Technology"><itunes:category text="Software How-To" /></itunes:category><item><title>change table column name in Rails validation message</title><link>http://blogofchirag.blogspot.com/2011/09/change-table-column-name-in-rails.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Tue, 20 Sep 2011 05:39:23 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-4378237291939298686</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; Vendor &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;validate_uniqness_of :gid, :message =&amp;gt; "should be uniq"&lt;/pre&gt;&lt;pre&gt;&lt;span class="no"&gt;HUMANIZED_ATTRIBUTES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="ss"&gt;:gid&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"vendor"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;human_attribute_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kp"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="no"&gt;HUMANIZED_ATTRIBUTES&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="kp"&gt;attr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_sym&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;&lt;/pre&gt;&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/2564021856242776522-4378237291939298686?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-20T18:09:23.629+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Collect all child elements javascript</title><link>http://blogofchirag.blogspot.com/2011/07/collect-all-child-elements-javascript.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 08 Jul 2011 04:19:43 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-7662728274555664679</guid><description>For all first level children &lt;br /&gt;
var children = document.getElementById('id').childNodes;&lt;br /&gt;
&lt;br /&gt;
For all descendants&amp;nbsp; &lt;br /&gt;
var children = document.getElementById('id').getElementsByTagName('*');&lt;br /&gt;
&lt;br /&gt;
For some particular&amp;nbsp; element children&lt;br /&gt;
var childNodeArray = document.getElementById(tbody).getElementsByTagName('tr');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-7662728274555664679?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-08T16:49:43.600+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>find process id for the port</title><link>http://blogofchirag.blogspot.com/2011/03/find-process-id-for-port.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Mon, 28 Mar 2011 03:56:49 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-3391989785188372155</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Find port by following way &lt;br /&gt;
&lt;br /&gt;
lsof -w -n -i tcp:8080 &lt;br /&gt;
fuser -n tcp 8080&lt;br /&gt;
&lt;br /&gt;
Now you have some integer value which is the process of the port&lt;br /&gt;
Now kill it by&lt;br /&gt;
kill -9 XXXX&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-3391989785188372155?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-28T16:26:49.963+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Debuging Technique with Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2011/03/debuging-technique-with-ruby-on-rails.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 25 Mar 2011 22:38:10 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-1553461734100413314</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There are multiple debug techniques are available with RoR,&amp;nbsp; Please use the&lt;br /&gt;
below techniques as much as you can,&amp;nbsp; while you do programming in RoR.&lt;br /&gt;
&lt;br /&gt;
1. install ruby-debug&lt;br /&gt;
&amp;nbsp;&amp;nbsp; then need to start application by ruby script/server --debugger&lt;br /&gt;
&amp;nbsp;&amp;nbsp; And place word 'debugger' anywhere in your code and once you run your&lt;br /&gt;
application, it stops running from where you have placed 'debugger'. We&lt;br /&gt;
can say that debugger is the breakpoint&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Then you can use following commands&lt;br /&gt;
&amp;nbsp; n - move next line&lt;br /&gt;
&amp;nbsp; l - display the current line after the debugger&lt;br /&gt;
&amp;nbsp; c - continue&lt;br /&gt;
&amp;nbsp; You can also check the readme of the ruby-debug&lt;br /&gt;
&lt;br /&gt;
2. You can use puts,exit etc.&lt;br /&gt;
&lt;br /&gt;
3. You can use&amp;nbsp; logger.debug "The object is #{@object}" or&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; RAILS_DEFAULT_LOGGER.debug @object&lt;br /&gt;
&lt;br /&gt;
4. In view, you can also use &amp;lt;%=debug @object %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. You can simultaneously check your log by running tail -f lod/development.log in the another terminal or you can also use tail -n log/development.log where n is any numeric number&lt;br /&gt;
&lt;br /&gt;
6. We can use Exception Notifier plugin in our production environment so that we gets an notification mail if any error occurs on production&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-1553461734100413314?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-26T11:08:10.660+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Call Rake task from migration</title><link>http://blogofchirag.blogspot.com/2011/01/call-rake-task-from-migration.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Sun, 23 Jan 2011 22:48:58 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-430507121753394634</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&amp;nbsp;You can call the rake task in migration by writing following&lt;br /&gt;
&lt;br /&gt;
Rake::Task[this_is_rake_task'].invoke&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-430507121753394634?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T12:18:58.396+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Is the string has numeric value?</title><link>http://blogofchirag.blogspot.com/2011/01/is-string-has-numeric-value.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Sun, 23 Jan 2011 22:46:34 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-4142332095276331578</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;for check the string has numeric value or not then you can do it by below&lt;br /&gt;
s = "123cs"&lt;br /&gt;
&lt;br /&gt;
then call method as below&lt;br /&gt;
is_numeric?(s) &lt;br /&gt;
&lt;br /&gt;
and the method is as below&lt;br /&gt;
&amp;nbsp;def is_numeric?(s) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true &lt;br /&gt;
&amp;nbsp; end&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-4142332095276331578?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T12:16:34.629+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Run your rails application with apache2 and mongrel_clusters</title><link>http://blogofchirag.blogspot.com/2011/01/run-your-rails-application-with-apache2.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Sun, 23 Jan 2011 22:43:17 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-8582075283778812050</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Run your rails application with apache2 and mongrel_clusters&lt;br /&gt;
&lt;br /&gt;
Install Apache 2.2 and enable the needed modules (url rewriting, proxy, proxy_balancer e proxy_http)&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install apache2&lt;br /&gt;
&lt;br /&gt;
# enable your modules in apache&lt;br /&gt;
sudo a2enmod rewrite&lt;br /&gt;
sudo a2enmod proxy&lt;br /&gt;
sudo a2enmod proxy_balancer&lt;br /&gt;
sudo a2enmod proxy_http&lt;br /&gt;
sudo a2enmod proxy_connect&lt;br /&gt;
&lt;br /&gt;
# if you not enabled any of the modules then may be errors occured while you restart your apache after adding the below configration&lt;br /&gt;
# Error may be encoutered it yoou have not enabled module rewrite is "Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration"&lt;br /&gt;
&lt;br /&gt;
Install Mongrel, create a mongrel user, create the mongrel cluster&lt;br /&gt;
sudo gem install daemons gem_plugin mongrel mongrel_cluster --include-dependencies&lt;br /&gt;
&lt;br /&gt;
You can continue with the same linux user to mongrel if you want otherwise you can create new user by &lt;br /&gt;
sudo /usr/sbin/adduser mongrel&lt;br /&gt;
This line creates new user mongrel withg same mongrel group&lt;br /&gt;
Now need to create one mongrel_cluster.yml&lt;br /&gt;
sudo mongrel_rails cluster::configure -e production -p 3010 -N 2 -c /home/user/projects/myapp -a 127.0.0.1 --user mongrel --group mongrel&lt;br /&gt;
&lt;br /&gt;
here -e = your working environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -p = your port for run application&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -N = Number of instances of the application. here 2 instances for my application and port is 3010. so this application will work on 3010 and 3011 port&lt;br /&gt;
&amp;nbsp;--user = need to provide your linuxuser&lt;br /&gt;
--group = need to provide your linuxgroup&lt;br /&gt;
&lt;br /&gt;
this line will create /config/mongrel_cluster.yml file with following command&lt;br /&gt;
user: mongrel&lt;br /&gt;
cwd: /home/user/projects/myapp&lt;br /&gt;
log_file: log/mongrel.log&lt;br /&gt;
port: "3010"&lt;br /&gt;
environment: production&lt;br /&gt;
group: mongrel&lt;br /&gt;
address: 127.0.0.1&lt;br /&gt;
pid_file: tmp/pids/mongrel.pid&lt;br /&gt;
servers: 2&lt;br /&gt;
&lt;br /&gt;
now make sure that tmp and log folder has permission to the user/group which you have user in mongrel_cluster if not assign permission by &lt;br /&gt;
sudo chown -R mongrel:mongrel /path/to/app/tmp&lt;br /&gt;
&lt;br /&gt;
# Now start mongrel clusters&lt;br /&gt;
sudo mongrel_rails cluster::start&lt;br /&gt;
&lt;br /&gt;
Hopefully clusters is worked perfactly and you can get it run on multiple port 3010 and 3011&lt;br /&gt;
http://127.0.0.1:3010&lt;br /&gt;
http://127.0.0.1:3011&lt;br /&gt;
&lt;br /&gt;
Now need to set proxy balancer for this app&lt;br /&gt;
For this need to create one host for you app&lt;br /&gt;
Go to sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
127.0.0.1 myapp&lt;br /&gt;
&lt;br /&gt;
Now need to configure Apache configuration file (sudo gedit /etc/apache2/sites-available/default).&lt;br /&gt;
&lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
&lt;br /&gt;
#we need this as on Ubuntu/debian by default Proxy is not allowed&lt;br /&gt;
&amp;lt;Proxy *&amp;gt;&lt;br /&gt;
&amp;nbsp; Order allow,deny&lt;br /&gt;
&amp;nbsp; Allow from all&lt;br /&gt;
&amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Proxy balancer section (create one for each ruby app cluster)&lt;br /&gt;
&amp;nbsp; &amp;lt;Proxy balancer://myapp_cluster&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BalancerMember http://myapp:3010&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BalancerMember http://myapp:3011&lt;br /&gt;
&amp;nbsp; &amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Virtual host section (create one for each ruby app you need to publish)&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ServerAdmin webmaster@localhost&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName myapp&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot /home/user/projects/myapp/public/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Options FollowSymLinks&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AllowOverride None&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory /home/debian/chirag/mycalltime/public/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AllowOverride All&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Order allow,deny&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;allow from all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory "/usr/lib/cgi-bin"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AllowOverride None&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Order allow,deny&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Allow from all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ErrorLog /var/log/apache2/error.log&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;# Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;# alert, emerg.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;LogLevel warn&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;CustomLog /var/log/apache2/access.log combined&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Alias /doc/ "/usr/share/doc/"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory "/usr/share/doc/"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes MultiViews FollowSymLinks&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order deny,allow&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deny from all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from 127.0.0.0/255.0.0.0 ::1/128&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; #Rewrite stuff&lt;br /&gt;
&amp;nbsp; RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; # Check for maintenance file and redirect all requests&lt;br /&gt;
&amp;nbsp; RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f&lt;br /&gt;
&amp;nbsp; RewriteCond %{SCRIPT_FILENAME} !maintenance.html&lt;br /&gt;
&amp;nbsp; RewriteRule ^.*$ /system/maintenance.html [L]&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; # Rewrite index to check for static&lt;br /&gt;
&amp;nbsp; RewriteRule ^/$ /index.html [QSA] &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; # Rewrite to check for Rails cached page&lt;br /&gt;
&amp;nbsp; RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; # Redirect all non-static requests to cluster&lt;br /&gt;
&amp;nbsp; RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f&lt;br /&gt;
&amp;nbsp; RewriteRule ^/(.*)$ balancer://myapp_cluster%{REQUEST_URI} [P,QSA,L]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After configure the default file need to restart apache&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
Cheers.... &lt;br /&gt;
You get your app running on multiple instanses with proxy balancer&lt;br /&gt;
http://myapp&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-8582075283778812050?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T12:13:17.356+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>search gem from repository</title><link>http://blogofchirag.blogspot.com/2010/08/search-gem-from-repository.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Tue, 10 Aug 2010 04:59:23 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-8923283136399595657</guid><description>If you want to find a gem in the repository then you can do it by following way&lt;br /&gt;
&lt;br /&gt;
gem1.8 list -r | grep gem_name&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-8923283136399595657?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-10T17:29:23.571+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Unpacked gem authlogic-2.1.3 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.</title><link>http://blogofchirag.blogspot.com/2010/06/unpacked-gem-authlogic-213-in.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Wed, 30 Jun 2010 01:42:47 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-8529777546254506300</guid><description>You can solve this issue by following way&lt;br /&gt;
&lt;br /&gt;
&amp;gt;  cd vendor/gems/authlogic-2.1.3&lt;br /&gt;
&amp;gt;  gem specification authlogic &amp;gt; .specification&lt;br /&gt;
&lt;br /&gt;
cheers,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-8529777546254506300?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-30T14:12:47.523+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Get Session Data Available in Models - Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2010/06/get-session-data-available-in-models.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Thu, 24 Jun 2010 00:16:38 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-4056455649595873269</guid><description>&lt;div style="color: #073763; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: large;"&gt;Sometimes we really need session variables inside model. But as the rails framework defines (MVC) pattern.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;This pattern separates the context of the Web Application (Controller,View) from the Model. Model contains business logic of the web application. The Controller handles the interactions between the View and the Model.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;So you can not access sessions directly in your model. You can crack it by following way.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Create one module&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: purple; font-weight: bold;"&gt;module&lt;/span&gt; &lt;span style="color: #38761d;"&gt;Utility&lt;/span&gt;
  &lt;span style="color: purple; font-weight: bold;"&gt;def&lt;/span&gt; current_user
    &lt;span style="color: #cc00ff; font-weight: bold;"&gt;Thread&lt;/span&gt;.&lt;span style="color: purple;"&gt;current&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: #ff3333; font-weight: bold;"&gt;:user&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;]&lt;/span&gt;
 &lt;span style="color: purple;"&gt; &lt;/span&gt;&lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
  &lt;span style="color: purple; font-weight: bold;"&gt;def&lt;/span&gt; &lt;span style="color: blue; font-weight: bold;"&gt;self&lt;/span&gt;.&lt;span style="color: purple;"&gt;current_user=&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;(&lt;/span&gt;user&lt;span style="color: #006600; font-weight: bold;"&gt;)&lt;/span&gt;
    &lt;span style="color: #cc00ff; font-weight: bold;"&gt;Thread&lt;/span&gt;.&lt;span style="color: purple;"&gt;current&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: #ff3333; font-weight: bold;"&gt;:user&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;]&lt;/span&gt; = user
  &lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="color: #990000; font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-weight: bold;"&gt;Add following in application controller&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: purple; font-weight: bold;"&gt;class&lt;/span&gt;&lt;span style="color: purple;"&gt; &lt;/span&gt;&lt;span style="color: #38761d;"&gt;ApplicationController&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #6666ff; font-weight: bold;"&gt;ActionController::Base&lt;/span&gt;
  &lt;span style="color: purple; font-weight: bold;"&gt;include&lt;/span&gt; &lt;span style="color: #bf9000;"&gt;Utility&lt;/span&gt;
&lt;span style="color: #996600;"&gt;&lt;/span&gt;  before_filter &lt;span style="color: #ff3333; font-weight: bold;"&gt;:set_user_session&lt;/span&gt;
&amp;nbsp;
 &lt;span style="color: purple;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="background-color: white; color: purple;"&gt;protected&lt;/span&gt;&lt;/b&gt;
&lt;span style="color: green; font-style: italic;"&gt;&lt;/span&gt;  &lt;span style="color: purple; font-weight: bold;"&gt;def&lt;/span&gt; set_user_session
    &lt;b&gt;&lt;span style="color: magenta;"&gt;Utility&lt;/span&gt;&lt;/b&gt;.&lt;span style="color: purple;"&gt;current_user&lt;/span&gt; = session&lt;span style="color: #006600; font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: #ff3333; font-weight: bold;"&gt;:user&lt;/span&gt;&lt;span style="color: #006600; font-weight: bold;"&gt;]&lt;/span&gt;
 &lt;span style="color: purple;"&gt; &lt;/span&gt;&lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="ruby" style="color: purple; font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="color: #990000; font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-weight: bold;"&gt;And now get it in your model&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: purple; font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: #38761d;"&gt;Account&lt;/span&gt; &lt;span style="color: #006600; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #6666ff; font-weight: bold;"&gt;ActiveRecord::Base&lt;/span&gt;
  &lt;span style="color: purple; font-weight: bold;"&gt;include&lt;/span&gt; &lt;span style="color: #bf9000;"&gt;Utility&lt;/span&gt;
&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt; &lt;span style="color: purple;"&gt; def&lt;/span&gt;&lt;/span&gt; before_create
    &lt;span style="color: purple;"&gt;unless&lt;/span&gt; allowed?&lt;span style="color: #006600; font-weight: bold;"&gt;(&lt;/span&gt;current_user)&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;      return &lt;span style="color: purple;"&gt;false &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;    &lt;span style="color: purple;"&gt;end&lt;/span&gt;
  &lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: purple; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" style="font-family: monospace;"&gt;&lt;span style="color: #9966cc; font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&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/2564021856242776522-4056455649595873269?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-24T12:46:38.402+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>fetch all controllers and actions of the application</title><link>http://blogofchirag.blogspot.com/2010/05/fetch-all-controllers-and-actions-of.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Thu, 24 Jun 2010 00:30:11 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-2184571957514349484</guid><description>&lt;div style="color: #783f04;"&gt;dirs = Dir.new("#{RAILS_ROOT}/app/controllers").entries&lt;/div&gt;&lt;div style="color: #783f04;"&gt;controller_hash = {}&lt;/div&gt;&lt;div style="color: #783f04;"&gt;dirs.each do |controller|&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;if controller =~ /_controller/&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;path = RAILS_ROOT + '/app/controllers/' + controller&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con = File.read(path).split('def ')&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con.delete_at(0)&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my_hash = Hash.new&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actions = con.collect{|c| c.gsub("\r","~").gsub("\n","~").split("~")[0].strip}&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;controller_name = controller.gsub('.rb','')&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my_hash = {controller_name.to_s =&amp;gt; actions}&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;controller_hash = my_hash.merge(controller_hash)&lt;/div&gt;&lt;div style="color: #783f04;"&gt;&amp;nbsp;&amp;nbsp;end&lt;/div&gt;&lt;div style="color: #783f04;"&gt;end&lt;/div&gt;&lt;div style="color: #783f04;"&gt;puts controller_hash.inspect&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-2184571957514349484?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-24T13:00:11.960+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to generate an SSH key in Linux?</title><link>http://blogofchirag.blogspot.com/2010/02/how-to-generate-ssh-key-in-linux.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 05 Feb 2010 04:33:14 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-7887123228987438094</guid><description>You can generate a key in Linux using the &lt;strong&gt;ssh-keygen&lt;/strong&gt; command.&lt;br /&gt;You can run it in command line. You will be asked for a file in which the key should be saved to and for a passphrase (password) for the key:&lt;br /&gt;This command will generate id_rsa public and private keys.&lt;br /&gt;&lt;br /&gt;If you need to generate id_dsa keys then you need to run &lt;em&gt;&lt;strong&gt;ssh-keygen -t dsa&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-7887123228987438094?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-05T18:03:14.179+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>cannot open shared object file: No such file or directory</title><link>http://blogofchirag.blogspot.com/2010/01/cannot-open-shared-object-file-no-such.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Thu, 24 Jun 2010 00:31:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-5743981079824170603</guid><description>I got below error while i tried to run my application in fedora&lt;br /&gt;
&lt;br /&gt;
libMagickCore.so.2: cannot open shared object file: No such file or directory – /usr/lib/ruby/gems/1.8/gems/rmagick-2.8.0/lib/RMagick2.so&lt;br /&gt;
&lt;br /&gt;
To get solved of this error i executed&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: small;"&gt;&lt;b style="color: purple;"&gt;ldconfig /usr/local/lib&lt;/b&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;input id="gwProxy" type="hidden" /&gt;&lt;input id="jsProxy" onclick="jsCall();" type="hidden" /&gt;&lt;br /&gt;
&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-5743981079824170603?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-24T13:01:24.202+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Use of Dirty Objects</title><link>http://blogofchirag.blogspot.com/2009/11/use-of-dirty-objects.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Tue, 17 Nov 2009 01:50:45 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-609287943675201656</guid><description>Uses of Dirty Objects&lt;br /&gt;&lt;br /&gt;Developer have some confusion that how they can get the previous value of the field after update.&lt;br /&gt;So here the rails has a way called Dirty objects.&lt;br /&gt;&lt;br /&gt;You can found Module Dirty in &lt;span style="font-weight: bold;"&gt;rails/activerecord/lib/active_record/dirty.rb&lt;/span&gt;&lt;br /&gt;This is just for track unsaved attribute changes.&lt;br /&gt;There  are few methods in dirty module as below&lt;br /&gt;  * Changed&lt;br /&gt;  * Changed?&lt;br /&gt;  * Changes&lt;br /&gt;  * Included&lt;br /&gt;And it has some constants&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DIRTY_SUFFIXES = ['_changed?', '_change', '_will_change!', '_was']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;book = Book.find(1)&lt;br /&gt;&lt;br /&gt;book.name = 'agiles'&lt;br /&gt;book.changed?       # =&gt; true&lt;br /&gt;book.name_changed?  # =&gt; true&lt;br /&gt;book.name_was       # =&gt; 'rails startup'&lt;br /&gt;book.name_change    # =&gt; ['rails startup', 'agiles']&lt;br /&gt;book.name = 'agiles with rails'&lt;br /&gt;book.name_change    # =&gt; ['rails startup', 'agiles with rails']&lt;br /&gt;&lt;br /&gt;You can found the details in &lt;a href="http://api.rubyonrails.org/classes/ActiveRecord/Dirty.html"&gt;http://api.rubyonrails.org/classes/ActiveRecord/Dirty.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-609287943675201656?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-17T15:20:45.398+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Remove .svn files / folders</title><link>http://blogofchirag.blogspot.com/2009/06/remove-svn-files-folders.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Mon, 22 Jun 2009 23:26:42 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-2461975093170930322</guid><description>I have found from some where to use the below syntax for remove .svn folders. And it works for me so i thought it might be useful. So i shared this&lt;br /&gt;&lt;br /&gt;find ./ -name ".svn" | xargs rm -Rf&lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;br /&gt;find ./ -name “.svn” -exec rm -rf {} \;&lt;br /&gt;&lt;br /&gt;Source: http://www.rickhurst.co.uk/category/linux/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-2461975093170930322?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-23T11:56:42.874+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Receive Mail with attachment using TMail - Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2009/04/receive-mail-with-attachment-using.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Sun, 19 Apr 2009 23:58:32 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-2299937759020308728</guid><description>Receive Mails using TMail. I like to use TMail for receive mail because &lt;a href="http://tmail.rubyforge.org/rdoc/classes/TMail.html"&gt;TMail&lt;/a&gt; is best to handle the &lt;a href="http://tmail.rubyforge.org/rdoc/classes/TMail/Mail.html#M000130"&gt;header&lt;/a&gt; of the email object. There are only a few methods that deal directly with the body of the email. So i just thought to share it. I have used pop3 for receive mail and use TMail for parse it.&lt;br /&gt;For use TMail you need to do install gem.&lt;br /&gt;&lt;br /&gt;gem install TMail&lt;br /&gt;&lt;br /&gt;def popmail&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        require 'net/pop'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       require 'tmail_mail_extension.rb'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        pop = Net::POP3.new 'mail.example.com'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        pop.start 'test-receive@example.com', 'password'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       if pop.mails.empty?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;             puts 'No mail.'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;             pop.each_mail do |mail|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email = TMail::Mail.parse(mail.pop)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;subject = email.subject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;from_email = email.from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body = email.body_html&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if email.has_attachments?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email.parts.each_with_index do |part, index|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename = part_filename(part)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content_type = part.content_type&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename ||= "#{index}.#{ext(part)}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file = filename&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fname = file.split(".")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newfilename = fname[0]+'_'+(Time.now.to_i).to_s+'.'+fname[1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filepath = "#{RAILS_ROOT}/public/file_attachement/#{newfilename}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File.open(filepath,'wb'){|f| f.write(part.body)} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filesize= File.size(filepath)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           # Do your Logic after getting details&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      mail.delete     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      end&lt;br /&gt;&amp;nbsp;&amp;nbsp; pop.finish&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt; def part_filename(part)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    file_name = (part['content-location'] &amp;&amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      part['content-location'].body) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      part.sub_header("content-type", "name") ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      part.sub_header("content-disposition", "filename")&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  CTYPE_TO_EXT = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    'image/jpeg' =&gt; 'jpg',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    'image/gif'  =&gt; 'gif',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    'image/png'  =&gt; 'png',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    'image/tiff' =&gt; 'tif'&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  def ext( mail )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    CTYPE_TO_EXT[mail.content_type] || 'txt'&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;Note: You can get body part of email by email.body and no need to use of tmail_mail_extension.rb&lt;br /&gt;&lt;br /&gt;But it gives your body part two times. one in normal text of body and second is html of the same body. If you want only html of the body then you need tmail_mail_extension.rb. I found that logic of tmail_mail_extension.rb file from somewhere, i forgot the link for that. &lt;br /&gt;But you can write below which i found from somewhere. Write below code in tmail_mail_extention.rb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tmail_mail_extention.rb&lt;br /&gt;module TMail&lt;br /&gt;&amp;nbsp;&amp;nbsp;  class Mail&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;    # returs an String with just the html part of the body&lt;br /&gt;&amp;nbsp;&amp;nbsp;    # or nil if there is not any html part&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;    def body_html&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      result = nil&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      if multipart?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        parts.each do |part|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          if part.multipart?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            part.parts.each do |part2|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              result = part2.unquoted_body if part2.content_type =~ /html/i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          elsif !attachment?(part)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            result = part.unquoted_body if part.content_type =~ /html/i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        result = unquoted_body if content_type =~ /html/i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      result&lt;br /&gt;&amp;nbsp;&amp;nbsp;    end&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;    def parts_observer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      puts "INI"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      puts "content_type: #{content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      puts "body: #{body}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      puts "parts.size: #{parts.size}"&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      if multipart?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        parts.each_with_index do |part, index|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          puts ""&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          puts "  parts[#{index}]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          puts "    content_type: #{part.content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          puts "    multipart? #{part.multipart?}"&lt;br /&gt;          &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          header = part["content-type"]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          if part.multipart?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "    --multipartt--"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            part.parts.each_with_index do |part2, index2|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              puts "    part[#{index}][#{index2}]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              puts "      content_type: #{part2.content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              puts "      body: #{part2.unquoted_body}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          elsif header.nil?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "    --header nil--"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          elsif !attachment?(part)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "    --no multipart, no header nil, no attachment--"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "      content_type: #{part.content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "      body: #{part.unquoted_body}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "    --no multipart, no header nil, attachment--"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            puts "     content_type: #{part.content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          end&lt;br /&gt;        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        puts "  --no multipart--"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        puts "    content_type: #{content_type}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        puts "    body: #{unquoted_body}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      end&lt;br /&gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      puts "END"&lt;br /&gt;&amp;nbsp;&amp;nbsp;    end&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;  end&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-2299937759020308728?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T12:28:32.746+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Merb gets merged into Rails 3.0 !!</title><link>http://blogofchirag.blogspot.com/2009/01/merb-gets-merged-into-rails-30.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Mon, 26 Jan 2009 06:03:37 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-6422848190155788907</guid><description>&lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; team &lt;a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3"&gt;broke the news&lt;/a&gt;: the alternative Ruby web application framework, &lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt;, will be merged into Ruby on Rails 3.0.&lt;br /&gt;&lt;br /&gt;Merb, which was already closely patterned after Rails, brings performance, modularity, and better integration with alternative JavaScript and ORM frameworks to the table. The default Rails configuration will still be the "full stack" framework, which uses ActiveRecord and Prototype, but there will also be a "Rails Core" with the ability to opt into specific other (e.g. JavaScript or ORM) frameworks as desired.&lt;br /&gt;&lt;br /&gt;The Merb team will be working with the Rails core team on a joint project. The plan is to merge in the things that made Merb different. This will make it possible to use Rails 3 for the same sorts of use-cases that were compelling for Merb users. Effectively, Merb 2 is Rails 3.&lt;br /&gt;&lt;br /&gt;You can read more about here:    &lt;ul&gt;&lt;li&gt;&lt;a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3"&gt;http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://rubyonrails.org/merb"&gt;http://rubyonrails.org/merb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge/"&gt;http://yehudakatz.com/2008/12/23/rails-and-merb-merge/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://brainspl.at/articles/2008/12/23/merb-is-rail"&gt;http://brainspl.at/articles/2008/12/23/merb-is-rail&lt;/a&gt;s&lt;/li&gt;&lt;li&gt;&lt;a href="http://merbist.com/2008/12/23/rails-and-merb-merge/"&gt;http://merbist.com/2008/12/23/rails-and-merb-merge/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onrails.org/articles/2008/12/24/the-future-of-rails-rails-3-0"&gt;http://onrails.org/articles/2008/12/24/the-future-of-rails-rails-3-0&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-6422848190155788907?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T19:33:37.391+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Inline file upload - iframe - ajax - Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2009/01/inline-file-upload-iframe-ajax-ruby-on.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 23 Jan 2009 23:47:50 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-9104301919725069702</guid><description>&lt;span style="font-weight: bold;"&gt;In View&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;% form_for(@images, :url =&gt; formatted_images_path(:format =&gt; 'js'), :html =&gt; { :multipart =&gt; true,:target =&gt; 'upload_frame' }) do |f| %&gt;&lt;br /&gt; Image&lt;br /&gt; &lt;%= f.file_field :uploaded_data, :size =&gt; "50" %&gt;&lt;br /&gt; &lt;%= f.submit :Submit %&gt;&lt;br /&gt;&lt;% end %&gt;&lt;br /&gt;&lt; id="'upload_frame'," name="upload_frame" style="width:1px;height:1px;border:0px" src = "about:blank"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;in controller&lt;/span&gt;&lt;br /&gt;def create&lt;br /&gt;@image = Image.new&lt;br /&gt;if @image.save&lt;br /&gt;  respond_to do |format|&lt;br /&gt;     format.js do&lt;br /&gt;         responds_to_parent do&lt;br /&gt;             render :update do |page|&lt;br /&gt;          page.replace_html 'imgupload', :partial =&gt; 'imageupload',:object =&gt; @images&lt;br /&gt;                 page.visual_effect :highlight, "image_#{@image.id}"&lt;br /&gt;        end&lt;br /&gt;          end&lt;br /&gt;     end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-9104301919725069702?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T13:17:50.322+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Watermarking an image in Rails - Rmagick</title><link>http://blogofchirag.blogspot.com/2009/01/watermarking-image-in-rails-rmagick.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 23 Jan 2009 23:04:32 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-284717669954784420</guid><description>&lt;span style="font-weight:bold;"&gt;class Image &lt; ActiveRecord::Base&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;require 'RMagick'&lt;br /&gt;has_attachment :content_type =&gt; :image, &lt;br /&gt;                 :storage =&gt; :file_system, &lt;br /&gt;                 :max_size =&gt; 4.megabytes,&lt;br /&gt;                 :resize_to =&gt; '640x400&gt;',&lt;br /&gt;                 :thumbnails =&gt; { :thumb =&gt; '100x100&gt;',:medium =&gt; '250x150' }&lt;br /&gt;&lt;br /&gt;validates_as_attachment&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;def watermark_image&lt;/span&gt;&lt;br /&gt; dst = Magick::Image.read("#{RAILS_ROOT}/public/#{self.public_filename}").first&lt;br /&gt; src = Magick::Image.read("#{RAILS_ROOT}/public/images/logo.gif").first&lt;br /&gt; result = dst.composite(src, Magick::CenterGravity, Magick::HardLightCompositeOp)&lt;br /&gt; result.write("#{RAILS_ROOT}/public/#{self.public_filename}")&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-284717669954784420?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T12:34:32.772+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Improving Rails Applications performance</title><link>http://blogofchirag.blogspot.com/2009/01/improving-rails-applications.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Fri, 23 Jan 2009 21:45:27 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-2776635218860520251</guid><description>I have done some research about improving Rails Applications performance. I would feel the the following few points need to be considered when we optimize rails applications for performance:&lt;br /&gt;&lt;br /&gt;1) Avoid the use of dynamic URL generation (link_to, url_for) since rails needs to look up the routes table and that may take time. Just hard code the controller name and the action.&lt;br /&gt;&lt;br /&gt;2) Try to avoid the excess use of helpers since it adds overhead.&lt;br /&gt;&lt;br /&gt;3) You may consider to use &lt;a href="http://railsbench.rubyforge.org/"&gt;Rails Bench&lt;/a&gt; to do some testing for you rails application performance.&lt;br /&gt;&lt;br /&gt;4) You may consider to use memcached to cache your model and library computation results.&lt;br /&gt;&lt;br /&gt;5) try to optimize your database queries. If you use ActiveRecord find, be careful from computation intensive sql queries that returns to you a lot of data that you may not need. The method find may run many select statements for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-2776635218860520251?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T11:15:27.051+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>observe_field Example - Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2008/09/observefield-example-ruby-on-rails.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Wed, 24 Sep 2008 05:40:20 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-5454863090481880964</guid><description>&amp;lt;table&amp;gt;&lt;br /&gt;   &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;label for="searchtext"&amp;gt;&amp;lt;font size="1"&amp;gt;&amp;lt;b&amp;gt;Live Book Search:&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;%= text_field_tag :searchtext %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;img alt="spinner" id="spinner" src="/images/spinner.gif" style="display:none;" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;/tr&amp;gt;&lt;br /&gt;   &amp;lt;/table&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;%= observe_field 'searchtext',  :frequency =&amp;gt; 0.5,&lt;br /&gt;                                    :update =&amp;gt; 'search_hits',&lt;br /&gt;                                    :loading =&amp;gt; "Element.show('spinner')",&lt;br /&gt;                                    :complete =&amp;gt; "Element.hide('spinner')",&lt;br /&gt;                                    :url =&amp;gt; { :controller =&amp;gt; 'books', :action=&amp;gt; 'live_search' },&lt;br /&gt;                                    :with =&amp;gt; "'search=' + escape(value)" %&amp;gt;&lt;br /&gt;                                   &lt;br /&gt;&amp;lt;div id="search_hits"&amp;gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;th&amp;gt;Author&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;th&amp;gt;Price&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;th&amp;gt;Desc&amp;lt;/th&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% for book in @books %&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%=h book.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%=h book.author %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%=h book.price %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%=h book.desc %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Show', book %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Edit', edit_book_path(book) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Destroy', book, :confirm =&amp;gt; 'Are you sure?', :method =&amp;gt; :delete %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;% end %&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;For more detail go to&lt;br /&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/observe_field+-+Passing+Parameters"&gt;Wiki.rubyonrails.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-5454863090481880964?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-24T18:10:20.950+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Variables In Request Env - Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2008/09/variables-in-request-env-ruby-on-rails.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Wed, 24 Sep 2008 05:18:04 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-7122248727701701978</guid><description>&lt;code&gt;request.env&lt;/code&gt; is a Ruby Array that contains information about a visiting user’s and server environments.&lt;br /&gt;&lt;code&gt;request.env&lt;/code&gt; is accessible on all pages hosted in a ruby on rails site.  The Array contains the following key/value pairs:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SERVER_NAME&lt;/li&gt;&lt;li&gt;PATH_INFO&lt;/li&gt;&lt;li&gt;REMOTE_HOST&lt;/li&gt;&lt;li&gt;HTTP_ACCEPT_ENCODING&lt;/li&gt;&lt;li&gt;HTTP_USER_AGENT&lt;/li&gt;&lt;li&gt;SERVER_PROTOCOL&lt;/li&gt;&lt;li&gt;HTTP_CACHE_CONTROL&lt;/li&gt;&lt;li&gt;HTTP_ACCEPT_LANGUAGE&lt;/li&gt;&lt;li&gt;HTTP_HOST&lt;/li&gt;&lt;li&gt;REMOTE_ADDR&lt;/li&gt;&lt;li&gt;SERVER_SOFTWARE&lt;/li&gt;&lt;li&gt;HTTP_KEEP_ALIVE&lt;/li&gt;&lt;li&gt;HTTP_REFERER&lt;/li&gt;&lt;li&gt;HTTP_COOKIE&lt;/li&gt;&lt;li&gt;HTTP_ACCEPT_CHARSET&lt;/li&gt;&lt;li&gt;REQUEST_URI&lt;/li&gt;&lt;li&gt;SERVER_PORT&lt;/li&gt;&lt;li&gt;GATEWAY_INTERFACE&lt;/li&gt;&lt;li&gt;QUERY_STRING&lt;/li&gt;&lt;li&gt;REMOTE_USER&lt;/li&gt;&lt;li&gt;HTTP_ACCEPT&lt;/li&gt;&lt;li&gt;REQUEST_METHOD&lt;/li&gt;&lt;li&gt;HTTP_CONNECTION&lt;/li&gt;&lt;/ul&gt;For testing purposes it might be useful to print out a table with the &lt;code&gt;request.env&lt;/code&gt; information in it.&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;key&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Value&amp;lt;/th&amp;gt;&lt;br /&gt;       &lt;% for item in request.env %&gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;&lt;%= item[0] %&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;&lt;%= item[1] %&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &lt;% end %&gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-7122248727701701978?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-24T17:48:04.206+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Installing Rmagick on Windows Using Ruby 1.8.6</title><link>http://blogofchirag.blogspot.com/2008/09/installing-rmagick-on-windows-using.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Wed, 24 Sep 2008 05:03:27 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-2808481032194680689</guid><description>Rmagick tends to be tricky to install, but on windows its relatively simple, except for the fact that if you freshly installed ruby 1.8.6, ruby gems needs to be updated.  If you install ruby 1.8.6 and then go to ruby.forge and &lt;a href="http://rubyforge.org/frs/download.php/26231/RMagick-1.15.9_IM-6.3.5-8-Q8_prod.zip"&gt;download rmagick for windows&lt;/a&gt;. Extract the zip folder, run the .exe, then open a command line, cd (change directory) to the install folder and do “gem install rmagick —local”. The first time you do this, you might run into the  “Error installing gem RMagick (version) .gem[.gem]: &lt;strong&gt;buffer error”&lt;/strong&gt;.  To fix that run  “gem update —system” with double hyphens and then run “gem install rmagick —local” and everything should now install fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-2808481032194680689?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-24T17:33:27.034+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><enclosure url="http://rubyforge.org/frs/download.php/26231/RMagick-1.15.9_IM-6.3.5-8-Q8_prod.zip" length="19383246" type="application/zip" /><media:content url="http://rubyforge.org/frs/download.php/26231/RMagick-1.15.9_IM-6.3.5-8-Q8_prod.zip" fileSize="19383246" type="application/zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Rmagick tends to be tricky to install, but on windows its relatively simple, except for the fact that if you freshly installed ruby 1.8.6, ruby gems needs to be updated. If you install ruby 1.8.6 and then go to ruby.forge and download rmagick for windows.</itunes:subtitle><itunes:author>noreply@blogger.com (Chirag Shah)</itunes:author><itunes:summary>Rmagick tends to be tricky to install, but on windows its relatively simple, except for the fact that if you freshly installed ruby 1.8.6, ruby gems needs to be updated. If you install ruby 1.8.6 and then go to ruby.forge and download rmagick for windows. Extract the zip folder, run the .exe, then open a command line, cd (change directory) to the install folder and do “gem install rmagick —local”. The first time you do this, you might run into the “Error installing gem RMagick (version) .gem[.gem]: buffer error”. To fix that run “gem update —system” with double hyphens and then run “gem install rmagick —local” and everything should now install fine.</itunes:summary></item><item><title>Dynamically add and remove html elements using javascript</title><link>http://blogofchirag.blogspot.com/2008/09/dynamically-add-and-remove-html.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Wed, 24 Sep 2008 04:56:19 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-3175235756558763982</guid><description>&amp;lt;input type="hidden" value="0" id="theValue" /&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;a href="javascript:;" onclick="addElement();"&amp;gt;Add Some Elements&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;div id="myDiv"&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;function addElement() {&lt;br /&gt;  var ni = document.getElementById('myDiv');&lt;br /&gt;  var numi = document.getElementById('theValue');&lt;br /&gt;  var num = (document.getElementById('theValue').value -1)+ 2;&lt;br /&gt;  numi.value = num;&lt;br /&gt;  var newdiv = document.createElement('div');&lt;br /&gt;  var divIdName = 'my'+num+'Div';&lt;br /&gt;  newdiv.setAttribute('id',divIdName);&lt;br /&gt;  newdiv.innerHTML = 'Element Number '+num+' has been added! &amp;lt;a href=\'#\' onclick=\'removeElement('+divIdName+')\'&amp;gt;Remove the div "'+divIdName+'"&amp;lt;/a&amp;gt;';&lt;br /&gt;  ni.appendChild(newdiv);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function removeElement(divNum) {&lt;br /&gt;  var d = document.getElementById('myDiv');&lt;br /&gt;  var olddiv = document.getElementById(divNum);&lt;br /&gt;  d.removeChild(olddiv);&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-3175235756558763982?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-24T17:26:19.207+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>NAMED_SCOPE in Ruby on Rails</title><link>http://blogofchirag.blogspot.com/2008/08/namedscope-in-ruby-on-rails.html</link><author>noreply@blogger.com (Chirag Shah)</author><pubDate>Mon, 25 Aug 2008 21:29:04 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2564021856242776522.post-4296084989034649576</guid><description>The has_finder gem has been added to Rails with a different name: named_scope&lt;br /&gt;&lt;br /&gt;For better understand let go through the following example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;class Article &lt; ActiveRecord :: Base&lt;br /&gt;named_scope :published, :conditions =&gt; {:published =&gt; true}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  named_scope :containing_the_letter_c, :conditions =&gt; "author LIKE '%c%’"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Article.published.paginate(:page =&gt; 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Article.published.containing_the_letter_c.count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Article.containing_the_letter_c.find(:first)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Instead of creating a new method named published to return all published posts, I'm using a named_scope to do it for me.&lt;br /&gt;But it can go even further than this. Let's look at another example of how it can be used:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;named_scope :written_before, lambda { |time|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     { :conditions =&gt; ['written_on &lt; ?', time] }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   }&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2564021856242776522-4296084989034649576?l=blogofchirag.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-26T09:59:04.994+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><copyright>copyright 2011 - chirag shah</copyright><media:rating>nonadult</media:rating></channel></rss>

