mina-multistage 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 343b8b5a53ba6cd81bfe47a9bb4be30bfde7fc92
4
+ data.tar.gz: 70a80e05557ad23bda60b529c150f744f4b2e7d9
5
+ SHA512:
6
+ metadata.gz: 39c9ddbc1c5f5d4524ddad7199164c438477a9479af47ec630ac6759c7a36aca5d784f9050e1c09b80f961fbdd9b51da4c556c1887cc4958c732a3bb6366c5a5
7
+ data.tar.gz: bae67d0c2dae04bd5621b5df59ff6dc65d029a151cf047ace4212700df554e291681e46bd3bf3d62baf325eb46df7dcee8c40cd20371375994594911f6c05679
data/README.md CHANGED
@@ -1,13 +1,17 @@
1
+ [![Gem Version](https://badge.fury.io/rb/mina-multistage.png)](http://badge.fury.io/rb/mina-multistage) [![Stories in Ready](https://badge.waffle.io/Endoze/mina-multistage.png?label=ready)](https://waffle.io/Endoze/mina-multistage)
2
+
3
+
1
4
  # Mina::Multistage
2
5
 
3
6
  Plugin for Mina that adds support for multiple stages.
4
7
 
5
- ## Installation
8
+
9
+ ## Installation & Usage
6
10
 
7
11
  Add this line to your application's Gemfile:
8
12
 
9
13
  ```rb
10
- gem 'mina-multistage', required: false
14
+ gem 'mina-multistage', require: false
11
15
  ```
12
16
 
13
17
  And then execute:
@@ -22,67 +26,66 @@ Or install it yourself as:
22
26
  $ gem install mina-multistage
23
27
  ```
24
28
 
25
- And finally add this line to your config/deploy.rb:
29
+ Require `mina/multistage` in `config/deploy.rb`:
26
30
 
27
31
  ```rb
28
32
  require 'mina/multistage'
33
+ require 'mina/bundler'
34
+ require 'mina/rails'
35
+ require 'mina/git'
36
+
37
+ ...
38
+
39
+ task setup: :environment do
40
+ ...
41
+ end
42
+
43
+ desc 'Deploys the current version to the server.'
44
+ task deploy: :environment do
45
+ ...
46
+ end
29
47
  ```
30
48
 
31
- ## Usage
49
+ Then run:
32
50
 
33
- A sample config/deploy.rb could look something like this:
51
+ ```shell
52
+ $ mina multistage:init
53
+ ```
34
54
 
55
+ It will create `config/deploy/staging.rb` and `config/deploy/production.rb` stage files.
56
+ Use them to define stage-specific configuration.
35
57
 
36
58
  ```rb
37
- require 'mina/bundler'
38
- require 'mina/rails'
39
- require 'mina/git'
40
- require 'mina/rvm'
41
- require 'mina/multistage'
59
+ # config/deploy/staging.rb
60
+ set :domain, 'example.com'
61
+ set :deploy_to, '/var/www/my_app'
62
+ set :repository, 'https://github.com/user/repo'
63
+ set :branch, 'master'
64
+ set :user, 'www'
65
+ set :rails_env, 'staging'
66
+ ```
42
67
 
43
- set :shared_paths, ['config/database.yml', 'log', 'tmp/sockets', 'pid/pids']
68
+ Now deploy `staging` with:
44
69
 
45
- task :setup => :environment do
46
- queue! %[mkdir -p "#{deploy_to}/shared/log"]
47
- queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"]
70
+ ```shell
71
+ $ mina deploy
72
+ ```
48
73
 
49
- queue! %[mkdir -p "#{deploy_to}/shared/config"]
50
- queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/config"]
74
+ Or specify a stage explicitly:
51
75
 
52
- queue! %[mkdir -p "#{deploy_to}/shared/tmp/sockets"]
53
- queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/tmp/sockets"]
76
+ ```shell
77
+ $ mina staging deploy
78
+ $ mina production deploy
79
+ ```
54
80
 
55
- queue! %[mkdir -p "#{deploy_to}/shared/pid/pids"]
56
- queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/pid/pids"]
57
81
 
58
- queue! %[touch "#{deploy_to}/shared/config/database.yml"]
59
- queue %[#-----> Be sure to edit 'shared/config/database.yml'.]
60
- end
82
+ ## Configuration
61
83
 
62
- desc "Deploys the current version to the server."
63
- task :deploy => :environment do
64
- deploy do
65
- invoke :'git:clone'
66
- invoke :'deploy:link_shared_paths'
67
- invoke :'bundle:install'
68
- invoke :'rails:db_migrate'
69
- invoke :'rails:assets_precompile'
70
-
71
- to :launch do
72
- queue "bundle exec thin restart -C #{deploy_to}/shared/config/thin.yml"
73
- end
74
- end
75
- end
76
- ```
84
+ * `stages` - array of stages names, default is names of all `*.rb` files from `stages_dir`
85
+ * `stages_dir` - stages files directory, default is `config/deploy`
86
+ * `default_stage` - default stage, default is `staging`
77
87
 
78
- And a sample development.rb stagefile:
79
- ```rb
80
- set :domain, 'localhost'
81
- set :deploy_to, '/var/www/my_app'
82
- set :repository, 'https://github.com/gitlabhq/gitlabhq'
83
- set :branch, '6-1-stable'
84
- set :user, 'deploy'
85
- ```
88
+ If you want to override default values of these options, they should be set before requiring `mina/multistage` file.
86
89
 
87
90
  ## Contributing
88
91
 
@@ -1,35 +1,30 @@
1
1
  require 'fileutils'
2
2
 
3
- location = fetch(:stage_dir, "config/deploy")
3
+ default_stage = fetch(:default_stage, 'staging')
4
+ location = fetch(:stages_dir, 'config/deploy')
4
5
 
5
6
  unless exists?(:stages)
6
- set :stages, Dir["#{location}/*.rb"].map { |f| File.basename(f, ".rb") }
7
+ set :stages, Dir["#{location}/*.rb"].map { |f| File.basename(f, '.rb') }
7
8
  end
8
9
 
9
10
  stages.each do |name|
10
11
  desc "Set the target stage to `#{name}'."
11
12
  task(name) do
12
- set :stage, name.to_sym
13
-
13
+ set :stage, name
14
14
  file = "#{location}/#{stage}.rb"
15
15
  load file
16
16
  end
17
17
  end
18
18
 
19
- if stages && stages.count > 0
20
- if stages.include? 'development'
21
- invoke :development
22
- else
23
- invoke stages.first
24
- end
19
+ unless stages.include?(ARGV.first)
20
+ invoke default_stage
25
21
  end
26
22
 
27
23
  namespace :multistage do
28
- desc "Create development, staging, and production stage files"
29
- task :create_stagefiles do
30
- Dir.mkdir location if !File.exists? location
31
-
32
- %w{ development staging production }.each do |stage|
24
+ desc 'Create staging and production stage files'
25
+ task :init do
26
+ Dir.mkdir_p location if !File.exists? location
27
+ %w{staging production}.each do |stage|
33
28
  stagefile = File.join(location, "#{stage}.rb")
34
29
  if !File.exists?(stagefile)
35
30
  File.open(stagefile, 'w') do |f|
@@ -38,6 +33,7 @@ namespace :multistage do
38
33
  f.puts "set :repository, ''"
39
34
  f.puts "set :branch, ''"
40
35
  f.puts "set :user, ''"
36
+ f.puts "set :rails_env, '#{stage}'"
41
37
  end
42
38
  end
43
39
  end
@@ -1,5 +1,5 @@
1
1
  module Mina
2
2
  module Multistage
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,64 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mina-multistage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Chris
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-29 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
14
+ version_requirements: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - '>='
17
+ - !ruby/object:Gem::Version
18
+ version: 0.2.1
19
+ prerelease: false
15
20
  name: mina
16
21
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
22
  requirements:
19
- - - ! '>='
23
+ - - '>='
20
24
  - !ruby/object:Gem::Version
21
25
  version: 0.2.1
22
26
  type: :runtime
23
- prerelease: false
27
+ - !ruby/object:Gem::Dependency
24
28
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
29
  requirements:
27
- - - ! '>='
30
+ - - '>='
28
31
  - !ruby/object:Gem::Version
29
- version: 0.2.1
30
- - !ruby/object:Gem::Dependency
32
+ version: 1.3.5
33
+ prerelease: false
31
34
  name: bundler
32
35
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
36
  requirements:
35
- - - ! '>='
37
+ - - '>='
36
38
  - !ruby/object:Gem::Version
37
39
  version: 1.3.5
38
40
  type: :development
39
- prerelease: false
41
+ - !ruby/object:Gem::Dependency
40
42
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
43
  requirements:
43
- - - ! '>='
44
+ - - '>='
44
45
  - !ruby/object:Gem::Version
45
- version: 1.3.5
46
- - !ruby/object:Gem::Dependency
46
+ version: '0'
47
+ prerelease: false
47
48
  name: rake
48
49
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
55
  description: Adds multistage capabilities to Mina
63
56
  email:
64
57
  - Chris@WideEyeLabs.com
@@ -77,32 +70,25 @@ files:
77
70
  homepage: ''
78
71
  licenses:
79
72
  - MIT
73
+ metadata: {}
80
74
  post_install_message:
81
75
  rdoc_options: []
82
76
  require_paths:
83
77
  - lib
84
78
  required_ruby_version: !ruby/object:Gem::Requirement
85
- none: false
86
79
  requirements:
87
- - - ! '>='
80
+ - - '>='
88
81
  - !ruby/object:Gem::Version
89
82
  version: '0'
90
- segments:
91
- - 0
92
- hash: -3037949548670809400
93
83
  required_rubygems_version: !ruby/object:Gem::Requirement
94
- none: false
95
84
  requirements:
96
- - - ! '>='
85
+ - - '>='
97
86
  - !ruby/object:Gem::Version
98
87
  version: '0'
99
- segments:
100
- - 0
101
- hash: -3037949548670809400
102
88
  requirements: []
103
89
  rubyforge_project:
104
- rubygems_version: 1.8.25
90
+ rubygems_version: 2.2.1
105
91
  signing_key:
106
- specification_version: 3
92
+ specification_version: 4
107
93
  summary: Adds multistage capabilities to Mina
108
94
  test_files: []