Awesome
Mina::Multistage
Plugin for Mina that adds support for multiple stages.
Installation & Usage
Add this line to your application's Gemfile:
gem 'mina-multistage', require: false
And then execute:
$ bundle
Or install it yourself as:
$ gem install mina-multistage
Require mina/multistage
in your config/deploy.rb
:
require 'mina/multistage'
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
...
task setup: :environment do
...
end
desc 'Deploys the current version to the server.'
task deploy: :environment do
...
end
Then run:
$ bundle exec mina multistage:init
This will create config/deploy/staging.rb
and config/deploy/production.rb
stage files.
Use them to define stage specific configuration.
# config/deploy/staging.rb
set :domain, 'example.com'
set :deploy_to, '/var/www/my_app'
set :repository, 'https://github.com/user/repo'
set :branch, 'master'
set :user, 'www'
set :rails_env, 'staging'
If you receive the following error, make sure that you've required 'mina/multistage' in
your config/deploy.rb
$ bundle exec mina multistage:init
mina aborted!
Don't know how to build task 'multistage:init'
Now you can deploy the default stage with:
$ mina deploy # this deploys staging by default
Or specify a stage explicitly:
$ mina staging deploy
$ mina production deploy
Configuration
stages
- array of stages names, the default is the name of all*.rb
files fromstages_dir
stages_dir
- stages files directory, the default isconfig/deploy
default_stage
- default stage, the default isstaging
If you want to override the default values for any of these options, they should be set before requiring mina/multistage
.
# config/deploy.rb
set :stages, %w(development test staging production)
set :stages_dir, 'config/deploy_stages'
set :default_stage, 'development'
require 'mina/multistage'
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
...
task setup: :environment do
...
end
desc 'Deploys the current version to the server.'
task deploy: :environment do
...
end
Contributing
- 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