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
Owner

@jnunemaker jnunemaker commented Apr 9, 2017

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
jnunemaker added 22 commits Apr 9, 2017
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 added the feature label Apr 9, 2017
@jnunemaker jnunemaker self-assigned this Apr 9, 2017
jnunemaker added 5 commits Apr 9, 2017
Fix guard
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
0 of 2 checks passed
0 of 2 checks passed
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details
continuous-integration/travis-ci/push The Travis CI build is in progress
Details
@jnunemaker jnunemaker deleted the migrate branch Apr 10, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

1 participant
You can’t perform that action at this time.