aruba icon indicating copy to clipboard operation
aruba copied to clipboard

Split up aruba into separate gems for "better" dependencies

Open ghost opened this issue 8 years ago • 4 comments

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

  1. 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 to aruba-cli and put it into a separate gem as well.

  2. Create a gem aruba-cucumber with dependencies to:

    • aruba-core
    • cucumber
  3. Create a gem aruba-rspec with dependencies to:

    • aruba-core
    • rspec
  4. Create a gem aruba-core with the rest of the dependencies of the current aruba-gem.

  5. Maybe: Create a gem aruba-cli which only contains cli-commands for aruba.

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.

ghost avatar May 10 '16 08:05 ghost

@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.

maxmeyer avatar Jul 31 '17 05:07 maxmeyer

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.

mvz avatar Jul 31 '17 19:07 mvz

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.

stale[bot] avatar Nov 09 '17 16:11 stale[bot]

With #806, there is no part of Aruba apart from the step definitions that depends on Cucumber.

mvz avatar Jun 14 '21 06:06 mvz