• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Ruby
  • License
    MIT License
  • Created about 11 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Plugin for Mina that adds support for multiple stages.

Gem Version Stories in Ready

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 from stages_dir
  • stages_dir - stages files directory, the default is config/deploy
  • default_stage - default stage, the default is staging

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request