Capistrano
от ILuxWiki
Rails App with Capistrano
Изпълнението на следващите команди предполага, че имате инсталиран gem capistrano. Към момента на писане на този документ аз ползвам Rails 3.0.7 --sysop 21:55, 15 юни 2011 (UTC)
Инициализиране на текущия проект, командата capify създава два файла:
- RAILS_ROOT/Capfile
- RAILS_ROOT/config/deploy.rb
cd project/myrailsapp capify .
Редактираме config/deploy.rb, спрямо нашите настройки.
vim config/deploy.rb
set :application, "pilotorder" set :repository, "git://github.com/t0d0r/pilotorder.git" set :deploy_to, "/tmp/pilotorder.bg" set :scm, :git # Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` role :web, "rails.all4y.net" # Your HTTP server, Apache/etc role :app, "rails.all4y.net" # This may be the same as your `Web` server role :db, "rails.all4y.net", :primary => true # This is where Rails migrations will run
С командата по-долу създаваме празни папки, като се стартира ssh сесия към сървърите зададени в role директивите, като за потребител към отдалечените места ползва текущия. Ако не се използва ключ, пита за парола.
cap deploy:setup
Резултата в /tmp/pilotorder.bg е следния (папките са празни)
total 8 drwxrwxr-x 4 root wheel 512 Jun 15 21:26 . drwxrwxrwt 9 root wheel 1024 Jun 15 21:26 .. drwxrwxr-x 2 root wheel 512 Jun 15 21:26 releases drwxrwxr-x 5 root wheel 512 Jun 15 21:26 shared
cap deploy:update
deploy:update, създава и копира текущ release на приложението:
rails /tmp/pilotorder.bg# ls -al total 8 drwxrwxr-x 4 root wheel 512 Jun 15 22:01 . drwxrwxrwt 9 root wheel 1024 Jun 15 22:00 .. lrwxr-xr-x 1 todor wheel 42 Jun 15 22:01 current -> /tmp/pilotorder.bg/releases/20110615220105 drwxrwxr-x 3 root wheel 512 Jun 15 22:01 releases drwxrwxr-x 5 root wheel 512 Jun 15 22:00 shared rails /tmp/pilotorder.bg# cd releases/20110615220105/ Gemfile REVISION config.ru doc/ public/ tmp/ Gemfile.lock Rakefile config/ lib/ script/ vendor/ README.textile app/ db/ log@ test/
cd /tmp/pilotorder.bg/current rake RAILS_ENV=production db:schema:load rake RAILS_ENV=production db:seed
Възможно е горната команда да не мине от първия път, обикновенно липсва някой gem и се изисква пускането на bundle install.
script/console production
app.get("/")

