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

Refactor DRY the runner and DSL #6

Merged
merged 17 commits into from
May 3, 2016

Conversation

gonzalo-bulnes
Copy link
Owner

As a developer
In order to be able to extend it easily
I want dredd-hooks-ruby not to contain too much duplicated code

See apiaryio#5

To perform deeper refactoring a unit test suite will be useful.

I like to make explicit the distinction between the specs which document
the public API (tagged as :public) and those which are only refactoring
guards and can be changed when necessary (tagged as :protected or
:private depending on how stable they are intended to be).

The 'spec:public' and 'spec:development' Rake tasks reflect
that distinction.
Minor fix missing link in testing documentation
This will allow later to store the hooks content in the runner.
Minor use parens in multiple arguments method calls
Minor use parens in non-tivial method calls

The DreddHooks::Methods exposes the public DSL of DreddHooks.
As an interface, I would like it to be as simple as possible,
and as immutable as possible.

Since the DSL and the runner were closely related already, the latter
seems to be a good place to store the hooks that need to be runned.

Also, because the DSL is an interface for the runner, I prefer the
dependency to go from the interface to the runner, that the contrary.

Finally, I made the runner a Singleton because it was already unique
when defined as a Module, and because it make trivial its retrieval
from the DSL.
Isolating them will make clearer the dynamic method generation in
the next DRYing step.
Isolating them will make clearer the dynamic method generation in
the next DRYing step.
The default values are clodely related to their setters anyway, so
they can be generated in place at the price of very little duplication.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant