abstract_feature_branch 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +17 -11
- data/VERSION +1 -1
- data/abstract_feature_branch.gemspec +16 -11
- data/lib/abstract_feature_branch.rb +1 -0
- data/lib/generators/install_generator.rb +13 -0
- data/lib/generators/templates/config/features.yml +19 -0
- metadata +36 -42
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 25d61cbd59ed11e25c09a2fb9c3e7cf4ecb0ddb5
|
4
|
+
data.tar.gz: 1f46326261f0103d6326251a292b0c48de750f9d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4c790ea2c50422cac9f865fe9f40363518d92dee913b8c9e3e055836da01bc91b0893e7ec22a63bdcc89db2672bf732c28f1cb6ce88c1aaf8153251456fa04b9
|
7
|
+
data.tar.gz: 67cccddcb4c176bd976f073e3a79db9f8de46126301e220e536a610d606b9cb8afaf9251f42c4de3c38c52fc11013549f4c9148f0b38e73fafe4a686430b1137
|
data/README.md
CHANGED
@@ -17,37 +17,40 @@ release should big problems arise for a high risk feature.
|
|
17
17
|
|
18
18
|
Requirements
|
19
19
|
------------
|
20
|
-
- Ruby 1.9
|
21
|
-
- Rails 3.
|
20
|
+
- Ruby ~> 2.0.0, ~> 1.9 or ~> 1.8.7
|
21
|
+
- Rails ~> 4.0.0, ~> 3.0 or ~> 2.0
|
22
22
|
|
23
23
|
Setup
|
24
24
|
-----
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
-
|
26
|
+
1. Configure Rubygem
|
27
|
+
- Rails (~> 4.0.0 or ~> 3.0): Add the following to Gemfile <pre>gem 'abstract_feature_branch', '0.3.4'</pre>
|
28
|
+
- Rails (~> 2.0): Add the following to config/environment.rb <pre>config.gem 'absract_feature_branch'</pre>
|
29
|
+
2. Generate config/features.yml in your Rails app directory by running <pre>rails g abstract_feature_branch:install</pre>
|
30
|
+
|
31
|
+
Here are the contents of the generated sample config/features.yml, which you can modify with your own features.
|
29
32
|
|
30
33
|
> defaults: &defaults
|
31
34
|
> feature1: true
|
32
35
|
> feature2: true
|
33
36
|
> feature3: false
|
34
|
-
>
|
37
|
+
>
|
35
38
|
> development:
|
36
39
|
> <<: *defaults
|
37
|
-
>
|
40
|
+
>
|
38
41
|
> test:
|
39
42
|
> <<: *defaults
|
40
|
-
>
|
43
|
+
>
|
41
44
|
> staging:
|
42
45
|
> <<: *defaults
|
43
46
|
> feature2: false
|
44
|
-
>
|
47
|
+
>
|
45
48
|
> production:
|
46
49
|
> <<: *defaults
|
47
50
|
> feature1: false
|
48
51
|
> feature2: false
|
49
52
|
|
50
|
-
Notice how the feature "feature1" was configured as true (enabled) by default, but
|
53
|
+
Notice in the sample file how the feature "feature1" was configured as true (enabled) by default, but
|
51
54
|
overridden as false (disabled) in production. This is a recommended practice.
|
52
55
|
|
53
56
|
Instructions
|
@@ -111,6 +114,9 @@ for better maintenance as the need is not longer there for feature branching at
|
|
111
114
|
Release Notes
|
112
115
|
-------------
|
113
116
|
|
117
|
+
Version 0.3.4:
|
118
|
+
- Added abstract_feature_branch:install generator to easily get started with a sample config/features.yml
|
119
|
+
|
114
120
|
Version 0.3.3:
|
115
121
|
- Removed version from README title
|
116
122
|
|
@@ -150,6 +156,6 @@ Contributing to abstract_feature_branch
|
|
150
156
|
Copyright
|
151
157
|
---------------------------------------
|
152
158
|
|
153
|
-
Copyright (c)
|
159
|
+
Copyright (c) 2013 Annas "Andy" Maleh. See LICENSE.txt for
|
154
160
|
further details.
|
155
161
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.4
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "abstract_feature_branch"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Annas \"Andy\" Maleh"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-11-19"
|
13
13
|
s.description = "It gives ability to wrap blocks of code with an abstract feature branch name, and then\nspecify which features to be switched on or off in a configuration file.\n\nThe goal is to build out future features with full integration into the codebase, thus\nensuring no delay in integration in the future, while releasing currently done features\nat the same time. Developers then disable future features until they are ready to be\nswitched on in production, but do enable them in staging and locally.\n\nThis gives developers the added benefit of being able to switch a feature off after\nrelease should big problems arise for a high risk feature.\n"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
@@ -21,30 +21,35 @@ Gem::Specification.new do |s|
|
|
21
21
|
"VERSION",
|
22
22
|
"abstract_feature_branch.gemspec",
|
23
23
|
"lib/abstract_feature_branch.rb",
|
24
|
-
"lib/ext/feature_branch.rb"
|
24
|
+
"lib/ext/feature_branch.rb",
|
25
|
+
"lib/generators/install_generator.rb",
|
26
|
+
"lib/generators/templates/config/features.yml"
|
25
27
|
]
|
26
28
|
s.homepage = "http://github.com/AndyObtiva/abstract_feature_branch"
|
27
29
|
s.licenses = ["MIT"]
|
28
30
|
s.require_paths = ["lib"]
|
29
|
-
s.rubygems_version = "
|
31
|
+
s.rubygems_version = "2.0.6"
|
30
32
|
s.summary = "abstract_feature_branch is a Rails gem that enables developers to easily branch by abstraction as per this pattern: http://paulhammant.com/blog/branch_by_abstraction.html"
|
31
33
|
|
32
34
|
if s.respond_to? :specification_version then
|
33
|
-
s.specification_version =
|
35
|
+
s.specification_version = 4
|
34
36
|
|
35
37
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
36
38
|
s.add_development_dependency(%q<rspec>, ["= 2.11.0"])
|
37
|
-
s.add_development_dependency(%q<rdoc>, ["
|
38
|
-
s.add_development_dependency(%q<
|
39
|
+
s.add_development_dependency(%q<rdoc>, ["= 3.12.2"])
|
40
|
+
s.add_development_dependency(%q<rubygems-update>, ["= 2.1.11"])
|
41
|
+
s.add_development_dependency(%q<jeweler>, ["= 1.8.8"])
|
39
42
|
else
|
40
43
|
s.add_dependency(%q<rspec>, ["= 2.11.0"])
|
41
|
-
s.add_dependency(%q<rdoc>, ["
|
42
|
-
s.add_dependency(%q<
|
44
|
+
s.add_dependency(%q<rdoc>, ["= 3.12.2"])
|
45
|
+
s.add_dependency(%q<rubygems-update>, ["= 2.1.11"])
|
46
|
+
s.add_dependency(%q<jeweler>, ["= 1.8.8"])
|
43
47
|
end
|
44
48
|
else
|
45
49
|
s.add_dependency(%q<rspec>, ["= 2.11.0"])
|
46
|
-
s.add_dependency(%q<rdoc>, ["
|
47
|
-
s.add_dependency(%q<
|
50
|
+
s.add_dependency(%q<rdoc>, ["= 3.12.2"])
|
51
|
+
s.add_dependency(%q<rubygems-update>, ["= 2.1.11"])
|
52
|
+
s.add_dependency(%q<jeweler>, ["= 1.8.8"])
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module AbstractFeatureBranch
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
|
6
|
+
desc "Creates an Abstract Feature Branch configuration file in your application."
|
7
|
+
|
8
|
+
def copy_config
|
9
|
+
template "config/features.yml", "config/features.yml"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
feature1: true
|
3
|
+
feature2: true
|
4
|
+
feature3: false
|
5
|
+
|
6
|
+
development:
|
7
|
+
<<: *defaults
|
8
|
+
|
9
|
+
test:
|
10
|
+
<<: *defaults
|
11
|
+
|
12
|
+
staging:
|
13
|
+
<<: *defaults
|
14
|
+
feature2: false
|
15
|
+
|
16
|
+
production:
|
17
|
+
<<: *defaults
|
18
|
+
feature1: false
|
19
|
+
feature2: false
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abstract_feature_branch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Annas "Andy" Maleh
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - '='
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,57 +27,56 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rdoc
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '='
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 3.12.2
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '='
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 3.12.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubygems-update
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.1.11
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.1.11
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: jeweler
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - '='
|
52
60
|
- !ruby/object:Gem::Version
|
53
|
-
version: 1.8.
|
61
|
+
version: 1.8.8
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - '='
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.8.
|
62
|
-
description:
|
63
|
-
name, and then
|
64
|
-
|
68
|
+
version: 1.8.8
|
69
|
+
description: |
|
70
|
+
It gives ability to wrap blocks of code with an abstract feature branch name, and then
|
65
71
|
specify which features to be switched on or off in a configuration file.
|
66
72
|
|
67
|
-
|
68
|
-
The goal is to build out future features with full integration into the codebase,
|
69
|
-
thus
|
70
|
-
|
73
|
+
The goal is to build out future features with full integration into the codebase, thus
|
71
74
|
ensuring no delay in integration in the future, while releasing currently done features
|
72
|
-
|
73
|
-
at the same time. Developers then disable future features until they are ready to
|
74
|
-
be
|
75
|
-
|
75
|
+
at the same time. Developers then disable future features until they are ready to be
|
76
76
|
switched on in production, but do enable them in staging and locally.
|
77
77
|
|
78
|
-
|
79
78
|
This gives developers the added benefit of being able to switch a feature off after
|
80
|
-
|
81
79
|
release should big problems arise for a high risk feature.
|
82
|
-
|
83
|
-
'
|
84
80
|
email:
|
85
81
|
executables: []
|
86
82
|
extensions: []
|
@@ -94,33 +90,31 @@ files:
|
|
94
90
|
- abstract_feature_branch.gemspec
|
95
91
|
- lib/abstract_feature_branch.rb
|
96
92
|
- lib/ext/feature_branch.rb
|
93
|
+
- lib/generators/install_generator.rb
|
94
|
+
- lib/generators/templates/config/features.yml
|
97
95
|
homepage: http://github.com/AndyObtiva/abstract_feature_branch
|
98
96
|
licenses:
|
99
97
|
- MIT
|
98
|
+
metadata: {}
|
100
99
|
post_install_message:
|
101
100
|
rdoc_options: []
|
102
101
|
require_paths:
|
103
102
|
- lib
|
104
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
104
|
requirements:
|
107
|
-
- -
|
105
|
+
- - '>='
|
108
106
|
- !ruby/object:Gem::Version
|
109
107
|
version: '0'
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
hash: 3339737454588105210
|
113
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
109
|
requirements:
|
116
|
-
- -
|
110
|
+
- - '>='
|
117
111
|
- !ruby/object:Gem::Version
|
118
112
|
version: '0'
|
119
113
|
requirements: []
|
120
114
|
rubyforge_project:
|
121
|
-
rubygems_version:
|
115
|
+
rubygems_version: 2.0.6
|
122
116
|
signing_key:
|
123
|
-
specification_version:
|
124
|
-
summary:
|
117
|
+
specification_version: 4
|
118
|
+
summary: 'abstract_feature_branch is a Rails gem that enables developers to easily
|
125
119
|
branch by abstraction as per this pattern: http://paulhammant.com/blog/branch_by_abstraction.html'
|
126
120
|
test_files: []
|