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("/")

връзки