Stuck at the station
With a bit of guidance from my Ruby on Rails book, I was ready to deploy my first Rails app wiisites.com and all within an hour; along way from complete, but I was happy with it for the first iteration. Allot of thought has obviously gone into the Rails framework, by making a less flexible than .Net and enforcing things like object relational mapping and the use of the Model View Controller pattern Rails is easy to learn and simple to use; that’s why I was horrified to find out how difficult Rails is to deploy.
In my eagerness to get my application deployed, I initially tried the XCopy approach dumping the application directories in my sub domain; of course this would have been too good to be true: a bit more investigation was called for.
Again wanting a quick solution I turned to google, it seemed the recommended best practice was to use a program called Capistrano to automate the deployment. I began to follow the manual I found http://manuals.rubyonrails.com/read/book/17. It seems that it is recommended to use the source control program Subversion along with Capistrano, so I began installing Subversion (use the one click installer). However Subversion requires apache, so I had to install Apache that too. After an evening spent messing around with unfamiliar configs I called it a day.
The following day with a fresh head it occurred to me that there must be a simpler solution, after all my app was little more that a hello world so surely an automated build was a bit overkill. I decided to connect to the server using my shell account and recreate the app on the server; when the app was created I ftp’d the app from my development machine across to the server. After a couple of daft mistakes with configurations I got my app working, its just my URL was now something like www.wiisites.com/wiisites/wiisites/public/, I’m sure you will agree not the most elegant url you have ever seen.
The next step was to sort out the messy url; this is done with some unix wizardry called a symlink which created a special kind of file that links to somewhere else.
I needed a file called wiisites that linked to the location of my rails app. I had created an addon domain using the bluehost control panel for wiisites.com, so I had a subdomain under my web route for wiisites; this caused me a problem because I needed to replace that subdomain with a symlink in order to redirect to the rails directory.
I stumbled across an article Getting Ruby Running on Bluehost which cleared things up for me. I renamed the directory “wiisites” that was created when I setup the addon domain and created a symlink with the name of “wiisites” in its place.
ln -s ~/www/wiisites_link/wiisites/public/ ~/www/wiisites/
The above symlink creates a symlink file called wiisites in the directory www pointing to my rails app directory /www/wiisites_link/wiisites/public/.
At last a working, semi complete web application and it only took 1hour 2days.