beta_feature 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +59 -4
  4. data/Rakefile +7 -2
  5. data/app/controllers/beta_feature/application_controller.rb +4 -0
  6. data/app/controllers/beta_feature/configurations_controller.rb +9 -0
  7. data/app/controllers/beta_feature/settings_controller.rb +59 -0
  8. data/app/models/beta_feature/application_record.rb +5 -0
  9. data/{lib → app/models}/beta_feature/setting.rb +4 -8
  10. data/app/views/layouts/beta_feature/application.html.erb +15 -0
  11. data/config/routes.rb +10 -0
  12. data/db/migrate/20210102124824_create_beta_feature_settings.rb +18 -0
  13. data/lib/beta_feature.rb +3 -9
  14. data/lib/beta_feature/engine.rb +25 -0
  15. data/lib/beta_feature/flagger.rb +10 -6
  16. data/lib/beta_feature/version.rb +1 -1
  17. data/lib/generators/beta_feature/install_generator.rb +1 -12
  18. data/lib/generators/beta_feature/templates/beta_features.yml +1 -2
  19. data/lib/tasks/beta_feature_tasks.rake +4 -0
  20. metadata +27 -109
  21. data/.gitignore +0 -18
  22. data/.rspec +0 -3
  23. data/.rubycop.yml +0 -24
  24. data/.travis.yml +0 -57
  25. data/Appraisals +0 -18
  26. data/CHANGELOG.md +0 -0
  27. data/CODE_OF_CONDUCT.md +0 -74
  28. data/Gemfile +0 -6
  29. data/LICENSE.txt +0 -21
  30. data/beta_feature.gemspec +0 -52
  31. data/bin/console +0 -14
  32. data/bin/setup +0 -8
  33. data/gemfiles/rails50.gemfile +0 -7
  34. data/gemfiles/rails50.gemfile.lock +0 -175
  35. data/gemfiles/rails51.gemfile +0 -7
  36. data/gemfiles/rails51.gemfile.lock +0 -175
  37. data/gemfiles/rails52.gemfile +0 -7
  38. data/gemfiles/rails52.gemfile.lock +0 -183
  39. data/gemfiles/rails60.gemfile +0 -7
  40. data/gemfiles/rails60.gemfile.lock +0 -199
  41. data/lib/generators/beta_feature/migration.rb +0 -15
  42. data/lib/generators/beta_feature/migration_helper.rb +0 -13
  43. data/lib/generators/beta_feature/templates/install.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36e35ed413407ffb4dd36efdff5529ec1936b79743fbffa17f9c5b80d42a6555
4
- data.tar.gz: 19a14730baf92f0dc9a528a00de92e5bf4c49f2238e70b8c4d9567d616341cdf
3
+ metadata.gz: 6c7cc5f5d623ddf43ab03437b7d4e3d60a809efcbb4d005d23d11c5d45c23855
4
+ data.tar.gz: 86b211c78cbed4a06948920161baf3c4be571063d71f92c5913f96e74c8cf9da
5
5
  SHA512:
6
- metadata.gz: 1d17b5545bf27f4d8a0512766540ddaa937b5d7d371166835244e2ebf9addb76d35d844c318bc1ffeefe3752e187fd3b0c961cf2bd8d29c629ccf57a3f4caeed
7
- data.tar.gz: 780aa124b2e1c267b55b1653eac71bcbde04e48df42c77e5d0bbaec0f62953750062ed0b9abf71cca1f8dd5972a5743953ca63b29fdc0026181799dde75990f5
6
+ metadata.gz: 268c70d2c0b799cde5e5ffe057e85a822413e09b4de51ed08a59647c3c71d737ecbccd80691f855e4b47e94ea04e3dc99cf8edd6b1628d434cc2636e74c93d8e
7
+ data.tar.gz: cf3d62887f7dcaabfb1f13b6d3830998d0584feaccac5494a6dce1eb65404f9c46410d8d43c0615919634082565ef108c9365a8712f92ecd42686b6a22776448
@@ -0,0 +1,20 @@
1
+ Copyright 2021 Ryan Lv
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # beta_feature
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/helloworld1812/beta_feature.svg)](http://travis-ci.org/helloworld1812/beta_feature)
3
+ [![CircleCI Build Status](https://circleci.com/gh/helloworld1812/beta_feature.svg?style=svg)](https://circleci.com/gh/helloworld1812/beta_feature)
4
4
 
5
5
  **beta_feature** is a database-based feature flag tool for Ruby on Rails, which allows you check in incomplete features without affecting users.
6
6
 
@@ -33,6 +33,13 @@ Or install it yourself as:
33
33
  $ gem install beta_feature
34
34
 
35
35
 
36
+ Then, To make the engine's functionality accessible from within an application, it needs to be mounted in that application's config/routes.rb file:
37
+
38
+ ```ruby
39
+ mount BetaFeature::Engine, at: "/beta_feature"
40
+ ```
41
+
42
+
36
43
  Then, from your Rails app directory, run the following command to complete the setup.
37
44
 
38
45
 
@@ -112,13 +119,13 @@ The instance of Company will have the ability to toggle feature in company level
112
119
  company = Company.find(2)
113
120
 
114
121
  #enable the feature flag dark_mode for this company.
115
- user.enable_beta!(:dark_mode)
122
+ company.enable_beta!(:dark_mode)
116
123
 
117
124
  #remove the feature flag landing_page_ux_improvement from this company's feature flags.
118
- user.remove_beta!(:landing_page_ux_improvement)
125
+ company.remove_beta!(:landing_page_ux_improvement)
119
126
 
120
127
  # check whether a feature is active for this company.
121
- user.can_access_beta?(:dark_mode) # => true/false
128
+ company.can_access_beta?(:dark_mode) # => true/false
122
129
  ```
123
130
 
124
131
  Controll the logic based on feature flag.
@@ -171,7 +178,55 @@ dark_mode:
171
178
  user.can_access_beta?(:dark_mode) # => always return true
172
179
  ```
173
180
 
181
+ ## API
182
+
183
+ this engine provides three API for the frontend to list all available betas or toggle beta features for a paticular class.
184
+
185
+ ### List all available beta features in the beta_features.yml
186
+
187
+ GET /beta_feature/all
188
+
189
+ Response
190
+
191
+ ```json
192
+ {
193
+ "landing_page_ux_improvement": {
194
+ "developer": "ryan@corp.com",
195
+ "qa": "windy@corp.com",
196
+ "status": "in_progress",
197
+ "description": "This is a demo feature flag."
198
+ },
199
+ "dark_mode": {
200
+ "developer": "max@corp.com",
201
+ "qa": "daniel@corp.com",
202
+ "status": "in_progress",
203
+ "description": "Build dark mode on our website."
204
+ },
205
+ "custom_domain": {
206
+ "developer": "max@corp.com",
207
+ "qa": "daniel@corp.com",
208
+ "status": "released",
209
+ "description": "Support custom domain for Pro user."
210
+ }
211
+ }
212
+ ```
213
+
214
+ ### List all enabled beta features for a particular object.
215
+
216
+ GET /beta_feature/:object_class/:object_id/setting
174
217
 
218
+ ### toggle beta feature
219
+
220
+ PUT /beta_feature/:object_class/:object_id/setting
221
+
222
+ Parameter
223
+ ```json
224
+ {
225
+ "betas": {
226
+ "landing_page_ux_improvement": true,
227
+ "dark_mode": false
228
+ }
229
+ ```
175
230
 
176
231
  ## Alternative
177
232
 
data/Rakefile CHANGED
@@ -1,7 +1,12 @@
1
+ require "bundler/setup"
1
2
  require "bundler/gem_tasks"
2
3
  require "rspec/core/rake_task"
3
- require 'appraisal'
4
+
5
+ APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
6
+
7
+ load "rails/tasks/engine.rake"
8
+ load "rails/tasks/statistics.rake"
4
9
 
5
10
  RSpec::Core::RakeTask.new(:spec)
6
11
 
7
- task :default => :spec
12
+ task :default => :spec
@@ -0,0 +1,4 @@
1
+ module BetaFeature
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,9 @@
1
+ require_dependency "beta_feature/application_controller"
2
+
3
+ module BetaFeature
4
+ class ConfigurationsController < ApplicationController
5
+ def index
6
+ render json: BetaFeature.all_betas.to_json
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,59 @@
1
+ require_dependency "beta_feature/application_controller"
2
+
3
+ module BetaFeature
4
+ class SettingsController < ApplicationController
5
+ before_action :set_object
6
+
7
+ rescue_from ActiveRecord::RecordNotFound do |e|
8
+ msg = "Couldn't find this record: #{params[:object_class]}/#{params[:object_id]}"
9
+ render json: { error: msg }, status: :not_found
10
+ end
11
+
12
+ # GET /beta_feature/:object_class/:object_id/setting
13
+ def show
14
+ render json: {
15
+ object_class: @object_class,
16
+ object_id: @object_id,
17
+ betas: @object.all_betas
18
+ }
19
+ end
20
+
21
+ # PUT /beta_feature/:object_class/:object_id/setting
22
+ # Params:
23
+ # {
24
+ # betas: {
25
+ # custom_domain: true,
26
+ # dark_mode: false,
27
+ # ux_improvement_2021: true
28
+ # }
29
+ # }
30
+ def update
31
+ betas = params.permit![:betas]
32
+
33
+ enabled_betas = betas.select {|k, v| v.to_s == "true"}.keys
34
+ disabled_betas = betas.select {|k, v| v.to_s == "false"}.keys
35
+
36
+ @object.enable_beta!(*enabled_betas) if enabled_betas.present?
37
+ @object.remove_beta!(*disabled_betas) if disabled_betas.present?
38
+
39
+ render json: {
40
+ object_class: @object_class,
41
+ object_id: @object_id,
42
+ betas: @object.all_betas
43
+ }
44
+ end
45
+
46
+ private
47
+
48
+ def set_object
49
+ @object_class = params.require(:object_class)
50
+ @object_id = params.require(:object_id)
51
+
52
+ @klass = @object_class.constantize
53
+ @object = @klass.find(@object_id)
54
+ rescue NameError
55
+ msg = "class '#{params[:object_class]}' does not exist."
56
+ render json: { error: msg}, status: :unprocessable_entity
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,5 @@
1
+ module BetaFeature
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -1,16 +1,12 @@
1
-
2
1
  module BetaFeature
3
- class Setting < ::ActiveRecord::Base
4
- self.table_name = "beta_feature_settings"
5
-
2
+ class Setting < ApplicationRecord
6
3
  validates :betable_type, presence: true
7
4
  validates :betable_id, presence: true, uniqueness: { scope: :betable_type }
8
5
 
9
6
  belongs_to :betable, polymorphic: true
10
7
 
11
-
12
- def clean_invalid_betas!
13
- #TODO
8
+ def clean_invalid_betas
9
+ # TODO
14
10
  end
15
11
  end
16
- end
12
+ end
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Beta feature</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "beta_feature/application", media: "all" %>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ </body>
15
+ </html>
@@ -0,0 +1,10 @@
1
+ BetaFeature::Engine.routes.draw do
2
+ # list all beta features
3
+ get "all", to: 'configurations#index'
4
+
5
+ # list all betas of a particular object
6
+ get ":object_class/:object_id/setting", to: 'settings#show'
7
+
8
+ # toggle betas for a particular object
9
+ put ":object_class/:object_id/setting", to: 'settings#update'
10
+ end
@@ -0,0 +1,18 @@
1
+ class CreateBetaFeatureSettings < ActiveRecord::Migration[5.1]
2
+ def up
3
+ if !ActiveRecord::Base.connection.data_source_exists? 'beta_feature_settings'
4
+ create_table :beta_feature_settings, if_not_exists: true do |t|
5
+ t.bigint :betable_id, null: false
6
+ t.string :betable_type, null: false
7
+ t.string :betas, array: true, default: [], null: false
8
+ t.timestamps
9
+
10
+ t.index [:betable_type, :betable_id], unique: true
11
+ end
12
+ end
13
+ end
14
+
15
+ def down
16
+ drop_table :beta_feature_settings if ActiveRecord::Base.connection.data_source_exists? 'beta_feature_settings'
17
+ end
18
+ end
@@ -1,15 +1,11 @@
1
- require 'active_record'
2
- require 'active_support'
3
- require 'yaml'
4
-
5
1
  require "beta_feature/version"
6
- require "beta_feature/flagger"
7
- require "beta_feature/setting"
2
+ require "beta_feature/engine"
8
3
  require "beta_feature/error"
4
+ require "beta_feature/flagger"
9
5
 
10
6
  module BetaFeature
11
7
  def self.all_betas
12
- @@all_betas ||= YAML.load_file("#{Rails.root}/config/beta_features.yml")
8
+ @@all_betas ||= YAML.load_file("#{Rails.root}/config/beta_features.yml").with_indifferent_access
13
9
  end
14
10
 
15
11
  def self.in_progress
@@ -20,5 +16,3 @@ module BetaFeature
20
16
  @@released_betas ||= all_betas.select {|k, v| v["status"] == 'released'}
21
17
  end
22
18
  end
23
-
24
- ::ActiveRecord::Base.send :include, BetaFeature::Flagger
@@ -0,0 +1,25 @@
1
+ module BetaFeature
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace BetaFeature
4
+
5
+ initializer :append_migrations do |app|
6
+ unless app.root.to_s.match(root.to_s)
7
+ config.paths["db/migrate"].expanded.each do |expanded_path|
8
+ app.config.paths["db/migrate"] << expanded_path
9
+ end
10
+ end
11
+ end
12
+
13
+ config.generators do |g|
14
+ g.test_framework :rspec
15
+ g.fixture_replacement :factory_bot
16
+ g.factory_bot dir: 'spec/factories'
17
+ g.assets false
18
+ g.helper false
19
+ end
20
+
21
+ config.after_initialize do
22
+ ::ActiveRecord::Base.send :include, BetaFeature::Flagger
23
+ end
24
+ end
25
+ end
@@ -26,9 +26,8 @@ module BetaFeature
26
26
  def enable_beta!(*betas)
27
27
  betas = betas.map(&:to_s)
28
28
  validate_beta_name(*betas)
29
- betas = (find_or_create_beta_feature_setting.betas + betas).uniq
29
+ betas = clean_betas(find_or_create_beta_feature_setting.betas + betas)
30
30
  beta_feature_setting.update(betas: betas)
31
-
32
31
  flush_beta_cache
33
32
  end
34
33
 
@@ -36,8 +35,7 @@ module BetaFeature
36
35
  def remove_beta!(*betas)
37
36
  betas = betas.map(&:to_s)
38
37
  validate_beta_name(*betas)
39
-
40
- betas = (find_or_create_beta_feature_setting.betas - betas).uniq
38
+ betas = clean_betas(find_or_create_beta_feature_setting.betas - betas)
41
39
  beta_feature_setting.update(betas: betas)
42
40
 
43
41
  flush_beta_cache
@@ -45,7 +43,7 @@ module BetaFeature
45
43
 
46
44
  def all_betas
47
45
  @__all_betas__ ||= begin
48
- find_or_create_beta_feature_setting.betas.to_set + BetaFeature.released.keys.to_set
46
+ clean_betas(find_or_create_beta_feature_setting.betas + BetaFeature.released.keys).to_set
49
47
  end
50
48
  end
51
49
 
@@ -67,6 +65,12 @@ module BetaFeature
67
65
  def flush_beta_cache
68
66
  remove_instance_variable(:@__all_betas__) if defined? @__all_betas__
69
67
  end
68
+
69
+ def clean_betas(betas)
70
+ betas.map(&:to_s).uniq.compact.select{ |beta| BetaFeature.all_betas.key?(beta) }
71
+ end
70
72
  end
71
73
  end
72
- end
74
+ end
75
+
76
+ ::ActiveRecord::Base.send :include, BetaFeature::Flagger
@@ -1,3 +1,3 @@
1
1
  module BetaFeature
2
- VERSION = "0.1.2"
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,24 +1,13 @@
1
1
  require 'rails/generators'
2
- require 'rails/generators/migration'
3
- require 'active_record'
4
- require 'rails/generators/active_record'
5
- require 'generators/beta_feature/migration'
6
- require 'generators/beta_feature/migration_helper'
7
-
8
2
 
9
3
  module BetaFeature
10
4
  module Generators
11
5
  class InstallGenerator < Rails::Generators::Base
12
- include Rails::Generators::Migration
13
- include BetaFeature::Generators::MigrationHelper
14
- extend BetaFeature::Generators::Migration
15
-
16
6
  source_root File.expand_path("../templates", __FILE__)
17
7
 
18
8
  def copy_migrateion
19
- migration_template 'install.rb', 'db/migrate/install_beta_feature.rb'
20
9
  copy_file 'beta_features.yml', 'config/beta_features.yml'
21
10
  end
22
11
  end
23
12
  end
24
- end
13
+ end
@@ -14,5 +14,4 @@ custom_domain:
14
14
  developer: 'max@corp.com'
15
15
  qa: 'daniel@corp.com'
16
16
  status: released
17
- description: 'Support custom domain for Pro user.'
18
-
17
+ description: 'Support custom domain for Pro user.'
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :beta_feature do
3
+ # # Task goes here
4
+ # end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beta_feature
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Lv
8
- - Windy Liu
9
- autorequire:
10
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
11
10
  cert_chain: []
12
- date: 2020-04-20 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
@@ -17,22 +16,16 @@ dependencies:
17
16
  requirements:
18
17
  - - ">="
19
18
  - !ruby/object:Gem::Version
20
- version: '4.2'
21
- - - "<"
22
- - !ruby/object:Gem::Version
23
- version: '6.1'
19
+ version: '4.0'
24
20
  type: :runtime
25
21
  prerelease: false
26
22
  version_requirements: !ruby/object:Gem::Requirement
27
23
  requirements:
28
24
  - - ">="
29
25
  - !ruby/object:Gem::Version
30
- version: '4.2'
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '6.1'
26
+ version: '4.0'
34
27
  - !ruby/object:Gem::Dependency
35
- name: appraisal
28
+ name: rspec-rails
36
29
  requirement: !ruby/object:Gem::Requirement
37
30
  requirements:
38
31
  - - ">="
@@ -46,33 +39,33 @@ dependencies:
46
39
  - !ruby/object:Gem::Version
47
40
  version: '0'
48
41
  - !ruby/object:Gem::Dependency
49
- name: rspec
42
+ name: pg
50
43
  requirement: !ruby/object:Gem::Requirement
51
44
  requirements:
52
45
  - - ">="
53
46
  - !ruby/object:Gem::Version
54
- version: '3.0'
47
+ version: '0'
55
48
  type: :development
56
49
  prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
52
  - - ">="
60
53
  - !ruby/object:Gem::Version
61
- version: '3.0'
54
+ version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
- name: rspec-rails
56
+ name: factory_bot_rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
58
  requirements:
66
59
  - - ">="
67
60
  - !ruby/object:Gem::Version
68
- version: '3.5'
61
+ version: '0'
69
62
  type: :development
70
63
  prerelease: false
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
66
  - - ">="
74
67
  - !ruby/object:Gem::Version
75
- version: '3.5'
68
+ version: '0'
76
69
  - !ruby/object:Gem::Dependency
77
70
  name: pry
78
71
  requirement: !ruby/object:Gem::Requirement
@@ -87,68 +80,6 @@ dependencies:
87
80
  - - ">="
88
81
  - !ruby/object:Gem::Version
89
82
  version: '0'
90
- - !ruby/object:Gem::Dependency
91
- name: rake
92
- requirement: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 12.3.3
97
- type: :development
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: 12.3.3
104
- - !ruby/object:Gem::Dependency
105
- name: rubocop
106
- requirement: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: 0.54.0
111
- type: :development
112
- prerelease: false
113
- version_requirements: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: 0.54.0
118
- - !ruby/object:Gem::Dependency
119
- name: mysql2
120
- requirement: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 0.3.20
125
- type: :development
126
- prerelease: false
127
- version_requirements: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: 0.3.20
132
- - !ruby/object:Gem::Dependency
133
- name: pg
134
- requirement: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0.18'
139
- - - "<"
140
- - !ruby/object:Gem::Version
141
- version: '2.0'
142
- type: :development
143
- prerelease: false
144
- version_requirements: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- version: '0.18'
149
- - - "<"
150
- - !ruby/object:Gem::Version
151
- version: '2.0'
152
83
  description: Rails feature toggle for trunk based development.
153
84
  email:
154
85
  - tech@workstream.is
@@ -156,38 +87,25 @@ executables: []
156
87
  extensions: []
157
88
  extra_rdoc_files: []
158
89
  files:
159
- - ".gitignore"
160
- - ".rspec"
161
- - ".rubycop.yml"
162
- - ".travis.yml"
163
- - Appraisals
164
- - CHANGELOG.md
165
- - CODE_OF_CONDUCT.md
166
- - Gemfile
167
- - LICENSE.txt
90
+ - MIT-LICENSE
168
91
  - README.md
169
92
  - Rakefile
170
- - beta_feature.gemspec
171
- - bin/console
172
- - bin/setup
173
- - gemfiles/rails50.gemfile
174
- - gemfiles/rails50.gemfile.lock
175
- - gemfiles/rails51.gemfile
176
- - gemfiles/rails51.gemfile.lock
177
- - gemfiles/rails52.gemfile
178
- - gemfiles/rails52.gemfile.lock
179
- - gemfiles/rails60.gemfile
180
- - gemfiles/rails60.gemfile.lock
93
+ - app/controllers/beta_feature/application_controller.rb
94
+ - app/controllers/beta_feature/configurations_controller.rb
95
+ - app/controllers/beta_feature/settings_controller.rb
96
+ - app/models/beta_feature/application_record.rb
97
+ - app/models/beta_feature/setting.rb
98
+ - app/views/layouts/beta_feature/application.html.erb
99
+ - config/routes.rb
100
+ - db/migrate/20210102124824_create_beta_feature_settings.rb
181
101
  - lib/beta_feature.rb
102
+ - lib/beta_feature/engine.rb
182
103
  - lib/beta_feature/error.rb
183
104
  - lib/beta_feature/flagger.rb
184
- - lib/beta_feature/setting.rb
185
105
  - lib/beta_feature/version.rb
186
106
  - lib/generators/beta_feature/install_generator.rb
187
- - lib/generators/beta_feature/migration.rb
188
- - lib/generators/beta_feature/migration_helper.rb
189
107
  - lib/generators/beta_feature/templates/beta_features.yml
190
- - lib/generators/beta_feature/templates/install.rb
108
+ - lib/tasks/beta_feature_tasks.rake
191
109
  homepage: https://github.com/helloworld1812/beta_feature
192
110
  licenses:
193
111
  - MIT
@@ -195,7 +113,7 @@ metadata:
195
113
  homepage_uri: https://github.com/helloworld1812/beta_feature
196
114
  source_code_uri: https://github.com/helloworld1812/beta_feature
197
115
  changelog_uri: https://github.com/helloworld1812/beta_feature/blob/master/CHANGELOG.md
198
- post_install_message:
116
+ post_install_message:
199
117
  rdoc_options: []
200
118
  require_paths:
201
119
  - lib
@@ -203,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
121
  requirements:
204
122
  - - ">="
205
123
  - !ruby/object:Gem::Version
206
- version: 2.3.0
124
+ version: '0'
207
125
  required_rubygems_version: !ruby/object:Gem::Requirement
208
126
  requirements:
209
127
  - - ">="
@@ -211,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
129
  version: '0'
212
130
  requirements: []
213
131
  rubygems_version: 3.0.6
214
- signing_key:
132
+ signing_key:
215
133
  specification_version: 4
216
134
  summary: Rails feature toggle for trunk based development.
217
135
  test_files: []