remote_config 1.0.0.pre.beta.1 → 1.0.0.pre.beta.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31d21488e0ffa05436025e157209cc9d44dc1e3fabb307a2e9d71c220bdb7069
4
- data.tar.gz: 0bd6482ddcbdb2ab5abe5286997ea029134f46b42bd5a1f695206904634c3bc1
3
+ metadata.gz: fc66fc47eae896e43f629b96329258ec51f1559f59cdbefc7eab008545ce93ab
4
+ data.tar.gz: 8c5898ef0c3c52e2ff78ed2617b8fc8ab8752c79dfe31df59bca1f0af307f7ff
5
5
  SHA512:
6
- metadata.gz: 164e299f5dcd5585d136d3aafecb8d49d98a8555ec0330de972803fe798c2e763c76c6af188c8f24468890f36407aa04fc3a7c241129738315eee2b49f0dda80
7
- data.tar.gz: 51a8988537d414973c5a3473a0aaaba25c0458ccc39352f565d2b0edd075866437409f3add830a3e2377a95f7819db8dbddd5826810979e6ec9ed5e482f5d304
6
+ metadata.gz: e7fed882be9d6deb0042c82acd8c0c657a055ff43080b4331cd4264439c6ba68321b66ae3be93b8a858bf40d4707869a8e0862e5c424afd2eb5d9b1e06215af3
7
+ data.tar.gz: 8b395cd921bccb4906f22c4945f5d3e33e22df8897f47db63d496f578952f07648a7d055e002db16b229cfc7563106a1e11ca3a005e2f6eed67d6ebecad9baf0
data/README.md CHANGED
@@ -4,6 +4,27 @@ A gem for managing feature and release flags in the backend and providing them r
4
4
 
5
5
  ## Usage
6
6
 
7
+ Add the following lines to your Gemfile:
8
+
9
+ ```rb
10
+ gem "config"
11
+ gem "remote_config"
12
+ ```
13
+
14
+ Run the Config gem's install generator:
15
+
16
+ ```sh
17
+ rails g config:install
18
+ ```
19
+
20
+ Run this gem's install generator:
21
+
22
+ ```sh
23
+ rails g remote_config:install
24
+ ```
25
+
26
+ With a default Config gem setup you should be good to go! Review the `app/config/remote_config` initializer and make sure the release stages make sense for your setup.
27
+
7
28
  ### Feature Flagging
8
29
 
9
30
  Flagging allows checking of config values and doing different things based on their boolean value.
@@ -88,7 +109,7 @@ By default the feature flagging looks for values under under `features` and rele
88
109
  If you want to nest a flag under another, for example, you have a `coffee_ordering` release flag and you want to add a `coffee_ordernig.pre_pay` release flag. Then you can nest the new flag under the old one and add a `_` key underneath it for it's own value, e.g:
89
110
 
90
111
  ```yml
91
- releases:
112
+ release_flags:
92
113
  coffee_ordering:
93
114
  _: uat
94
115
  pre_pay: development
@@ -98,7 +119,7 @@ releases:
98
119
  An example `app/config/settings.yml` might look like:
99
120
 
100
121
  ```yml
101
- releases:
122
+ release_flags:
102
123
  loyalty: uat
103
124
  coffee_ordering:
104
125
  _: production
@@ -109,14 +130,6 @@ releases:
109
130
  v3:
110
131
  _: development
111
132
 
112
- features:
133
+ feature_flags:
113
134
  pay_in_car: true
114
135
  ```
115
-
116
- NOTE: it may be useful to split out your releases and features YML into different files and load them in.
117
-
118
- `app/config/releases.yml`
119
- `app/config/features.yml`
120
-
121
- TODO: provide ruby snippet of how to set this up in the initializers
122
-
data/bin/rails CHANGED
@@ -3,7 +3,7 @@
3
3
  # installed from the root of your application.
4
4
 
5
5
  ENGINE_ROOT = File.expand_path("..", __dir__)
6
- ENGINE_PATH = File.expand_path("../lib/remote-config/engine", __dir__)
6
+ ENGINE_PATH = File.expand_path("../lib/remote_config/engine", __dir__)
7
7
  APP_PATH = File.expand_path("../spec/rails_app/config/application", __dir__)
8
8
 
9
9
  # Set up gems listed in the Gemfile.
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RemoteConfig
4
+ module Generators
5
+ # Adapter for fetching feature and release flags from a set up config using
6
+ # the Config gem (see https://github.com/rubyconfig/config).
7
+ class InstallGenerator < ::Rails::Generators::Base
8
+ desc "Generates a custom Rails RemoteConfig initializer file."
9
+
10
+ # rubocop:disable Naming/MemoizedInstanceVariableName
11
+ def self.source_root
12
+ @_config_source_root ||= File.expand_path("templates", __dir__)
13
+ end
14
+ # rubocop:enable Naming/MemoizedInstanceVariableName
15
+
16
+ def copy_initializer
17
+ template "remote_config.rb", "config/initializers/remote_config.rb"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ RemoteConfig.configure do |config|
4
+ # Overwrite to change the adapter to fetch the flags from a different source.
5
+ # Currently, the gem only comes with the RubyConfigAdapter.
6
+ config.adapter = RemoteConfig::Adapters::RubyConfigAdapter
7
+
8
+ # Options to be provided to the specific adapters initialization.
9
+ config.adapter_options = {
10
+ const_name: "Settings",
11
+ feature_flags_key: "feature_flags",
12
+ release_flags_key: "release_flags"
13
+ }
14
+
15
+ # Defines the release stages that are used to check release flags for their
16
+ # current environments release status.
17
+ #
18
+ # A release flag is true if the current environment is in the release stage
19
+ # configured for the flag.
20
+ # e.g.
21
+ # - if you have a release stage uat: [:uat, :dev, :development]
22
+ # - and release flag "coffee.pre_pay" is configured to "uat"
23
+ # - then it will return true when the Rails.env is either uat, dev or development
24
+ # - and it will return false on other environments, e.g. production, staging
25
+ config.release_stages = {
26
+ production: %i[production development],
27
+ development: %i[development]
28
+ }
29
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RemoteConfig
4
- VERSION = "1.0.0-beta.1"
4
+ VERSION = "1.0.0-beta.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.1
4
+ version: 1.0.0.pre.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Montgomery Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-14 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Remote Config for Ruby on Rails
14
14
  email: montgomery.c.anderson@gmail.com
@@ -28,6 +28,8 @@ files:
28
28
  - app/models/remote_config/application_record.rb
29
29
  - bin/rails
30
30
  - config/routes.rb
31
+ - lib/generators/remote_config/install_generator.rb
32
+ - lib/generators/remote_config/templates/remote_config.rb
31
33
  - lib/remote_config.rb
32
34
  - lib/remote_config/adapters/base.rb
33
35
  - lib/remote_config/adapters/ruby_config_adapter.rb