Composer support for Capistrano 3.x
Add this line to your application's Gemfile:
gem 'capistrano' , '~> 3.1.0' gem 'capistrano-composer' And then execute:
Or install it yourself as:
$ gem install capistrano-composer
Require the module in yourCapfile
:
require 'capistrano/composer' capistrano/composer
comes with 5 tasks:
composer:install composer:install_executable composer:dump_autoload composer:self_update composer:run Thecomposer:install
task will run before deploy:updated as part ofCapistrano's default deploy, or can be run in isolation with:
$ cap production composer:install By default it is assumed that you have the composer executable installed and in your$PATH
on all target hosts.
Configurable options, shown here with defaults:
set :composer_install_flags , '--no-dev --no-interaction --quiet --optimize-autoloader' set :composer_roles , :all set :composer_working_dir , -> { fetch ( :release_path ) } set :composer_dump_autoload_flags , '--optimize' set :composer_download_url , "https://getcomposer.org/installer" set :composer_version , '1.0.0-alpha8' #(default: not set) Installing composer as part of a deployment Add the following todeploy.rb
to manage the installation of composer duringdeployment (composer.phar is install in the shared path).
SSHKit . config . command_map [ :composer ] = "php#{ shared_path . join ( "composer.phar" ) } " namespace :deploy do after :starting , 'composer:install_executable' end Accessing composer commands directly This library also provides acomposer:run
task which allows access to anycomposer command.
From the command line you can run
$ cap production composer:run[' status' ,' --profile' ] Or from within a rake task using capistrano'sinvoke
task :my_custom_composer_task do invoke "composer:run" , :update , "--dev --prefer-dist" end Removing the default install task If you do not want to run the default install task ondeploy:updated
, (forexample, if you do not have root level dependencies stored in acomposer.json
you can remove it by adding the following line to yourconfig/deploy.rb
:
Rake ::Task [ 'deploy:updated' ] . prerequisites . delete ( 'composer:install' ) You can then callcomposer.install
task within your own defined tasks, at anappropriate juncture.
Fork it Create your feature branch (git checkout -b my-new-feature
) Commit your changes (git commit -am 'Add some feature'
) Push to the branch (git push origin my-new-feature
) Create new Pull Request