detour 0.0.1 → 0.0.2

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 (147) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -1
  3. data/.travis.yml +6 -2
  4. data/Gemfile +5 -0
  5. data/README.md +41 -132
  6. data/Rake.md +108 -0
  7. data/Rakefile +21 -1
  8. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  9. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  10. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  11. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  12. data/app/assets/images/detour/.gitkeep +0 -0
  13. data/app/assets/javascripts/detour/application.js +16 -0
  14. data/app/assets/javascripts/detour/bootstrap.js +2006 -0
  15. data/app/assets/javascripts/detour/delete_feature.js +13 -0
  16. data/app/assets/javascripts/detour/delete_flag.js +13 -0
  17. data/app/assets/javascripts/detour/modals.js +3 -0
  18. data/app/assets/javascripts/detour/tooltips.js +3 -0
  19. data/app/assets/stylesheets/detour/application.css +14 -0
  20. data/app/assets/stylesheets/detour/bootstrap.css +7112 -0
  21. data/app/assets/stylesheets/detour/main.css +49 -0
  22. data/app/controllers/detour/application_controller.rb +12 -0
  23. data/app/controllers/detour/features_controller.rb +19 -0
  24. data/app/controllers/detour/flaggable_flags_controller.rb +90 -0
  25. data/app/controllers/detour/flags_controller.rb +18 -0
  26. data/app/helpers/detour/application_helper.rb +32 -0
  27. data/app/helpers/detour/flaggable_flags_helper.rb +5 -0
  28. data/app/helpers/detour/flags_helper.rb +7 -0
  29. data/app/models/detour/concerns/countable_flag.rb +19 -0
  30. data/app/models/detour/concerns/flag_actions.rb +141 -0
  31. data/app/models/detour/concerns/matchers.rb +73 -0
  32. data/app/models/detour/feature.rb +81 -0
  33. data/{lib → app/models}/detour/flag.rb +8 -2
  34. data/app/models/detour/flag_in_flag.rb +12 -0
  35. data/app/models/detour/group_flag.rb +13 -0
  36. data/{lib → app/models}/detour/opt_out_flag.rb +4 -2
  37. data/app/models/detour/percentage_flag.rb +9 -0
  38. data/app/views/detour/application/index.html.erb +0 -0
  39. data/app/views/detour/features/_errors.html.erb +11 -0
  40. data/app/views/detour/features/_success.html.erb +1 -0
  41. data/app/views/detour/features/error.js.erb +5 -0
  42. data/app/views/detour/features/success.js.erb +1 -0
  43. data/app/views/detour/flaggable_flags/_errors.html.erb +11 -0
  44. data/app/views/detour/flaggable_flags/_flaggable_flag.html.erb +11 -0
  45. data/app/views/detour/flaggable_flags/error.js.erb +5 -0
  46. data/app/views/detour/flaggable_flags/index.html.erb +34 -0
  47. data/app/views/detour/flaggable_flags/success.js.erb +1 -0
  48. data/app/views/detour/flags/_feature_form.html.erb +38 -0
  49. data/app/views/detour/flags/index.html.erb +76 -0
  50. data/app/views/detour/shared/_nav.html.erb +28 -0
  51. data/app/views/detour/shared/_spacer_cells.html.erb +3 -0
  52. data/app/views/layouts/detour/application.html.erb +29 -0
  53. data/config/routes.rb +16 -0
  54. data/detour.gemspec +15 -14
  55. data/lib/detour/acts_as_flaggable.rb +42 -3
  56. data/lib/detour/configuration.rb +35 -0
  57. data/lib/detour/engine.rb +5 -0
  58. data/lib/detour/flag_form.rb +87 -0
  59. data/lib/detour/version.rb +1 -1
  60. data/lib/detour.rb +10 -14
  61. data/lib/generators/templates/migration.rb +2 -0
  62. data/lib/tasks/detour.rake +16 -16
  63. data/script/rails +8 -0
  64. data/spec/controllers/detour/application_controller_spec.rb +15 -0
  65. data/spec/controllers/detour/features_controller_spec.rb +51 -0
  66. data/spec/controllers/detour/flaggable_flags_controller_spec.rb +100 -0
  67. data/spec/controllers/detour/flags_controller_spec.rb +77 -0
  68. data/spec/dummy/README.rdoc +261 -0
  69. data/spec/dummy/Rakefile +7 -0
  70. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  71. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  72. data/spec/dummy/app/controllers/application_controller.rb +7 -0
  73. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  74. data/spec/dummy/app/mailers/.gitkeep +0 -0
  75. data/spec/dummy/app/models/.gitkeep +0 -0
  76. data/spec/dummy/app/models/user.rb +5 -0
  77. data/spec/dummy/app/models/widget.rb +5 -0
  78. data/spec/dummy/app/views/application/index.html.erb +22 -0
  79. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  80. data/spec/dummy/config/application.rb +65 -0
  81. data/spec/dummy/config/boot.rb +10 -0
  82. data/spec/dummy/config/database.yml +19 -0
  83. data/spec/dummy/config/environment.rb +5 -0
  84. data/spec/dummy/config/environments/development.rb +37 -0
  85. data/spec/dummy/config/environments/production.rb +67 -0
  86. data/spec/dummy/config/environments/test.rb +37 -0
  87. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  88. data/spec/dummy/config/initializers/detour.rb +36 -0
  89. data/spec/dummy/config/initializers/inflections.rb +15 -0
  90. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  91. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  92. data/spec/dummy/config/initializers/session_store.rb +8 -0
  93. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  94. data/spec/dummy/config/locales/en.yml +5 -0
  95. data/spec/dummy/config/routes.rb +4 -0
  96. data/spec/dummy/config.ru +4 -0
  97. data/spec/dummy/db/migrate/20131218015844_create_users.rb +10 -0
  98. data/spec/dummy/db/migrate/20131218023124_create_widgets.rb +9 -0
  99. data/spec/dummy/db/migrate/20131218055352_add_user_id_to_widgets.rb +6 -0
  100. data/spec/dummy/db/migrate/20131221052201_setup_detour.rb +32 -0
  101. data/spec/dummy/db/schema.rb +59 -0
  102. data/spec/dummy/db/seeds.rb +10 -0
  103. data/spec/dummy/lib/assets/.gitkeep +0 -0
  104. data/spec/dummy/log/.gitkeep +0 -0
  105. data/spec/dummy/public/404.html +26 -0
  106. data/spec/dummy/public/422.html +26 -0
  107. data/spec/dummy/public/500.html +25 -0
  108. data/spec/dummy/public/favicon.ico +0 -0
  109. data/spec/dummy/script/rails +6 -0
  110. data/spec/factories/feature.rb +5 -0
  111. data/spec/factories/flag_in_flag.rb +6 -0
  112. data/spec/factories/group_flag.rb +7 -0
  113. data/spec/factories/opt_out_flag.rb +6 -0
  114. data/spec/factories/percentage_flag.rb +7 -0
  115. data/spec/factories/user.rb +6 -0
  116. data/spec/factories/widget.rb +5 -0
  117. data/spec/features/features_spec.rb +70 -0
  118. data/spec/features/flag_in_flags_spec.rb +118 -0
  119. data/spec/features/group_flags_spec.rb +49 -0
  120. data/spec/features/home_page_spec.rb +11 -0
  121. data/spec/features/opt_out_flags_spec.rb +105 -0
  122. data/spec/features/percentage_flags_spec.rb +63 -0
  123. data/spec/integration/group_rollout_spec.rb +1 -1
  124. data/spec/lib/detour/acts_as_flaggable_spec.rb +45 -0
  125. data/spec/lib/detour/configuration_spec.rb +23 -0
  126. data/spec/lib/detour/flag_form_spec.rb +84 -0
  127. data/spec/lib/{active_record/rollout → detour}/flaggable_spec.rb +19 -19
  128. data/spec/lib/tasks/{detour_rake_spec.rb → detour_spec.rb} +54 -54
  129. data/spec/{lib/active_record/rollout → models/detour}/feature_spec.rb +93 -67
  130. data/spec/models/detour/flag_in_flag_spec.rb +38 -0
  131. data/spec/{lib/active_record/rollout → models/detour}/flag_spec.rb +1 -1
  132. data/spec/models/detour/opt_out_flag_spec.rb +38 -0
  133. data/spec/{lib/active_record/rollout → models/detour}/percentage_flag_spec.rb +1 -1
  134. data/spec/spec_helper.rb +41 -21
  135. data/spec/support/shared_contexts/rake.rb +4 -14
  136. metadata +278 -95
  137. data/lib/detour/feature.rb +0 -312
  138. data/lib/detour/flaggable_flag.rb +0 -10
  139. data/lib/detour/group_flag.rb +0 -8
  140. data/lib/detour/percentage_flag.rb +0 -11
  141. data/spec/lib/active_record/rollout/acts_as_flaggable_spec.rb +0 -31
  142. data/spec/lib/active_record/rollout/flaggable_flag_spec.rb +0 -9
  143. data/spec/lib/active_record/rollout/opt_out_flag_spec.rb +0 -9
  144. data/spec/support/schema.rb +0 -13
  145. /data/lib/generators/{active_record_rollout_generator.rb → detour_generator.rb} +0 -0
  146. /data/lib/generators/templates/{active_record_rollout.rb → detour.rb} +0 -0
  147. /data/spec/{lib/active_record/rollout → models/detour}/group_flag_spec.rb +0 -0
data/spec/spec_helper.rb CHANGED
@@ -1,40 +1,60 @@
1
- require "rails"
2
- require "active_record"
3
- require "detour"
1
+ ENV["RAILS_ENV"] ||= "test"
2
+
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+
5
+ require "capybara/poltergeist"
6
+ require "database_cleaner"
7
+ require "rspec/rails"
8
+ require "rspec/autorun"
9
+ require "factory_girl_rails"
4
10
  require "shoulda-matchers"
5
- require "generators/templates/migration"
6
- require "support/shared_contexts/rake"
7
11
  require "pry"
8
12
 
9
- class User < ActiveRecord::Base
10
- acts_as_flaggable
11
- end
13
+ Rails.backtrace_cleaner.remove_silencers!
12
14
 
13
- class Organization < ActiveRecord::Base
14
- acts_as_flaggable
15
- end
15
+ # Load support files
16
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
16
17
 
17
18
  RSpec.configure do |config|
19
+ Capybara.javascript_driver = :poltergeist
20
+
21
+ config.mock_with :rspec
22
+ config.use_transactional_fixtures = false
23
+ config.infer_base_class_for_anonymous_controllers = false
24
+ config.order = "random"
25
+ config.include FactoryGirl::Syntax::Methods
26
+
27
+ config.after :each do
28
+ Rake::Task.tasks.each { |t| t.reenable }
29
+ end
30
+
18
31
  config.before :suite do
19
- ActiveRecord::Base.establish_connection \
20
- adapter: "sqlite3",
21
- database: File.dirname(__FILE__) + "/spec.sqlite3"
32
+ DatabaseCleaner.clean_with :truncation
33
+ end
34
+
35
+ config.before :each do
36
+ DatabaseCleaner.strategy = :transaction
37
+ end
22
38
 
23
- require File.dirname(__FILE__) + "/support/schema.rb"
39
+ config.before :each, js: true do
40
+ DatabaseCleaner.strategy = :truncation
24
41
  end
25
42
 
26
43
  config.before :each do
27
- SetupDetour.migrate :up
28
- ActiveRecord::Schema.migrate :up
44
+ DatabaseCleaner.start
29
45
  end
30
46
 
31
47
  config.after :each do
32
- SetupDetour.migrate :down
33
- ActiveRecord::Schema.migrate :down
48
+ DatabaseCleaner.clean
49
+ end
50
+
51
+ config.before :each do
52
+ User.instance_variable_set "@detour_flaggable_find_by", :id
34
53
  end
35
54
 
36
55
  config.after :each do
37
- Detour::Feature.instance_variable_set "@defined_groups", {}
38
- Detour::Feature.instance_variable_set "@default_flaggable_class_name", nil
56
+ Detour.config.default_flaggable_class_name = nil
57
+ Detour.config.grep_dirs = []
58
+ Detour.config.instance_variable_set "@defined_groups", {}
39
59
  end
40
60
  end
@@ -1,20 +1,10 @@
1
1
  require "rake"
2
2
 
3
+ APP_RAKEFILE = File.expand_path("../../../../spec/dummy/Rakefile", __FILE__)
4
+ load "rails/tasks/engine.rake"
5
+
3
6
  # Hat tip: http://robots.thoughtbot.com/test-rake-tasks-like-a-boss
4
7
  shared_context "rake" do
5
- let(:rake) { Rake::Application.new }
6
8
  let(:task_name) { self.class.top_level_description }
7
- let(:task_path) { File.join(File.dirname(__FILE__), "../../../lib/tasks/#{task_name.split(":").first}") }
8
- subject { rake[task_name] }
9
-
10
- def loaded_files_excluding_current_rake_file
11
- $".reject { |file| file == "#{task_path}.rake" }
12
- end
13
-
14
- before do
15
- Rake.application = rake
16
- Rake.application.rake_require(task_path, [Rails.root.to_s], loaded_files_excluding_current_rake_file)
17
-
18
- Rake::Task.define_task(:environment)
19
- end
9
+ subject { Rake::Task["app:#{task_name}"] }
20
10
  end
metadata CHANGED
@@ -1,258 +1,441 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: detour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jonathan Clem
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-17 00:00:00.000000000 Z
11
+ date: 2014-01-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: activerecord
14
+ name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.2.16
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.2.16
30
33
  - !ruby/object:Gem::Dependency
31
- name: rails
34
+ name: indefinite_article
32
35
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
36
  requirements:
35
- - - ~>
37
+ - - "~>"
36
38
  - !ruby/object:Gem::Version
37
- version: '3.2'
39
+ version: '0.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.2.0
38
43
  type: :runtime
39
44
  prerelease: false
40
45
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
46
  requirements:
43
- - - ~>
47
+ - - "~>"
44
48
  - !ruby/object:Gem::Version
45
- version: '3.2'
49
+ version: '0.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.2.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: capybara
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
46
67
  - !ruby/object:Gem::Dependency
47
- name: bundler
68
+ name: database_cleaner
48
69
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
70
  requirements:
51
- - - ~>
71
+ - - "~>"
52
72
  - !ruby/object:Gem::Version
53
- version: '1.3'
73
+ version: 1.2.0
54
74
  type: :development
55
75
  prerelease: false
56
76
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
77
  requirements:
59
- - - ~>
78
+ - - "~>"
60
79
  - !ruby/object:Gem::Version
61
- version: '1.3'
80
+ version: 1.2.0
62
81
  - !ruby/object:Gem::Dependency
63
- name: rake
82
+ name: factory_girl_rails
64
83
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
84
  requirements:
67
- - - ! '>='
85
+ - - ">="
68
86
  - !ruby/object:Gem::Version
69
87
  version: '0'
70
88
  type: :development
71
89
  prerelease: false
72
90
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
91
  requirements:
75
- - - ! '>='
92
+ - - ">="
76
93
  - !ruby/object:Gem::Version
77
94
  version: '0'
78
95
  - !ruby/object:Gem::Dependency
79
- name: rspec-rails
96
+ name: poltergeist
80
97
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
98
  requirements:
83
- - - ! '>='
99
+ - - ">="
84
100
  - !ruby/object:Gem::Version
85
101
  version: '0'
86
102
  type: :development
87
103
  prerelease: false
88
104
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
105
  requirements:
91
- - - ! '>='
106
+ - - ">="
92
107
  - !ruby/object:Gem::Version
93
108
  version: '0'
94
109
  - !ruby/object:Gem::Dependency
95
- name: fakefs
110
+ name: pry-nav
96
111
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
112
  requirements:
99
- - - ! '>='
113
+ - - ">="
100
114
  - !ruby/object:Gem::Version
101
115
  version: '0'
102
116
  type: :development
103
117
  prerelease: false
104
118
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
119
  requirements:
107
- - - ! '>='
120
+ - - ">="
108
121
  - !ruby/object:Gem::Version
109
122
  version: '0'
110
123
  - !ruby/object:Gem::Dependency
111
- name: shoulda-matchers
124
+ name: rspec-rails
112
125
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
126
  requirements:
115
- - - ! '>='
127
+ - - ">="
116
128
  - !ruby/object:Gem::Version
117
129
  version: '0'
118
130
  type: :development
119
131
  prerelease: false
120
132
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
133
  requirements:
123
- - - ! '>='
134
+ - - ">="
124
135
  - !ruby/object:Gem::Version
125
136
  version: '0'
126
137
  - !ruby/object:Gem::Dependency
127
- name: sqlite3-ruby
138
+ name: selenium-webdriver
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: shoulda-matchers
128
153
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
154
  requirements:
131
- - - ! '>='
155
+ - - ">="
132
156
  - !ruby/object:Gem::Version
133
157
  version: '0'
134
158
  type: :development
135
159
  prerelease: false
136
160
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
161
  requirements:
139
- - - ! '>='
162
+ - - ">="
140
163
  - !ruby/object:Gem::Version
141
164
  version: '0'
142
165
  - !ruby/object:Gem::Dependency
143
- name: pry-debugger
166
+ name: sqlite3-ruby
144
167
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
168
  requirements:
147
- - - ! '>='
169
+ - - ">="
148
170
  - !ruby/object:Gem::Version
149
171
  version: '0'
150
172
  type: :development
151
173
  prerelease: false
152
174
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
175
  requirements:
155
- - - ! '>='
176
+ - - ">="
156
177
  - !ruby/object:Gem::Version
157
178
  version: '0'
158
179
  - !ruby/object:Gem::Dependency
159
180
  name: yard
160
181
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
182
  requirements:
163
- - - ! '>='
183
+ - - ">="
164
184
  - !ruby/object:Gem::Version
165
185
  version: '0'
166
186
  type: :development
167
187
  prerelease: false
168
188
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
189
  requirements:
171
- - - ! '>='
190
+ - - ">="
172
191
  - !ruby/object:Gem::Version
173
192
  version: '0'
174
- description: Rollouts (feature flags) for ActiveRecord models.
193
+ description: Rollouts (feature flags) for Rails.
175
194
  email:
176
195
  - jonathan@heroku.com
177
196
  executables: []
178
197
  extensions: []
179
198
  extra_rdoc_files: []
180
199
  files:
181
- - .gitignore
182
- - .travis.yml
200
+ - ".gitignore"
201
+ - ".travis.yml"
183
202
  - Gemfile
184
203
  - LICENSE.txt
185
204
  - README.md
205
+ - Rake.md
186
206
  - Rakefile
207
+ - app/assets/fonts/glyphicons-halflings-regular.eot
208
+ - app/assets/fonts/glyphicons-halflings-regular.svg
209
+ - app/assets/fonts/glyphicons-halflings-regular.ttf
210
+ - app/assets/fonts/glyphicons-halflings-regular.woff
211
+ - app/assets/images/detour/.gitkeep
212
+ - app/assets/javascripts/detour/application.js
213
+ - app/assets/javascripts/detour/bootstrap.js
214
+ - app/assets/javascripts/detour/delete_feature.js
215
+ - app/assets/javascripts/detour/delete_flag.js
216
+ - app/assets/javascripts/detour/modals.js
217
+ - app/assets/javascripts/detour/tooltips.js
218
+ - app/assets/stylesheets/detour/application.css
219
+ - app/assets/stylesheets/detour/bootstrap.css
220
+ - app/assets/stylesheets/detour/main.css
221
+ - app/controllers/detour/application_controller.rb
222
+ - app/controllers/detour/features_controller.rb
223
+ - app/controllers/detour/flaggable_flags_controller.rb
224
+ - app/controllers/detour/flags_controller.rb
225
+ - app/helpers/detour/application_helper.rb
226
+ - app/helpers/detour/flaggable_flags_helper.rb
227
+ - app/helpers/detour/flags_helper.rb
228
+ - app/models/detour/concerns/countable_flag.rb
229
+ - app/models/detour/concerns/flag_actions.rb
230
+ - app/models/detour/concerns/matchers.rb
231
+ - app/models/detour/feature.rb
232
+ - app/models/detour/flag.rb
233
+ - app/models/detour/flag_in_flag.rb
234
+ - app/models/detour/group_flag.rb
235
+ - app/models/detour/opt_out_flag.rb
236
+ - app/models/detour/percentage_flag.rb
237
+ - app/views/detour/application/index.html.erb
238
+ - app/views/detour/features/_errors.html.erb
239
+ - app/views/detour/features/_success.html.erb
240
+ - app/views/detour/features/error.js.erb
241
+ - app/views/detour/features/success.js.erb
242
+ - app/views/detour/flaggable_flags/_errors.html.erb
243
+ - app/views/detour/flaggable_flags/_flaggable_flag.html.erb
244
+ - app/views/detour/flaggable_flags/error.js.erb
245
+ - app/views/detour/flaggable_flags/index.html.erb
246
+ - app/views/detour/flaggable_flags/success.js.erb
247
+ - app/views/detour/flags/_feature_form.html.erb
248
+ - app/views/detour/flags/index.html.erb
249
+ - app/views/detour/shared/_nav.html.erb
250
+ - app/views/detour/shared/_spacer_cells.html.erb
251
+ - app/views/layouts/detour/application.html.erb
252
+ - config/routes.rb
187
253
  - detour.gemspec
188
254
  - lib/detour.rb
189
255
  - lib/detour/acts_as_flaggable.rb
190
- - lib/detour/feature.rb
191
- - lib/detour/flag.rb
256
+ - lib/detour/configuration.rb
257
+ - lib/detour/engine.rb
258
+ - lib/detour/flag_form.rb
192
259
  - lib/detour/flaggable.rb
193
- - lib/detour/flaggable_flag.rb
194
- - lib/detour/group_flag.rb
195
- - lib/detour/opt_out_flag.rb
196
- - lib/detour/percentage_flag.rb
197
260
  - lib/detour/version.rb
198
- - lib/generators/active_record_rollout_generator.rb
199
- - lib/generators/templates/active_record_rollout.rb
261
+ - lib/generators/detour_generator.rb
262
+ - lib/generators/templates/detour.rb
200
263
  - lib/generators/templates/migration.rb
201
264
  - lib/tasks/detour.rake
265
+ - script/rails
266
+ - spec/controllers/detour/application_controller_spec.rb
267
+ - spec/controllers/detour/features_controller_spec.rb
268
+ - spec/controllers/detour/flaggable_flags_controller_spec.rb
269
+ - spec/controllers/detour/flags_controller_spec.rb
270
+ - spec/dummy/README.rdoc
271
+ - spec/dummy/Rakefile
272
+ - spec/dummy/app/assets/javascripts/application.js
273
+ - spec/dummy/app/assets/stylesheets/application.css
274
+ - spec/dummy/app/controllers/application_controller.rb
275
+ - spec/dummy/app/helpers/application_helper.rb
276
+ - spec/dummy/app/mailers/.gitkeep
277
+ - spec/dummy/app/models/.gitkeep
278
+ - spec/dummy/app/models/user.rb
279
+ - spec/dummy/app/models/widget.rb
280
+ - spec/dummy/app/views/application/index.html.erb
281
+ - spec/dummy/app/views/layouts/application.html.erb
282
+ - spec/dummy/config.ru
283
+ - spec/dummy/config/application.rb
284
+ - spec/dummy/config/boot.rb
285
+ - spec/dummy/config/database.yml
286
+ - spec/dummy/config/environment.rb
287
+ - spec/dummy/config/environments/development.rb
288
+ - spec/dummy/config/environments/production.rb
289
+ - spec/dummy/config/environments/test.rb
290
+ - spec/dummy/config/initializers/backtrace_silencers.rb
291
+ - spec/dummy/config/initializers/detour.rb
292
+ - spec/dummy/config/initializers/inflections.rb
293
+ - spec/dummy/config/initializers/mime_types.rb
294
+ - spec/dummy/config/initializers/secret_token.rb
295
+ - spec/dummy/config/initializers/session_store.rb
296
+ - spec/dummy/config/initializers/wrap_parameters.rb
297
+ - spec/dummy/config/locales/en.yml
298
+ - spec/dummy/config/routes.rb
299
+ - spec/dummy/db/migrate/20131218015844_create_users.rb
300
+ - spec/dummy/db/migrate/20131218023124_create_widgets.rb
301
+ - spec/dummy/db/migrate/20131218055352_add_user_id_to_widgets.rb
302
+ - spec/dummy/db/migrate/20131221052201_setup_detour.rb
303
+ - spec/dummy/db/schema.rb
304
+ - spec/dummy/db/seeds.rb
305
+ - spec/dummy/lib/assets/.gitkeep
306
+ - spec/dummy/log/.gitkeep
307
+ - spec/dummy/public/404.html
308
+ - spec/dummy/public/422.html
309
+ - spec/dummy/public/500.html
310
+ - spec/dummy/public/favicon.ico
311
+ - spec/dummy/script/rails
312
+ - spec/factories/feature.rb
313
+ - spec/factories/flag_in_flag.rb
314
+ - spec/factories/group_flag.rb
315
+ - spec/factories/opt_out_flag.rb
316
+ - spec/factories/percentage_flag.rb
317
+ - spec/factories/user.rb
318
+ - spec/factories/widget.rb
319
+ - spec/features/features_spec.rb
320
+ - spec/features/flag_in_flags_spec.rb
321
+ - spec/features/group_flags_spec.rb
322
+ - spec/features/home_page_spec.rb
323
+ - spec/features/opt_out_flags_spec.rb
324
+ - spec/features/percentage_flags_spec.rb
202
325
  - spec/integration/flag_rollout_spec.rb
203
326
  - spec/integration/group_rollout_spec.rb
204
327
  - spec/integration/percentage_rollout_spec.rb
205
- - spec/lib/active_record/rollout/acts_as_flaggable_spec.rb
206
- - spec/lib/active_record/rollout/feature_spec.rb
207
- - spec/lib/active_record/rollout/flag_spec.rb
208
- - spec/lib/active_record/rollout/flaggable_flag_spec.rb
209
- - spec/lib/active_record/rollout/flaggable_spec.rb
210
- - spec/lib/active_record/rollout/group_flag_spec.rb
211
- - spec/lib/active_record/rollout/opt_out_flag_spec.rb
212
- - spec/lib/active_record/rollout/percentage_flag_spec.rb
213
- - spec/lib/tasks/detour_rake_spec.rb
328
+ - spec/lib/detour/acts_as_flaggable_spec.rb
329
+ - spec/lib/detour/configuration_spec.rb
330
+ - spec/lib/detour/flag_form_spec.rb
331
+ - spec/lib/detour/flaggable_spec.rb
332
+ - spec/lib/tasks/detour_spec.rb
333
+ - spec/models/detour/feature_spec.rb
334
+ - spec/models/detour/flag_in_flag_spec.rb
335
+ - spec/models/detour/flag_spec.rb
336
+ - spec/models/detour/group_flag_spec.rb
337
+ - spec/models/detour/opt_out_flag_spec.rb
338
+ - spec/models/detour/percentage_flag_spec.rb
214
339
  - spec/spec_helper.rb
215
- - spec/support/schema.rb
216
340
  - spec/support/shared_contexts/rake.rb
217
- homepage: https://github.com/jclem/detour
341
+ homepage: https://github.com/heroku/detour
218
342
  licenses:
219
343
  - MIT
344
+ metadata: {}
220
345
  post_install_message:
221
346
  rdoc_options: []
222
347
  require_paths:
223
348
  - lib
224
349
  required_ruby_version: !ruby/object:Gem::Requirement
225
- none: false
226
350
  requirements:
227
- - - ! '>='
351
+ - - ">="
228
352
  - !ruby/object:Gem::Version
229
353
  version: 1.9.3
230
354
  required_rubygems_version: !ruby/object:Gem::Requirement
231
- none: false
232
355
  requirements:
233
- - - ! '>='
356
+ - - ">="
234
357
  - !ruby/object:Gem::Version
235
358
  version: '0'
236
359
  requirements: []
237
360
  rubyforge_project:
238
- rubygems_version: 1.8.23
361
+ rubygems_version: 2.2.0
239
362
  signing_key:
240
- specification_version: 3
241
- summary: Rollouts (feature flags) for ActiveRecord models.
363
+ specification_version: 4
364
+ summary: Rollouts (feature flags) for Rails.
242
365
  test_files:
366
+ - spec/controllers/detour/application_controller_spec.rb
367
+ - spec/controllers/detour/features_controller_spec.rb
368
+ - spec/controllers/detour/flaggable_flags_controller_spec.rb
369
+ - spec/controllers/detour/flags_controller_spec.rb
370
+ - spec/dummy/README.rdoc
371
+ - spec/dummy/Rakefile
372
+ - spec/dummy/app/assets/javascripts/application.js
373
+ - spec/dummy/app/assets/stylesheets/application.css
374
+ - spec/dummy/app/controllers/application_controller.rb
375
+ - spec/dummy/app/helpers/application_helper.rb
376
+ - spec/dummy/app/mailers/.gitkeep
377
+ - spec/dummy/app/models/.gitkeep
378
+ - spec/dummy/app/models/user.rb
379
+ - spec/dummy/app/models/widget.rb
380
+ - spec/dummy/app/views/application/index.html.erb
381
+ - spec/dummy/app/views/layouts/application.html.erb
382
+ - spec/dummy/config.ru
383
+ - spec/dummy/config/application.rb
384
+ - spec/dummy/config/boot.rb
385
+ - spec/dummy/config/database.yml
386
+ - spec/dummy/config/environment.rb
387
+ - spec/dummy/config/environments/development.rb
388
+ - spec/dummy/config/environments/production.rb
389
+ - spec/dummy/config/environments/test.rb
390
+ - spec/dummy/config/initializers/backtrace_silencers.rb
391
+ - spec/dummy/config/initializers/detour.rb
392
+ - spec/dummy/config/initializers/inflections.rb
393
+ - spec/dummy/config/initializers/mime_types.rb
394
+ - spec/dummy/config/initializers/secret_token.rb
395
+ - spec/dummy/config/initializers/session_store.rb
396
+ - spec/dummy/config/initializers/wrap_parameters.rb
397
+ - spec/dummy/config/locales/en.yml
398
+ - spec/dummy/config/routes.rb
399
+ - spec/dummy/db/migrate/20131218015844_create_users.rb
400
+ - spec/dummy/db/migrate/20131218023124_create_widgets.rb
401
+ - spec/dummy/db/migrate/20131218055352_add_user_id_to_widgets.rb
402
+ - spec/dummy/db/migrate/20131221052201_setup_detour.rb
403
+ - spec/dummy/db/schema.rb
404
+ - spec/dummy/db/seeds.rb
405
+ - spec/dummy/lib/assets/.gitkeep
406
+ - spec/dummy/log/.gitkeep
407
+ - spec/dummy/public/404.html
408
+ - spec/dummy/public/422.html
409
+ - spec/dummy/public/500.html
410
+ - spec/dummy/public/favicon.ico
411
+ - spec/dummy/script/rails
412
+ - spec/factories/feature.rb
413
+ - spec/factories/flag_in_flag.rb
414
+ - spec/factories/group_flag.rb
415
+ - spec/factories/opt_out_flag.rb
416
+ - spec/factories/percentage_flag.rb
417
+ - spec/factories/user.rb
418
+ - spec/factories/widget.rb
419
+ - spec/features/features_spec.rb
420
+ - spec/features/flag_in_flags_spec.rb
421
+ - spec/features/group_flags_spec.rb
422
+ - spec/features/home_page_spec.rb
423
+ - spec/features/opt_out_flags_spec.rb
424
+ - spec/features/percentage_flags_spec.rb
243
425
  - spec/integration/flag_rollout_spec.rb
244
426
  - spec/integration/group_rollout_spec.rb
245
427
  - spec/integration/percentage_rollout_spec.rb
246
- - spec/lib/active_record/rollout/acts_as_flaggable_spec.rb
247
- - spec/lib/active_record/rollout/feature_spec.rb
248
- - spec/lib/active_record/rollout/flag_spec.rb
249
- - spec/lib/active_record/rollout/flaggable_flag_spec.rb
250
- - spec/lib/active_record/rollout/flaggable_spec.rb
251
- - spec/lib/active_record/rollout/group_flag_spec.rb
252
- - spec/lib/active_record/rollout/opt_out_flag_spec.rb
253
- - spec/lib/active_record/rollout/percentage_flag_spec.rb
254
- - spec/lib/tasks/detour_rake_spec.rb
428
+ - spec/lib/detour/acts_as_flaggable_spec.rb
429
+ - spec/lib/detour/configuration_spec.rb
430
+ - spec/lib/detour/flag_form_spec.rb
431
+ - spec/lib/detour/flaggable_spec.rb
432
+ - spec/lib/tasks/detour_spec.rb
433
+ - spec/models/detour/feature_spec.rb
434
+ - spec/models/detour/flag_in_flag_spec.rb
435
+ - spec/models/detour/flag_spec.rb
436
+ - spec/models/detour/group_flag_spec.rb
437
+ - spec/models/detour/opt_out_flag_spec.rb
438
+ - spec/models/detour/percentage_flag_spec.rb
255
439
  - spec/spec_helper.rb
256
- - spec/support/schema.rb
257
440
  - spec/support/shared_contexts/rake.rb
258
441
  has_rdoc: