Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import #251

Merged
merged 27 commits into from
Apr 10, 2017
Merged

Import #251

merged 27 commits into from
Apr 10, 2017

Conversation

jnunemaker
Copy link
Collaborator

I've been thinking for a while it would be nice to have a way to swap from one adapter to another. This PR makes that easy. It is not super efficient about network calls, but that can be improved later. I wanted to start with easy and correct. Plus, this is something that should happen very rarely, so if it does a few extra network calls, it probably isn't a big deal.

Example

redis_adapter = Flipper::Adapters::Redis.new
active_record_adapter = Flipper::Adapters::ActiveRecord.new

source = Flipper.new(redis_adapter)
destination = Flipper.new(active_record_adapter)

# wipes destination clean and copies features/gate values from source to it
destination.import(source)
# at this point destination == source

I thought it would be nice to have adapter migrate for when switching
from one adapter to another. This makes it so you don't have to write
your own migration.
I was passing flipper instead of adapter. This corrects that. Starting
to move some spec stuff to shared so I can re-use for new specs I am
about to add.
For parody with Feature#remove
I'm not sure if migrate is the right word I want. import feels closer but I still don't love it either.
This is useful when you have a flipper_id and want to pass it into the
feature enabled method
Previously it was only dealing with features in the adapter being used
as the source of truth. Now all features in adapter are wiped first and
then each individual feature is imported.
@jnunemaker jnunemaker self-assigned this Apr 9, 2017
bundle exec guard was erroring with `bin_path': can't find gem bundler`. Removing the path and re-bundling got it working again. Found that out by reading guard/guard-bundler#32.
Some tests are slow now so let's just run what we have to.
@jnunemaker jnunemaker merged commit 368bfa3 into master Apr 10, 2017
@jnunemaker jnunemaker deleted the migrate branch April 10, 2017 00:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant