1. if you haven’t got Rails installed locally then do it now.
As of this blog post Rails 4, which you should be using, is pre-release so:
gem install rails –pre
but drop the –pre when Rails 4 is no longer pre-release.
–pre means install the prerelease rails gem.
http://stackoverflow.com/questions/4041902/what-does-pre-do-in-gem-install-rails-pre
2. create a simple Rails app
rails new myapp
3. upload your Rails app to github
– create a git rep locally if it doesn’t exist
git init; git add .; git commit -am “first commit”
– create a github repo at
https://github.com/new
This should tell you what you need to do next however in short:
git remote add origin git@github.com:you/your_repo.git
git push -u origin master
4. capify with
capify .
(and remember to push to git with:
git add .; git commit -am “with capistrano”
git push -u origin master)
Note: as you’re running Rails you should put your Capistrano config information in config/deploy.rb. So, your Capfile should look like this:
load ‘config/deploy’
and your config/deploy.rb file should have all the Capfile details like
set :git_username, “your_git_username”
set :repository, “git@github.com:you/your_repo.git”
etc…
5. Use SSH agent forwarding initially
https://help.github.com/articles/managing-deploy-keys
Specifically, make sure you’ve got it set right locally:
https://help.github.com/articles/using-ssh-agent-forwarding
6. Read also this post if you’re having problems with your ssh key:
e.g.
default_run_options[:pty] = true
helps debug. And add your host to your known_hosts file by doing ssh git@github.com and entering yes (it doesn’t matter that the login won’t succeed).
http://stackoverflow.com/questions/7863070/capistrano-deploy-host-key-verification-failed
7. Then use:
cap deploy:setup
and
cap deploy:cold
For more details of what deploy:cold does see:
https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy.rb#L200-L203
Notes
Some issues:
I found Capistrano wasn’t creating directories in the releases directory with this option:
set :deploy_via, :remote_cache
http://stackoverflow.com/questions/8246007/capistrano-will-not-create-releases
Also:
To automatically run ‘bundle install’ on the server, add this to your deploy.rb file:
require ‘bundler/capistrano’
http://gembundler.com/v1.3/deploying.html
8. If using a Dreamhost VPS you may need to unset the DreamHost Managed Apache setting in VPS > Configure Server.
http://wiki.dreamhost.com/VPS#httpd.conf
More on deploying Rails including details on Passenger (aka mod_rails), JRuby, Capistrano and Hosting:
http://rubyonrails.org/deploy