mina-multistage 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []