aruba
aruba copied to clipboard
Split up aruba into separate gems for "better" dependencies
Summary
Split up aruba into separate gems: aruba-core, aruba-rspec, aruba-cucumber. Ping @mattwynne
Current Situation
We now support integration into cucumber
, rspec
and minitest
. At least for the first two ones we would normally define dependencies on "gem"-level. Today we only require cucumber
to be installed. This is not required by users using aruba
with rspec
only.
Possible Solution
-
Create a gem
aruba
with dependencies to:- aruba-cucumber
- aruba-rspec
- aruba-core
This gem only includes the executable
aruba
. Otherwise bundler will complain or we rename it toaruba-cli
and put it into a separate gem as well. -
Create a gem
aruba-cucumber
with dependencies to:- aruba-core
- cucumber
-
Create a gem
aruba-rspec
with dependencies to:- aruba-core
- rspec
-
Create a gem
aruba-core
with the rest of the dependencies of the currentaruba
-gem. -
Maybe: Create a gem
aruba-cli
which only contains cli-commands foraruba
.
Open Questions
- [ ] It makes sense to do this
- [ ] Shall we have separate repositories or place everything in a single repository
- [ ]
aruba-rspec
is already used by another gem which seems to be unmaintained since 2014.
Benefits
Users only have depencies installed they really need.
@mvz @junaruga @olleolleolle What do you think about this? This does not to be done till 1.0.0 can be also introduced later, 1.1.0 or even 2.1.0 (due to drop of rubies)
It bothers me that we've got a "hardcoded" dependency on cucumber
although one can also use it with rspec
and minitest
only.
In general, I think this makes sense.
I don't think there's a need to split of aruba-rspec
, because Aruba already depends on only rspec-expectations
and would need that in a hypothetical aruba-core
. So, just splitting off aruba-cucumber
should be enough. Since aruba
would then not depend on aruba-cucumber
, this would be a breaking change hence something for 2.0 (unless it is done right now).
I would recommend keeping everything in the same repository. This makes synchronizing development between the parts easier and preserves history. I've split a project apart and then grafted the repositories back together because git blame
had become completely useless.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in a week if no further activity occurs.
With #806, there is no part of Aruba apart from the step definitions that depends on Cucumber.