Skip to content

Commit 2a58ddc

Browse files
authored
Merge pull request #912 from flippercloud/delegation
Fix all the warnings and turn them on for CI
2 parents 3683318 + ed49fca commit 2a58ddc

31 files changed

+69
-62
lines changed

Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ gem 'mysql2'
3131
gem 'pg'
3232
gem 'cuprite'
3333
gem 'puma'
34+
gem 'warning'
3435

3536
group(:guard) do
3637
gem 'guard'

Guardfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ rspec_options = {
1010
all_after_pass: false,
1111
all_on_start: false,
1212
failed_mode: :keep,
13-
cmd: 'bundle exec rspec',
13+
cmd: 'bundle exec ruby -w $(which rspec)',
1414
}
1515

1616
guard 'rspec', rspec_options do

lib/flipper/adapters/http/error.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def initialize(response)
2020
if more_info = data["more_info"]
2121
message << "\n#{data["more_info"]}"
2222
end
23-
rescue => exception
23+
rescue
2424
# welp we tried
2525
end
2626

lib/flipper/adapters/poll.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def initialize(poller, adapter)
2525
if adapter.features.empty?
2626
begin
2727
@poller.sync
28-
rescue => error
28+
rescue
2929
# TODO: Warn here that it's possible that no data has been synced
3030
# and flags are being evaluated without flag data being present
3131
# until a sync completes. We rescue to avoid flipper being down

lib/flipper/api/v1/actions/expression_gate.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def post
1818
feature.enable_expression expression
1919
decorated_feature = Decorators::Feature.new(feature)
2020
json_response(decorated_feature.as_json, 200)
21-
rescue NameError, ArgumentError => exception
21+
rescue NameError, ArgumentError
2222
json_error_response(:expression_invalid)
2323
end
2424
end

lib/flipper/cloud/configuration.rb

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
require "flipper/adapters/http"
44
require "flipper/adapters/poll"
55
require "flipper/poller"
6-
require "flipper/adapters/memory"
76
require "flipper/adapters/dual_write"
87
require "flipper/adapters/sync/synchronizer"
98
require "flipper/cloud/telemetry"

lib/flipper/export.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require "flipper/adapters/memory"
2-
31
module Flipper
42
class Export
53
attr_reader :contents, :format, :version

lib/flipper/expressions/all.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require "flipper/expression"
2-
31
module Flipper
42
module Expressions
53
class All

lib/flipper/feature.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,14 @@ def clear
100100
#
101101
# Returns true if enabled, false if not.
102102
def enabled?(*actors)
103-
# Allows null object pattern. See PR for more.
104-
# https://github.com/flippercloud/flipper/pull/887
105-
actors = actors.flatten.reject(&:nil?).map { |actor| Types::Actor.wrap(actor) }
103+
actors = Array(actors).
104+
# Avoids to_ary warning that happens when passing DelegateClass of an
105+
# ActiveRecord object and using flatten here. This is tested in
106+
# spec/flipper/model/active_record_spec.rb.
107+
flat_map { |actor| actor.is_a?(Array) ? actor : [actor] }.
108+
# Allows null object pattern. See PR for more. https://github.com/flippercloud/flipper/pull/887
109+
reject(&:nil?).
110+
map { |actor| Types::Actor.wrap(actor) }
106111
actors = nil if actors.empty?
107112

108113
# thing is left for backwards compatibility

lib/flipper/instrumentation/log_subscriber.rb

-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ def adapter_operation(event)
5353

5454
feature_name = event.payload[:feature_name]
5555
adapter_name = event.payload[:adapter_name]
56-
gate_name = event.payload[:gate_name]
5756
operation = event.payload[:operation]
5857
result = event.payload[:result]
5958

lib/flipper/instrumentation/statsd.rb

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
require 'active_support/notifications'
33
require 'flipper/instrumentation/statsd_subscriber'
44

5-
ActiveSupport::Notifications.subscribe /\.flipper$/,
6-
Flipper::Instrumentation::StatsdSubscriber
5+
ActiveSupport::Notifications.subscribe(
6+
/\.flipper$/,
7+
Flipper::Instrumentation::StatsdSubscriber
8+
)

lib/flipper/instrumentation/subscriber.rb

-4
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ def update
4242
# Private
4343
def update_feature_operation_metrics
4444
feature_name = @payload[:feature_name]
45-
gate_name = @payload[:gate_name]
4645
operation = strip_trailing_question_mark(@payload[:operation])
4746
result = @payload[:result]
4847

@@ -64,9 +63,6 @@ def update_feature_operation_metrics
6463
def update_adapter_operation_metrics
6564
adapter_name = @payload[:adapter_name]
6665
operation = @payload[:operation]
67-
result = @payload[:result]
68-
value = @payload[:value]
69-
key = @payload[:key]
7066

7167
update_timer "flipper.adapter.#{adapter_name}.#{operation}"
7268
end

lib/flipper/poller.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ def stop
5959
def run
6060
loop do
6161
sleep jitter
62-
start = Concurrent.monotonic_time
62+
6363
begin
6464
sync
65-
rescue => exception
65+
rescue
6666
# you can instrument these using poller.flipper
6767
end
6868

lib/flipper/ui/configuration.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ module UI
55
class Configuration
66
attr_reader :delete
77

8-
attr_accessor :banner_text,
9-
:banner_class
8+
attr_accessor :banner_text
9+
attr_reader :banner_class
1010

1111
# Public: Is the UI in read only mode or not. Default is false. This
1212
# supersedes all other write-related options such as

lib/flipper/ui/views/layout.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!DOCTYPE html>
22
<html lang="en">
33
<head>
4-
<title><%= @page_title ? "#{@page_title} // " : "" %>Flipper</title>
4+
<title><%= defined?(@page_title) ? "#{@page_title} // " : "" %>Flipper</title>
55
<meta charset="utf-8">
66
<meta http-equiv="X-UA-Compatible" content="IE=edge">
77
<meta name="viewport" content="width=device-width, initial-scale=1">

spec/flipper/adapters/active_record_spec.rb

+7-4
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99

1010
before(:all) do
1111
# Eval migration template so we can run migration against each database
12-
migration = ERB.new(File.read(File.join(File.dirname(__FILE__), '../../../lib/generators/flipper/templates/migration.erb')))
12+
template_path = File.join(File.dirname(__FILE__), '../../../lib/generators/flipper/templates/migration.erb')
13+
migration = ERB.new(File.read(template_path))
1314
migration_version = "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
14-
eval migration.result(binding) # defines CreateFlipperTables
15+
eval migration.result_with_hash(migration_version: migration_version) # defines CreateFlipperTables
1516
end
1617

1718
[
@@ -52,8 +53,10 @@
5253
end
5354

5455
before(:each) do
55-
ActiveRecord::Tasks::DatabaseTasks.purge(config)
56-
CreateFlipperTables.migrate(:up)
56+
silence do
57+
ActiveRecord::Tasks::DatabaseTasks.purge(config)
58+
CreateFlipperTables.migrate(:up)
59+
end
5760
end
5861

5962
after(:all) do

spec/flipper/adapters/http_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
end
2929

3030
before :all do
31+
@started = false
3132
dir = FlipperRoot.join('tmp').tap(&:mkpath)
3233
log_path = dir.join('flipper_adapters_http_spec.log')
3334
@pstore_file = dir.join('flipper.pstore')

spec/flipper/adapters/mongo_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
Flipper.configuration = nil
3131
Flipper.instance = nil
3232

33-
load 'flipper/adapters/mongo.rb'
33+
silence { load 'flipper/adapters/mongo.rb' }
3434

3535
ENV["MONGO_URL"] = ENV.fetch("MONGO_URL", "mongodb://127.0.0.1:27017/testing")
3636
expect(Flipper.adapter.adapter).to be_a(Flipper::Adapters::Mongo)

spec/flipper/api/action_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def delete
7474
response = catch(:halt) do
7575
action.json_error_response(:feature_not_found)
7676
end
77-
status, headers, body = response
77+
_, headers, body = response
7878
parsed_body = JSON.parse(body[0])
7979

8080
expect(headers[Rack::CONTENT_TYPE]).to eq('application/json')
@@ -88,7 +88,7 @@ def delete
8888
response = catch(:halt) do
8989
action.json_error_response(:group_not_registered)
9090
end
91-
status, headers, body = response
91+
_, headers, body = response
9292
parsed_body = JSON.parse(body[0])
9393

9494
expect(headers[Rack::CONTENT_TYPE]).to eq('application/json')

spec/flipper/cloud/dsl_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
end
4646

4747
let(:cloud_configuration) do
48-
cloud_configuration = Flipper::Cloud::Configuration.new({
48+
Flipper::Cloud::Configuration.new({
4949
token: "asdf",
5050
sync_secret: "tasty",
5151
local_adapter: local_adapter

spec/flipper/cloud/telemetry_spec.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545

4646
expect(telemetry.interval).to eq(120)
4747
expect(telemetry.timer.execution_interval).to eq(120)
48-
expect(stub).to have_been_requested
48+
expect(stub).to have_been_requested.at_least_once
4949
end
5050

5151
it "phones home and requests shutdown if telemetry-shutdown header is true" do
@@ -67,7 +67,7 @@
6767
result: true,
6868
})
6969
telemetry.stop
70-
expect(stub).to have_been_requested
70+
expect(stub).to have_been_requested.at_least_once
7171
expect(output.string).to match(/action=telemetry_shutdown message=The server has requested that telemetry be shut down./)
7272
end
7373

@@ -90,7 +90,7 @@
9090
result: true,
9191
})
9292
telemetry.stop
93-
expect(stub).to have_been_requested
93+
expect(stub).to have_been_requested.at_least_once
9494
expect(output.string).not_to match(/action=telemetry_shutdown message=The server has requested that telemetry be shut down./)
9595
end
9696

spec/flipper/dsl_spec.rb

-3
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,6 @@
225225

226226
describe '#enable_group/disable_group' do
227227
it 'enables and disables the feature for group' do
228-
actor = Flipper::Actor.new(5)
229-
group = Flipper.register(:fives) { |actor| actor.flipper_id == 5 }
230-
231228
expect(subject[:stats].groups_value).to be_empty
232229
subject.enable_group(:stats, :fives)
233230
expect(subject[:stats].groups_value).to eq(Set['fives'])

spec/flipper/feature_spec.rb

+2-11
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def actor.nil?
215215

216216
it 'is recorded for enable' do
217217
actor = Flipper::Types::Actor.new(Flipper::Actor.new('1'))
218-
gate = subject.gate_for(actor)
218+
subject.gate_for(actor)
219219

220220
subject.enable(actor)
221221

@@ -230,7 +230,7 @@ def actor.nil?
230230

231231
it 'always instruments flipper type instance for enable' do
232232
actor = Flipper::Actor.new('1')
233-
gate = subject.gate_for(actor)
233+
subject.gate_for(actor)
234234

235235
subject.enable(actor)
236236

@@ -241,7 +241,6 @@ def actor.nil?
241241

242242
it 'is recorded for disable' do
243243
thing = Flipper::Types::Boolean.new
244-
gate = subject.gate_for(thing)
245244

246245
subject.disable(thing)
247246

@@ -286,7 +285,6 @@ def actor.nil?
286285

287286
it 'always instruments flipper type instance for disable' do
288287
actor = Flipper::Actor.new('1')
289-
gate = subject.gate_for(actor)
290288

291289
subject.disable(actor)
292290

@@ -729,7 +727,6 @@ def actor.nil?
729727
context "with expression instance" do
730728
it "updates gate values to equal expression or clears expression" do
731729
expression = Flipper.property(:plan).eq("basic")
732-
other_expression = Flipper.property(:age).gte(21)
733730
expect(subject.gate_values.expression).to be(nil)
734731
subject.enable_expression(expression)
735732
expect(subject.gate_values.expression).to eq(expression.value)
@@ -741,7 +738,6 @@ def actor.nil?
741738
context "with Hash" do
742739
it "updates gate values to equal expression or clears expression" do
743740
expression = Flipper.property(:plan).eq("basic")
744-
other_expression = Flipper.property(:age).gte(21)
745741
expect(subject.gate_values.expression).to be(nil)
746742
subject.enable_expression(expression.value)
747743
expect(subject.gate_values.expression).to eq(expression.value)
@@ -1098,8 +1094,6 @@ def actor.nil?
10981094
describe '#enable_group/disable_group' do
10991095
context 'with symbol group name' do
11001096
it 'updates the gate values to include the group' do
1101-
actor = Flipper::Actor.new(5)
1102-
group = Flipper.register(:five_only) { |actor| actor.flipper_id == 5 }
11031097
expect(subject.gate_values.groups).to be_empty
11041098
subject.enable_group(:five_only)
11051099
expect(subject.gate_values.groups).to eq(Set['five_only'])
@@ -1110,8 +1104,6 @@ def actor.nil?
11101104

11111105
context 'with string group name' do
11121106
it 'updates the gate values to include the group' do
1113-
actor = Flipper::Actor.new(5)
1114-
group = Flipper.register(:five_only) { |actor| actor.flipper_id == 5 }
11151107
expect(subject.gate_values.groups).to be_empty
11161108
subject.enable_group('five_only')
11171109
expect(subject.gate_values.groups).to eq(Set['five_only'])
@@ -1122,7 +1114,6 @@ def actor.nil?
11221114

11231115
context 'with group instance' do
11241116
it 'updates the gate values for the group' do
1125-
actor = Flipper::Actor.new(5)
11261117
group = Flipper.register(:five_only) { |actor| actor.flipper_id == 5 }
11271118
expect(subject.gate_values.groups).to be_empty
11281119
subject.enable_group(group)

spec/flipper/instrumentation/log_subscriber_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'logger'
2+
require 'active_support/core_ext/object/blank'
23
require 'flipper/instrumentation/log_subscriber'
34
require 'flipper/adapters/instrumented'
45

spec/flipper/instrumentation/statsd_subscriber_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
Flipper.new(adapter, instrumenter: ActiveSupport::Notifications)
1919
end
2020

21-
let(:user) { user = Flipper::Actor.new('1') }
21+
let(:user) { Flipper::Actor.new('1') }
2222

2323
before do
2424
described_class.client = statsd_client

spec/flipper/middleware/memoizer_spec.rb

+4-5
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
context 'with preload: true' do
8181
let(:app) do
8282
# ensure scoped for builder block, annoying...
83-
instance = flipper
83+
flipper
8484
middleware = described_class
8585

8686
Rack::Builder.new do
@@ -141,7 +141,7 @@
141141
context 'with preload specific' do
142142
let(:app) do
143143
# ensure scoped for builder block, annoying...
144-
instance = flipper
144+
flipper
145145
middleware = described_class
146146

147147
Rack::Builder.new do
@@ -266,7 +266,7 @@
266266
context 'with multiple instances' do
267267
let(:app) do
268268
# ensure scoped for builder block, annoying...
269-
instance = flipper
269+
flipper
270270
middleware = described_class
271271

272272
Rack::Builder.new do
@@ -316,7 +316,7 @@ def get(uri, params = {}, env = {}, &block)
316316
context 'with flipper setup in env' do
317317
let(:app) do
318318
# ensure scoped for builder block, annoying...
319-
instance = flipper
319+
flipper
320320
middleware = described_class
321321

322322
Rack::Builder.new do
@@ -460,7 +460,6 @@ def get(uri, params = {}, env = {}, &block)
460460
cache.clear
461461
cached = Flipper::Adapters::ActiveSupportCacheStore.new(logged_memory, cache)
462462
logged_cached = Flipper::Adapters::OperationLogger.new(cached)
463-
memo = {}
464463
flipper = Flipper.new(logged_cached)
465464
flipper[:stats].enable
466465
flipper[:shiny].enable

0 commit comments

Comments
 (0)