abstract_feature_branch 0.7.1 → 0.8.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +138 -37
  3. data/VERSION +1 -1
  4. data/abstract_feature_branch.gemspec +26 -11
  5. data/config/features/admin.local.yml +2 -1
  6. data/config/features/admin.yml +2 -1
  7. data/config/features/internal/wiki.local.yml +2 -1
  8. data/config/features/internal/wiki.yml +2 -1
  9. data/config/features/public.local.yml +2 -1
  10. data/config/features/public.yml +2 -1
  11. data/lib/abstract_feature_branch.rb +14 -3
  12. data/lib/abstract_feature_branch/file_beautifier.rb +63 -0
  13. data/lib/generators/abstract_feature_branch/install_generator.rb +1 -0
  14. data/lib/generators/templates/config/features.local.yml +1 -0
  15. data/lib/generators/templates/config/initializers/abstract_feature_branch.rb +3 -0
  16. data/lib/generators/templates/lib/tasks/abstract_feature_branch.rake +9 -0
  17. data/spec/abstract_feature_branch/file_beautifier_spec.rb +384 -0
  18. data/spec/ext/feature_branch__feature_branch_spec.rb +145 -0
  19. data/spec/ext/feature_branch__feature_enabled_spec.rb +84 -0
  20. data/spec/{application_no_config → fixtures/application_no_config}/no_config +0 -0
  21. data/spec/{application_rails_config → fixtures/application_rails_config}/config/features.local.yml +1 -0
  22. data/spec/{application_rails_config → fixtures/application_rails_config}/config/features.yml +0 -0
  23. data/spec/fixtures/application_ugly_config_reference/config/another_application_configuration.yml +31 -0
  24. data/spec/fixtures/application_ugly_config_reference/config/database.yml +17 -0
  25. data/spec/fixtures/application_ugly_config_reference/config/features.local.yml +44 -0
  26. data/spec/fixtures/application_ugly_config_reference/config/features.yml +49 -0
  27. data/spec/fixtures/application_ugly_config_reference/config/features/admin.local.yml +44 -0
  28. data/spec/fixtures/application_ugly_config_reference/config/features/admin.yml +44 -0
  29. data/spec/fixtures/application_ugly_config_reference/config/features/empty.local.yml +0 -0
  30. data/spec/fixtures/application_ugly_config_reference/config/features/feature_empty_config.local.yml +13 -0
  31. data/spec/fixtures/application_ugly_config_reference/config/features/including_comments.local.yml +52 -0
  32. data/spec/fixtures/application_ugly_config_reference/config/features/internal/wiki.local.yml +44 -0
  33. data/spec/fixtures/application_ugly_config_reference/config/features/internal/wiki.yml +44 -0
  34. data/spec/fixtures/application_ugly_config_reference/config/features/public.local.yml +44 -0
  35. data/spec/fixtures/application_ugly_config_reference/config/features/public.yml +44 -0
  36. metadata +46 -32
@@ -0,0 +1,44 @@
1
+ defaults: &defaults
2
+
3
+ feature4a: true
4
+ FEATURE1: true
5
+ feature4: true
6
+ feature3: false
7
+ Feature2: true
8
+
9
+ development:
10
+ <<: *defaults
11
+ FEATURE1: true
12
+
13
+ feature4a: true
14
+ feature4: true
15
+ feature3: false
16
+ Feature2: true
17
+
18
+ test:
19
+ <<: *defaults
20
+ FEATURE1: true
21
+ feature4: true
22
+
23
+ feature4a: true
24
+ feature3: false
25
+ Feature2: true
26
+
27
+ staging:
28
+ <<: *defaults
29
+ FEATURE1: true
30
+ feature4: true
31
+ feature3: false
32
+
33
+ feature4a: true
34
+ Feature2: true
35
+
36
+ production:
37
+ <<: *defaults
38
+ FEATURE1: true
39
+ feature4: true
40
+ feature3: false
41
+ Feature2: true
42
+
43
+ feature4a: true
44
+
@@ -0,0 +1,44 @@
1
+ defaults: &defaults
2
+
3
+ feature4a: true
4
+ FEATURE1: true
5
+ feature4: true
6
+ feature3: false
7
+ Feature2: true
8
+
9
+ development:
10
+ <<: *defaults
11
+ FEATURE1: true
12
+
13
+ feature4a: true
14
+ feature4: true
15
+ feature3: false
16
+ Feature2: true
17
+
18
+ test:
19
+ <<: *defaults
20
+ FEATURE1: true
21
+ feature4: true
22
+
23
+ feature4a: true
24
+ feature3: false
25
+ Feature2: true
26
+
27
+ staging:
28
+ <<: *defaults
29
+ FEATURE1: true
30
+ feature4: true
31
+ feature3: false
32
+
33
+ feature4a: true
34
+ Feature2: true
35
+
36
+ production:
37
+ <<: *defaults
38
+ FEATURE1: true
39
+ feature4: true
40
+ feature3: false
41
+ Feature2: true
42
+
43
+ feature4a: true
44
+
@@ -0,0 +1,44 @@
1
+ defaults: &defaults
2
+
3
+ feature4a: true
4
+ FEATURE1: true
5
+ feature4: true
6
+ feature3: false
7
+ Feature2: true
8
+
9
+ development:
10
+ <<: *defaults
11
+ FEATURE1: true
12
+
13
+ feature4a: true
14
+ feature4: true
15
+ feature3: false
16
+ Feature2: true
17
+
18
+ test:
19
+ <<: *defaults
20
+ FEATURE1: true
21
+ feature4: true
22
+
23
+ feature4a: true
24
+ feature3: false
25
+ Feature2: true
26
+
27
+ staging:
28
+ <<: *defaults
29
+ FEATURE1: true
30
+ feature4: true
31
+ feature3: false
32
+
33
+ feature4a: true
34
+ Feature2: true
35
+
36
+ production:
37
+ <<: *defaults
38
+ FEATURE1: true
39
+ feature4: true
40
+ feature3: false
41
+ Feature2: true
42
+
43
+ feature4a: true
44
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract_feature_branch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Annas "Andy" Maleh
@@ -25,58 +25,54 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 2.11.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 2.11.0
41
- - !ruby/object:Gem::Dependency
42
- name: rdoc
28
+ name: jeweler
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - '='
46
32
  - !ruby/object:Gem::Version
47
- version: 3.12.2
33
+ version: 1.8.8
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - '='
53
39
  - !ruby/object:Gem::Version
54
- version: 3.12.2
40
+ version: 1.8.8
55
41
  - !ruby/object:Gem::Dependency
56
- name: jeweler
42
+ name: rspec
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - '='
60
46
  - !ruby/object:Gem::Version
61
- version: 1.8.8
47
+ version: 2.14.1
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - '='
67
53
  - !ruby/object:Gem::Version
68
- version: 1.8.8
54
+ version: 2.14.1
69
55
  description: |
70
- It gives ability to wrap blocks of code with an abstract feature branch name, and then
71
- specify which features to be switched on or off in a configuration file.
56
+ abstract_feature_branch is a Rails gem that enables developers to easily branch by abstraction as per this pattern:
57
+ http://paulhammant.com/blog/branch_by_abstraction.html
58
+
59
+ It is a productivity and fault tolerance enhancing team practice that has been utilized by professional software development
60
+ teams at large corporations, such as Sears and Groupon.
61
+
62
+ It provides the ability to wrap blocks of code with an abstract feature branch name, and then
63
+ specify in a configuration file which features to be switched on or off.
64
+
65
+ The goal is to build out upcoming features in the same source code repository branch, regardless of whether all are
66
+ completed by the next release date or not, thus increasing team productivity by preventing integration delays.
67
+ Developers then disable in-progress features until they are ready to be switched on in production, yet enable them
68
+ locally and in staging environments for in-progress testing.
72
69
 
73
- The goal is to build out future features with full integration into the codebase, thus
74
- ensuring no delay in integration in the future, while releasing currently done features
75
- at the same time. Developers then disable future features until they are ready to be
76
- switched on in production, but do enable them in staging and locally.
70
+ This gives developers the added benefit of being able to switch a feature off after release should big problems arise
71
+ for a high risk feature.
77
72
 
78
- This gives developers the added benefit of being able to switch a feature off after
79
- release should big problems arise for a high risk feature.
73
+ abstract_feature_branch additionally supports DDD's pattern of
74
+ Bounded Contexts by allowing developers to configure
75
+ context-specific feature files if needed.
80
76
  email:
81
77
  executables: []
82
78
  extensions: []
@@ -96,6 +92,7 @@ files:
96
92
  - config/features/public.local.yml
97
93
  - config/features/public.yml
98
94
  - lib/abstract_feature_branch.rb
95
+ - lib/abstract_feature_branch/file_beautifier.rb
99
96
  - lib/ext/feature_branch.rb
100
97
  - lib/generators/abstract_feature_branch/context_generator.rb
101
98
  - lib/generators/abstract_feature_branch/install_generator.rb
@@ -103,9 +100,26 @@ files:
103
100
  - lib/generators/templates/config/features.local.yml
104
101
  - lib/generators/templates/config/features.yml
105
102
  - lib/generators/templates/config/initializers/abstract_feature_branch.rb
106
- - spec/application_no_config/no_config
107
- - spec/application_rails_config/config/features.local.yml
108
- - spec/application_rails_config/config/features.yml
103
+ - lib/generators/templates/lib/tasks/abstract_feature_branch.rake
104
+ - spec/abstract_feature_branch/file_beautifier_spec.rb
105
+ - spec/ext/feature_branch__feature_branch_spec.rb
106
+ - spec/ext/feature_branch__feature_enabled_spec.rb
107
+ - spec/fixtures/application_no_config/no_config
108
+ - spec/fixtures/application_rails_config/config/features.local.yml
109
+ - spec/fixtures/application_rails_config/config/features.yml
110
+ - spec/fixtures/application_ugly_config_reference/config/another_application_configuration.yml
111
+ - spec/fixtures/application_ugly_config_reference/config/database.yml
112
+ - spec/fixtures/application_ugly_config_reference/config/features.local.yml
113
+ - spec/fixtures/application_ugly_config_reference/config/features.yml
114
+ - spec/fixtures/application_ugly_config_reference/config/features/admin.local.yml
115
+ - spec/fixtures/application_ugly_config_reference/config/features/admin.yml
116
+ - spec/fixtures/application_ugly_config_reference/config/features/empty.local.yml
117
+ - spec/fixtures/application_ugly_config_reference/config/features/feature_empty_config.local.yml
118
+ - spec/fixtures/application_ugly_config_reference/config/features/including_comments.local.yml
119
+ - spec/fixtures/application_ugly_config_reference/config/features/internal/wiki.local.yml
120
+ - spec/fixtures/application_ugly_config_reference/config/features/internal/wiki.yml
121
+ - spec/fixtures/application_ugly_config_reference/config/features/public.local.yml
122
+ - spec/fixtures/application_ugly_config_reference/config/features/public.yml
109
123
  homepage: http://github.com/AndyObtiva/abstract_feature_branch
110
124
  licenses:
111
125
  - MIT