Rails redeploy issue resolved
I just redeployed a rails site for a client of mine, Real Idaho, using Capistrano and it didn’t work properly. I was able to resolve the issue, and here are the details in case this ever happens to you…
Running
$ rake deploy
gave the following output (some content suppressed):
...
transaction: commit
* executing task restart
* executing "/home/*****/apps/*****/current/script/process/reaper -d 'dispatch.fcgi'"
servers: ["216.118.83.207"]
[216.118.83.207] executing command
** [out :: 216.118.83.207] bash: /home/*****/apps/*****/current/script/process/reaper: Permission denied
command finished
rake aborted!
command "/home/******/apps/******/current/script/process/reaper -d 'dispatch.fcgi'" failed on 216.***.***.***
The problem is that the files in script/ and the dispatch.* files in public need to be executable, but when Capistrano pulls down the latest subversion code, it defaults those files to the permissions:
-rw-r--r--
which is just read/write.
In order to have subversion pull down the files with the correct, executable, permissions, you must run the following command on each executable file and commit them to subversion:
$ svn propset svn:executable
I found the following article, Subversion Primer for Rails projects, which has a nice script to automate the task of setting the necessary files as executable. Here’s the script:
$ svn propset svn:executable "*" `find script -type f | grep -v '.svn'` public/dispatch.*
Then, run
$ svn commit
to commit those changes to Subversion.
I think this should resolve the issue, but I haven’t redeployed yet, so I haven’t verified that this will really fix my deployment issue.