simple_feature_flags 1.1.1 → 1.3.0

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: 64a488fbf34e74246e7256a469d99a257b6f20171f9e0f57c0f5186388937cc0
4
- data.tar.gz: 224dde8807aaf6aec346641e05106de0de0a88b3f0ba388e05bc51af93270664
3
+ metadata.gz: a84d6f21fb85142181cf9396572ffb07ba4cb6d1573064c3ea984ab339371ddc
4
+ data.tar.gz: ca84facde85a613ceb6ecd54a88139a5ff9996838d8463d607e2e8ef93a1ce8e
5
5
  SHA512:
6
- metadata.gz: 4596a45fc389a9235700db3b76260735f8a2ce71b0eb5bec19d8efb621ed842dc149c86246ab4701a5ee3d6205d99eb1f175a294e65ec028c8dc81373141391d
7
- data.tar.gz: a938f338faf71ff1048b88ca280f5800d530298873398840ced76231cad1a57501cfd58a424888769074e1a80657f758f5796403f7dda526581ca12a082752d1
6
+ metadata.gz: f74fb3b884d0523845038311ce962c5d41e24715f78f7580d1e45889c74eba9df1acd02ce37a6d6ac4e51208fb1d0b6dca0d76a097d90ebf8b367dbb46296996
7
+ data.tar.gz: e554a51da1a596189a62857ac4a4bf18ffac37578fece7680f5455222380763e4d1c55a952107b262955533cdfac8ebc7a0211f2c2378dad49d8768c7170da23
@@ -0,0 +1,74 @@
1
+ name: CI Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ 'main', 'develop' ]
6
+ pull_request:
7
+ branches: [ 'main', 'develop' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ services:
13
+ # Label used to access the service container
14
+ redis:
15
+ # Docker Hub image
16
+ image: redis
17
+ # Set health checks to wait until redis has started
18
+ options: >-
19
+ --health-cmd "redis-cli ping"
20
+ --health-interval 10s
21
+ --health-timeout 5s
22
+ --health-retries 5
23
+ ports:
24
+ # Maps port 6379 on service container to the host
25
+ - 6379:6379
26
+ env:
27
+ CI: true
28
+ # The hostname used to communicate with the Redis service container
29
+ REDIS_HOST: localhost
30
+ # The default Redis port
31
+ REDIS_PORT: 6379
32
+ strategy:
33
+ matrix:
34
+ ruby-version: ['3.1', '3.2', '3.3']
35
+ steps:
36
+ - name: Checkout code
37
+ uses: actions/checkout@v3
38
+ - name: Install Ruby and gems
39
+ uses: ruby/setup-ruby@v1
40
+ with:
41
+ ruby-version: ${{ matrix.ruby-version }}
42
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
43
+ - name: Run unit tests
44
+ run: bundle exec rake test
45
+
46
+ lint:
47
+ runs-on: ubuntu-latest
48
+ env:
49
+ CI: true
50
+ steps:
51
+ - name: Checkout code
52
+ uses: actions/checkout@v3
53
+ - name: Install Ruby and gems
54
+ uses: ruby/setup-ruby@v1
55
+ with:
56
+ ruby-version: '3.3'
57
+ bundler-cache: true
58
+ - name: Lint Ruby files
59
+ run: bundle exec rubocop --parallel
60
+
61
+ typecheck:
62
+ runs-on: ubuntu-latest
63
+ env:
64
+ CI: true
65
+ steps:
66
+ - name: Checkout code
67
+ uses: actions/checkout@v3
68
+ - name: Install Ruby and gems
69
+ uses: ruby/setup-ruby@v1
70
+ with:
71
+ ruby-version: '3.3'
72
+ bundler-cache: true
73
+ - name: Typecheck Ruby files
74
+ run: bundle exec srb tc
data/.gitignore CHANGED
@@ -6,5 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /.vscode
9
10
  .byebug_history
10
11
  my_examples
data/.rubocop.yml CHANGED
@@ -1,78 +1,32 @@
1
- Style/StringLiterals:
2
- Enabled: false
3
-
4
- Style/SingleArgumentDig:
5
- Enabled: false
6
-
7
- Layout/LineLength:
8
- Enabled: false
1
+ inherit_gem:
2
+ rubocop-espago: sorbet.yml
9
3
 
10
- Style/Documentation:
4
+ Metrics/MethodLength:
11
5
  Enabled: false
12
6
 
13
- Style/ClassAndModuleChildren:
14
- Enabled: false
15
-
16
- Style/MethodCallWithArgsParentheses:
17
- Enabled: false
18
-
19
- Style/ModuleFunction:
20
- EnforcedStyle: 'extend_self'
21
-
22
- Style/MissingElse:
7
+ Sorbet/RedundantExtendTSig:
23
8
  Enabled: false
24
9
 
25
- Lint/NumberConversion:
10
+ Sorbet/HasSigil:
26
11
  Enabled: false
27
12
 
28
- Lint/ConstantResolution:
13
+ Metrics/ClassLength:
29
14
  Enabled: false
30
15
 
31
- Style/RescueStandardError:
32
- Enabled: false
33
-
34
- Style/FormatStringToken:
35
- Enabled: false
36
-
37
- Style/FormatString:
38
- Enabled: false
39
-
40
- Style/DocumentationMethod:
41
- Enabled: false
42
-
43
- Style/Copyright:
44
- Enabled: false
45
-
46
- Style/StringHashKeys:
47
- Enabled: false
48
-
49
- Style/InlineComment:
50
- Enabled: false
51
-
52
- Layout/FirstHashElementLineBreak:
53
- Enabled: false
54
-
55
- Layout/FirstMethodArgumentLineBreak:
56
- Enabled: false
57
-
58
- Style/ConstantVisibility:
59
- Enabled: false
60
-
61
- Layout/FirstArrayElementLineBreak:
62
- Enabled: false
63
-
64
- Layout/MultilineMethodArgumentLineBreaks:
65
- Enabled: false
16
+ Sorbet/EnforceSignatures:
17
+ Exclude:
18
+ - 'bin/*'
19
+ - 'test/**/*'
66
20
 
67
- Layout/MultilineAssignmentLayout:
21
+ Sorbet/ForbidTUnsafe:
68
22
  Enabled: false
69
23
 
70
- Bundler/GemComment:
24
+ Naming/BlockForwarding:
71
25
  Enabled: false
72
26
 
73
27
  AllCops:
28
+ TargetRubyVersion: 3.1.0
74
29
  EnabledByDefault: true
75
30
  Exclude:
76
31
  - 'bin/*'
77
- - 'spec/**/*'
78
- - 'test/**/*'
32
+ - 'sorbet/**/*'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.4
1
+ 3.3.6
@@ -13,5 +13,9 @@
13
13
  "optparse",
14
14
  "solargraph",
15
15
  "testtask"
16
- ]
16
+ ],
17
+ "sorbet.enabled": true,
18
+ "[ruby]": {
19
+ "editor.defaultFormatter": "Shopify.ruby-lsp"
20
+ }
17
21
  }
data/Gemfile CHANGED
@@ -1,6 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in simple_feature_flags.gemspec
6
6
  gemspec
7
+
8
+ gem 'byebug', '~> 11.1' # debugger
9
+ gem 'minitest', '~> 5.0' # test library
10
+ gem 'rake', '~> 13.0' # automation tasks
11
+ gem 'redis', '~> 5.3' # redis client
12
+ gem 'redis-namespace', '~> 1.11' # namespaces for redis
13
+ gem 'rubocop-espago', '~> 1.0' # ruby linter
14
+ gem 'rubocop-sorbet', '~> 0.8' # rubocop for sorbet
15
+ gem 'sorbet', '>= 0.5' # static typechecker
16
+ gem 'tapioca', '> 0.13' # RBI generator for sorbet
data/Gemfile.lock CHANGED
@@ -1,89 +1,101 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_feature_flags (1.1.1)
4
+ simple_feature_flags (1.3.0)
5
+ sorbet-runtime (> 0.5)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  ast (2.4.2)
10
- backport (1.2.0)
11
- benchmark (0.1.1)
12
- bundler-audit (0.8.0)
13
- bundler (>= 1.2.0, < 3)
14
- thor (~> 1.0)
15
11
  byebug (11.1.3)
16
- diff-lcs (1.4.4)
17
- e2mmap (0.1.0)
18
- jaro_winkler (1.5.4)
19
- kramdown (2.3.1)
20
- rexml
21
- kramdown-parser-gfm (1.1.0)
22
- kramdown (~> 2.0)
23
- mini_portile2 (2.6.1)
24
- minitest (5.14.4)
25
- nokogiri (1.12.3)
26
- mini_portile2 (~> 2.6.1)
27
- racc (~> 1.4)
28
- parallel (1.20.1)
29
- parser (3.0.2.0)
12
+ connection_pool (2.4.1)
13
+ erubi (1.13.0)
14
+ json (2.8.2)
15
+ language_server-protocol (3.17.0.3)
16
+ minitest (5.25.1)
17
+ netrc (0.11.0)
18
+ parallel (1.26.3)
19
+ parser (3.3.6.0)
30
20
  ast (~> 2.4.1)
31
- racc (1.5.2)
32
- rainbow (3.0.0)
33
- rake (12.3.3)
34
- redis (4.4.0)
35
- redis-namespace (1.8.1)
36
- redis (>= 3.0.4)
37
- regexp_parser (2.1.1)
38
- reverse_markdown (2.0.0)
39
- nokogiri
40
- rexml (3.2.5)
41
- rubocop (1.19.0)
21
+ racc
22
+ prism (1.2.0)
23
+ racc (1.8.1)
24
+ rainbow (3.1.1)
25
+ rake (13.2.1)
26
+ rbi (0.2.1)
27
+ prism (~> 1.0)
28
+ sorbet-runtime (>= 0.5.9204)
29
+ redis (5.3.0)
30
+ redis-client (>= 0.22.0)
31
+ redis-client (0.22.2)
32
+ connection_pool
33
+ redis-namespace (1.11.0)
34
+ redis (>= 4)
35
+ regexp_parser (2.9.2)
36
+ rubocop (1.68.0)
37
+ json (~> 2.3)
38
+ language_server-protocol (>= 3.17.0)
42
39
  parallel (~> 1.10)
43
- parser (>= 3.0.0.0)
40
+ parser (>= 3.3.0.2)
44
41
  rainbow (>= 2.2.2, < 4.0)
45
- regexp_parser (>= 1.8, < 3.0)
46
- rexml
47
- rubocop-ast (>= 1.9.1, < 2.0)
42
+ regexp_parser (>= 2.4, < 3.0)
43
+ rubocop-ast (>= 1.32.2, < 2.0)
48
44
  ruby-progressbar (~> 1.7)
49
- unicode-display_width (>= 1.4.0, < 3.0)
50
- rubocop-ast (1.9.1)
51
- parser (>= 3.0.1.1)
52
- ruby-progressbar (1.11.0)
53
- solargraph (0.43.0)
54
- backport (~> 1.2)
55
- benchmark
56
- bundler (>= 1.17.2)
57
- diff-lcs (~> 1.4)
58
- e2mmap
59
- jaro_winkler (~> 1.5)
60
- kramdown (~> 2.3)
61
- kramdown-parser-gfm (~> 1.1)
62
- parser (~> 3.0)
63
- reverse_markdown (>= 1.0.5, < 3)
64
- rubocop (>= 0.52)
65
- thor (~> 1.0)
66
- tilt (~> 2.0)
67
- yard (~> 0.9, >= 0.9.24)
68
- thor (1.1.0)
69
- tilt (2.0.10)
70
- unicode-display_width (2.0.0)
71
- yard (0.9.26)
45
+ unicode-display_width (>= 2.4.0, < 3.0)
46
+ rubocop-ast (1.36.1)
47
+ parser (>= 3.3.1.0)
48
+ rubocop-espago (1.1.5)
49
+ rubocop
50
+ rubocop-sorbet (0.8.7)
51
+ rubocop (>= 1)
52
+ ruby-progressbar (1.13.0)
53
+ sorbet (0.5.11647)
54
+ sorbet-static (= 0.5.11647)
55
+ sorbet-runtime (0.5.11647)
56
+ sorbet-static (0.5.11647-aarch64-linux)
57
+ sorbet-static (0.5.11647-universal-darwin)
58
+ sorbet-static (0.5.11647-x86_64-linux)
59
+ sorbet-static-and-runtime (0.5.11647)
60
+ sorbet (= 0.5.11647)
61
+ sorbet-runtime (= 0.5.11647)
62
+ spoom (1.5.0)
63
+ erubi (>= 1.10.0)
64
+ prism (>= 0.28.0)
65
+ sorbet-static-and-runtime (>= 0.5.10187)
66
+ thor (>= 0.19.2)
67
+ tapioca (0.16.4)
68
+ bundler (>= 2.2.25)
69
+ netrc (>= 0.11.0)
70
+ parallel (>= 1.21.0)
71
+ rbi (~> 0.2)
72
+ sorbet-static-and-runtime (>= 0.5.11087)
73
+ spoom (>= 1.2.0)
74
+ thor (>= 1.2.0)
75
+ yard-sorbet
76
+ thor (1.3.2)
77
+ unicode-display_width (2.6.0)
78
+ yard (0.9.37)
79
+ yard-sorbet (0.9.0)
80
+ sorbet-runtime
81
+ yard
72
82
 
73
83
  PLATFORMS
74
- ruby
84
+ aarch64-linux
85
+ universal-darwin
86
+ x86_64-linux
75
87
 
76
88
  DEPENDENCIES
77
- bundler
78
- bundler-audit
79
- byebug
89
+ byebug (~> 11.1)
80
90
  minitest (~> 5.0)
81
- rake (~> 12.0)
82
- redis
83
- redis-namespace
84
- rubocop
91
+ rake (~> 13.0)
92
+ redis (~> 5.3)
93
+ redis-namespace (~> 1.11)
94
+ rubocop-espago (~> 1.0)
95
+ rubocop-sorbet (~> 0.8)
85
96
  simple_feature_flags!
86
- solargraph
97
+ sorbet (>= 0.5)
98
+ tapioca (> 0.13)
87
99
 
88
100
  BUNDLED WITH
89
- 2.1.4
101
+ 2.5.22
data/README.md CHANGED
@@ -136,11 +136,19 @@ FEATURE_FLAGS.active?(:feature_name) #=> false
136
136
  FEATURE_FLAGS.active_globally?(:feature_name) #=> false
137
137
  FEATURE_FLAGS.active_partially?(:feature_name) #=> false
138
138
 
139
+ FEATURE_FLAGS.inactive?(:feature_name) #=> true
140
+ FEATURE_FLAGS.inactive_globally?(:feature_name) #=> true
141
+ FEATURE_FLAGS.inactive_partially?(:feature_name) #=> true
142
+
139
143
  FEATURE_FLAGS.activate(:feature_name) # or FEATURE_FLAGS.activate_globally(:feature_name)
140
144
 
141
145
  FEATURE_FLAGS.active?(:feature_name) #=> true
142
146
  FEATURE_FLAGS.active_globally?(:feature_name) #=> true
143
147
  FEATURE_FLAGS.active_partially?(:feature_name) #=> false
148
+
149
+ FEATURE_FLAGS.inactive?(:feature_name) #=> false
150
+ FEATURE_FLAGS.inactive_globally?(:feature_name) #=> false
151
+ FEATURE_FLAGS.inactive_partially?(:feature_name) #=> true
144
152
  ```
145
153
 
146
154
  #### Deactivate a feature
@@ -149,10 +157,12 @@ Deactivates a feature in the global scope
149
157
 
150
158
  ```ruby
151
159
  FEATURE_FLAGS.active?(:feature_name) #=> true
160
+ FEATURE_FLAGS.inactive?(:feature_name) #=> false
152
161
 
153
162
  FEATURE_FLAGS.deactivate(:feature_name)
154
163
 
155
164
  FEATURE_FLAGS.active?(:feature_name) #=> false
165
+ FEATURE_FLAGS.inactive?(:feature_name) #=> true
156
166
  ```
157
167
 
158
168
  #### Activate a feature for a particular record/object
@@ -162,11 +172,19 @@ FEATURE_FLAGS.active_partially?(:feature_name) #=> true
162
172
  FEATURE_FLAGS.active_for?(:feature_name, User.first) #=> false
163
173
  FEATURE_FLAGS.active_for?(:feature_name, User.last) #=> false
164
174
 
175
+ FEATURE_FLAGS.inactive_partially?(:feature_name) #=> false
176
+ FEATURE_FLAGS.inactive_for?(:feature_name, User.first) #=> true
177
+ FEATURE_FLAGS.inactive_for?(:feature_name, User.last) #=> true
178
+
165
179
  FEATURE_FLAGS.activate_for(:feature_name, User.first) #=> true
166
180
 
167
181
  FEATURE_FLAGS.active_partially?(:feature_name) #=> true
168
182
  FEATURE_FLAGS.active_for?(:feature_name, User.first) #=> true
169
183
  FEATURE_FLAGS.active_for?(:feature_name, User.last) #=> false
184
+
185
+ FEATURE_FLAGS.inactive_partially?(:feature_name) #=> false
186
+ FEATURE_FLAGS.inactive_for?(:feature_name, User.first) #=> false
187
+ FEATURE_FLAGS.inactive_for?(:feature_name, User.last) #=> true
170
188
  ```
171
189
 
172
190
  Note that the flag itself has to be active `partially` for any record/object specific settings to work.
@@ -299,6 +317,10 @@ if FEATURE_FLAGS.active?(:feature_name)
299
317
  number += 1
300
318
  end
301
319
 
320
+ if FEATURE_FLAGS.inactive?(:feature_name)
321
+ number += 1
322
+ end
323
+
302
324
  # or using a block
303
325
 
304
326
  # this code will run only when the :feature_name flag is active (either partially or globally)
@@ -306,27 +328,52 @@ FEATURE_FLAGS.when_active(:feature_name) do
306
328
  number += 1
307
329
  end
308
330
 
331
+ # the opposite
332
+ FEATURE_FLAGS.when_inactive(:feature_name) do
333
+ number += 1
334
+ end
335
+
309
336
  # this code will run only when the :feature_name flag is active globally
310
337
  FEATURE_FLAGS.when_active_globally(:feature_name) do
311
338
  number += 1
312
339
  end
313
340
 
341
+ # the opposite
342
+ FEATURE_FLAGS.when_inactive_globally(:feature_name) do
343
+ number += 1
344
+ end
345
+
314
346
  # this code will run only when the :feature_name flag is active partially (only for specific records/users)
315
347
  FEATURE_FLAGS.when_active_partially(:feature_name) do
316
348
  number += 1
317
349
  end
318
350
 
319
- # this code will run only if the :feature_name flag is active partially for the first User
351
+ # the opposite
352
+ FEATURE_FLAGS.when_inactive_partially(:feature_name) do
353
+ number += 1
354
+ end
355
+
356
+ # this code will run only if the :feature_name flag is active for the first User
320
357
  FEATURE_FLAGS.when_active_for(:feature_name, User.first) do
321
358
  number += 1
322
359
  end
323
360
 
361
+ # the opposite
362
+ FEATURE_FLAGS.when_inactive_for(:feature_name, User.first) do
363
+ number += 1
364
+ end
365
+
324
366
  # feature flags that don't exist will return false
325
367
  FEATURE_FLAGS.active?(:non_existant) #=> false
368
+ FEATURE_FLAGS.inactive?(:non_existant) #=> true
326
369
 
327
370
  if FEATURE_FLAGS.active_for?(:feature_name, User.first)
328
371
  number += 1
329
372
  end
373
+
374
+ if FEATURE_FLAGS.inactive_for?(:feature_name, User.first)
375
+ number += 1
376
+ end
330
377
  ```
331
378
 
332
379
  #### Adding feature flags
@@ -340,7 +387,7 @@ FEATURE_FLAGS.add(:feature_name, 'Description')
340
387
  FEATURE_FLAGS.active?(:feature_name) #=> false
341
388
  FEATURE_FLAGS.active_partially?(:feature_name) #=> false
342
389
  FEATURE_FLAGS.active_globally?(:feature_name) #=> false
343
- FEATURE_FLAGS.active_for?(:feature_active_partially, User.first) #=> false
390
+ FEATURE_FLAGS.active_for?(:feature_name, User.first) #=> false
344
391
 
345
392
  # add a new globally active flag
346
393
  FEATURE_FLAGS.add(:active_feature, 'Description', :globally)
@@ -370,6 +417,10 @@ FEATURE_FLAGS.remove(:feature_name)
370
417
  FEATURE_FLAGS.active?(:feature_name) #=> false
371
418
  FEATURE_FLAGS.active_partially?(:feature_name) #=> false
372
419
  FEATURE_FLAGS.active_globally?(:feature_name) #=> false
420
+
421
+ FEATURE_FLAGS.inactive?(:feature_name) #=> true
422
+ FEATURE_FLAGS.inactive_partially?(:feature_name) #=> true
423
+ FEATURE_FLAGS.inactive_globally?(:feature_name) #=> true
373
424
  ```
374
425
 
375
426
 
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rake/testtask"
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
5
 
6
6
  Rake::TestTask.new(:test) do |t|
7
- t.libs << "test"
8
- t.libs << "lib"
9
- t.test_files = FileList["test/**/*_test.rb"]
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
10
  end
11
11
 
12
12
  task default: :test
data/bin/tapioca ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'tapioca' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("tapioca", "tapioca")
data/bin/test ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle exec rubocop --parallel --color
7
+ bundle exec srb tc
8
+ bundle exec rake test
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Redis has 16 DBs (0 to 15)
3
4
 
4
5
  FEATURE_FLAGS = if ::Rails.env.test?
5
6
  # Use RamStorage in tests to make them faster
6
- ::SimpleFeatureFlags::RamStorage.new("#{::Rails.root.to_s}/config/simple_feature_flags.yml")
7
+ ::SimpleFeatureFlags::RamStorage.new("#{::Rails.root}/config/simple_feature_flags.yml")
7
8
  else
8
- redis = ::Redis.new(host: '127.0.0.1', port: 6379, db: 0)
9
+ redis = ::Redis.new(host: '127.0.0.1', port: 6379, db: 0) # rubocop:disable Style/IpAddresses
9
10
  # We recommend using the `redis-namespace` gem to avoid key conflicts with Sidekiq or Resque
10
11
  # redis = ::Redis::Namespace.new(:simple_feature_flags, redis: redis)
11
12
 
12
- ::SimpleFeatureFlags::RedisStorage.new(redis, "#{::Rails.root.to_s}/config/simple_feature_flags.yml")
13
+ ::SimpleFeatureFlags::RedisStorage.new(redis, "#{::Rails.root}/config/simple_feature_flags.yml")
13
14
  end