lib/flipper/adapter.rb in flipper-0.26.2 vs lib/flipper/adapter.rb in flipper-0.27.0
- old
+ new
@@ -1,9 +1,5 @@
-require "set"
-require "flipper/feature"
-require "flipper/adapters/sync/synchronizer"
-
module Flipper
# Adding a module include so we have some hooks for stuff down the road
module Adapter
def self.included(base)
base.extend(ClassMethods)
@@ -18,10 +14,15 @@
actors: Set.new,
percentage_of_actors: nil,
percentage_of_time: nil,
}
end
+
+ def from(source)
+ return source if source.is_a?(Flipper::Adapter)
+ source.adapter
+ end
end
# Public: Get all features and gate values in one call. Defaults to one call
# to features and another to get_multi. Feel free to override per adapter to
# make this more efficient.
@@ -41,16 +42,31 @@
result
end
# Public: Ensure that adapter is in sync with source adapter provided.
#
- # Returns result of Synchronizer#call.
- def import(source_adapter)
- Adapters::Sync::Synchronizer.new(self, source_adapter, raise: true).call
+ # source - The source dsl, adapter or export to import.
+ #
+ # Returns true if successful.
+ def import(source)
+ Adapters::Sync::Synchronizer.new(self, self.class.from(source), raise: true).call
+ true
end
+ # Public: Exports the adapter in a given format for a given format version.
+ #
+ # Returns a Flipper::Export instance.
+ def export(format: :json, version: 1)
+ Flipper::Exporter.build(format: format, version: version).call(self)
+ end
+
# Public: Default config for a feature's gate values.
def default_config
self.class.default_config
end
end
end
+
+require "set"
+require "flipper/exporter"
+require "flipper/feature"
+require "flipper/adapters/sync/synchronizer"