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"