flipper-mongo 0.10.2 → 0.11.0.beta1
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.
- checksums.yaml +4 -4
- data/flipper-mongo.gemspec +11 -11
- data/lib/flipper/adapters/mongo.rb +19 -18
- data/lib/flipper/version.rb +1 -1
- data/spec/flipper/adapters/mongo_spec.rb +7 -6
- data/test/adapters/mongo_test.rb +7 -3
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f06fd74d0a4fbcecc9235c77908d39549f8ecc2e
|
4
|
+
data.tar.gz: 7260c6caccbb47c35bc30ecd16d1818baa7ae613
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aadced95c9020ed16ba14287b0a89a4c5ca4f6dac90c417cd13f2191e06dc9db7751c7a4021d403797006ab654723453d43e64fa279ebf2e5ae7ed8407482965
|
7
|
+
data.tar.gz: 5afb25c8ade341e7c7f44fe835f9167fe044fc313b7b18f81be55f93fedc8ed725b882496089008ebbf8117f71a0e8bc0a4fd6f5f5f2bd910c0759feb89a0ce5
|
data/flipper-mongo.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
require File.expand_path('../lib/flipper/version', __FILE__)
|
3
3
|
|
4
|
-
flipper_mongo_files = lambda
|
4
|
+
flipper_mongo_files = lambda do |file|
|
5
5
|
file =~ /mongo/
|
6
|
-
|
6
|
+
end
|
7
7
|
|
8
8
|
Gem::Specification.new do |gem|
|
9
|
-
gem.authors = [
|
10
|
-
gem.email = [
|
11
|
-
gem.summary =
|
12
|
-
gem.description =
|
13
|
-
gem.license =
|
14
|
-
gem.homepage =
|
9
|
+
gem.authors = ['John Nunemaker']
|
10
|
+
gem.email = ['nunemaker@gmail.com']
|
11
|
+
gem.summary = 'Mongo adapter for Flipper'
|
12
|
+
gem.description = 'Mongo adapter for Flipper'
|
13
|
+
gem.license = 'MIT'
|
14
|
+
gem.homepage = 'https://github.com/jnunemaker/flipper'
|
15
15
|
|
16
|
-
gem.files = `git ls-files`.split("\n").select(&flipper_mongo_files) + [
|
16
|
+
gem.files = `git ls-files`.split("\n").select(&flipper_mongo_files) + ['lib/flipper/version.rb']
|
17
17
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").select(&flipper_mongo_files)
|
18
|
-
gem.name =
|
19
|
-
gem.require_paths = [
|
18
|
+
gem.name = 'flipper-mongo'
|
19
|
+
gem.require_paths = ['lib']
|
20
20
|
gem.version = Flipper::VERSION
|
21
21
|
|
22
22
|
gem.add_dependency 'flipper', "~> #{Flipper::VERSION}"
|
@@ -25,13 +25,13 @@ module Flipper
|
|
25
25
|
|
26
26
|
# Public: Adds a feature to the set of known features.
|
27
27
|
def add(feature)
|
28
|
-
update FeaturesKey, '$addToSet' => {'features' => feature.key}
|
28
|
+
update FeaturesKey, '$addToSet' => { 'features' => feature.key }
|
29
29
|
true
|
30
30
|
end
|
31
31
|
|
32
32
|
# Public: Removes a feature from the set of known features.
|
33
33
|
def remove(feature)
|
34
|
-
update FeaturesKey, '$pull' => {'features' => feature.key}
|
34
|
+
update FeaturesKey, '$pull' => { 'features' => feature.key }
|
35
35
|
clear feature
|
36
36
|
true
|
37
37
|
end
|
@@ -95,9 +95,9 @@ module Flipper
|
|
95
95
|
when :boolean
|
96
96
|
delete feature.key
|
97
97
|
when :integer
|
98
|
-
update feature.key, '$set' => {gate.key.to_s => thing.value.to_s}
|
98
|
+
update feature.key, '$set' => { gate.key.to_s => thing.value.to_s }
|
99
99
|
when :set
|
100
|
-
update feature.key, '$pull' => {gate.key.to_s => thing.value.to_s}
|
100
|
+
update feature.key, '$pull' => { gate.key.to_s => thing.value.to_s }
|
101
101
|
else
|
102
102
|
unsupported_data_type gate.data_type
|
103
103
|
end
|
@@ -112,40 +112,41 @@ module Flipper
|
|
112
112
|
|
113
113
|
# Private
|
114
114
|
def find(key)
|
115
|
-
@collection.find(
|
115
|
+
@collection.find(_id: key.to_s).limit(1).first || {}
|
116
116
|
end
|
117
117
|
|
118
118
|
def find_many(keys)
|
119
|
-
docs = @collection.find(
|
119
|
+
docs = @collection.find(_id: { '$in' => keys }).to_a
|
120
120
|
result = Hash.new { |hash, key| hash[key] = {} }
|
121
121
|
docs.each do |doc|
|
122
|
-
result[doc[
|
122
|
+
result[doc['_id']] = doc
|
123
123
|
end
|
124
124
|
result
|
125
125
|
end
|
126
126
|
|
127
127
|
# Private
|
128
128
|
def update(key, updates)
|
129
|
-
options = {:
|
130
|
-
@collection.find(
|
129
|
+
options = { upsert: true }
|
130
|
+
@collection.find(_id: key.to_s).update_one(updates, options)
|
131
131
|
end
|
132
132
|
|
133
133
|
# Private
|
134
134
|
def delete(key)
|
135
|
-
@collection.find(
|
135
|
+
@collection.find(_id: key.to_s).delete_one
|
136
136
|
end
|
137
137
|
|
138
138
|
def result_for_feature(feature, doc)
|
139
139
|
result = {}
|
140
140
|
feature.gates.each do |gate|
|
141
|
-
result[gate.key] =
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
141
|
+
result[gate.key] =
|
142
|
+
case gate.data_type
|
143
|
+
when :boolean, :integer
|
144
|
+
doc[gate.key.to_s]
|
145
|
+
when :set
|
146
|
+
doc.fetch(gate.key.to_s) { Set.new }.to_set
|
147
|
+
else
|
148
|
+
unsupported_data_type gate.data_type
|
149
|
+
end
|
149
150
|
end
|
150
151
|
result
|
151
152
|
end
|
data/lib/flipper/version.rb
CHANGED
@@ -5,14 +5,15 @@ require 'flipper/spec/shared_adapter_specs'
|
|
5
5
|
Mongo::Logger.logger.level = Logger::INFO
|
6
6
|
|
7
7
|
RSpec.describe Flipper::Adapters::Mongo do
|
8
|
-
|
9
|
-
let(:port) { ENV["BOXEN_MONGODB_PORT"] || 27017 }
|
8
|
+
subject { described_class.new(collection) }
|
10
9
|
|
11
|
-
let(:
|
12
|
-
|
13
|
-
}
|
10
|
+
let(:host) { ENV['BOXEN_MONGODB_HOST'] || '127.0.0.1' }
|
11
|
+
let(:port) { ENV['BOXEN_MONGODB_PORT'] || 27017 }
|
14
12
|
|
15
|
-
|
13
|
+
let(:client) do
|
14
|
+
Mongo::Client.new(["#{host}:#{port}"], server_selection_timeout: 1, database: 'testing')
|
15
|
+
end
|
16
|
+
let(:collection) { client['testing'] }
|
16
17
|
|
17
18
|
before do
|
18
19
|
begin
|
data/test/adapters/mongo_test.rb
CHANGED
@@ -5,10 +5,14 @@ class MongoTest < MiniTest::Test
|
|
5
5
|
prepend Flipper::Test::SharedAdapterTests
|
6
6
|
|
7
7
|
def setup
|
8
|
-
host = '127.0.0.1'
|
8
|
+
host = ENV.fetch('BOXEN_MONGODB_HOST', '127.0.0.1')
|
9
9
|
port = '27017'
|
10
|
-
logger = Logger.new(
|
11
|
-
|
10
|
+
logger = Logger.new('/dev/null')
|
11
|
+
client = Mongo::Client.new(["#{host}:#{port}"],
|
12
|
+
server_selection_timeout: 1,
|
13
|
+
database: 'testing',
|
14
|
+
logger: logger)
|
15
|
+
collection = client['testing']
|
12
16
|
begin
|
13
17
|
collection.drop
|
14
18
|
collection.create
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipper-mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: flipper
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.11.0.beta1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.11.0.beta1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mongo
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,12 +69,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
69
|
version: '0'
|
70
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - ">"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
74
|
+
version: 1.3.1
|
75
75
|
requirements: []
|
76
76
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
77
|
+
rubygems_version: 2.5.2
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
80
|
summary: Mongo adapter for Flipper
|