-
-
Notifications
You must be signed in to change notification settings - Fork 161
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
Collapse relation, mapper and session into a single repo #12
Comments
👍 |
If it's a PITA, it's wrong. Good call, can definitely relate to it. |
Yeah, theoretically this separation is logical and correct but in practice it's been a pain to deal with those 3 repos from my point of view. Hence I'm starting the discussion. Thanks for feedback! |
@solnic I'm agree. As long as we continue to factor out "stable" parts into separate gems/repos (like we did with adamantium, equalizer, anima) (that all had been part of a rom related repo once). |
@mbj yeah I like that you used the word "stable". it's a key word in this context - ROM is extremely unstable (in terms of API) so keeping things separate so prematurely is a big no-no for me and that's an opinion based on practical experience while working on those projects. |
@solnic You agree stuff like
|
@mbj those are great examples of nice libs that were extracted from a living organism (axiom etc) Here the story is completely different. We don't know what's ROM. We will define it when we make it work according to our initial expectations (using axiom as the backend, mapping tuples into objects, session with UoW). When that happens it will become clear what we can extract. There are cases that are very obvious (rarely) where you just know something should be a separate library - SQL is a good example. We need something that generates SQL and holds an AST representation of SQL. Simple, we need a library that will do just that. Re-usability of such library is also obvious. |
Since you can always generate multiple gems from a single repo, I don't see a downside... |
@avdi that too :) |
Yeah, fine with me, a few things tho: We should have an extraction in mind and not introduce dependencies were they shouldn't be (I'm talking about "inter component" dependencies here). I'm assuming we'd move the relevant code as it is below It's funny, now that you mention combining all the repos into one for now, I have the feeling that we should maybe even (prepare to) split one more piece out of the stack: The DSL on top of I can imagine various usecases for such a gem outside of the I guess what I'm getting at, is that the current |
I'm fine with this as long as we keep following the conventions we've established so far:
For the second point, maybe we should have unit tests require just the class under test (and in limited cases required dependencies), and no longer rely on requiring the entire lib all at once in |
My intention is not to couple everything together, I just want to deal with one Gemfile and one gemspec and one gem push command. I want to keep things logically split in the repo. It's just way easier to work on stuff when you have it in one place. All those things integrate with each other that's why it's gonna simplify the development. I like the idea of explicit requires in specs. We can try doing that. |
Throwing this in here half off topic: http://espy.github.io/ubersicht
Regarding the topic, I'm +1 with everything said. |
Nice, that's almost like something we've been talking about for ages: http://espy.github.io/ubersicht/#rom-rb |
It'd be awesome if it were possible to add repos that do not belong to the same organization tho. That's what we've been talking about all the time at least |
@lgierth we centralized issues in this repo some time ago already so it's not...an issue ;) |
It's done. Closing. Thanks for the input everyone ❤️ |
Refactoring in rom-mapper made me realize it's really a good idea to collapse all 3 pieces into a single repo as there are still way too many moving parts and I find it a PITA to manage 4 projects separately. It would also give better visibility of what you are breaking when introducing refactorings like in this branch (it breaks integration with both rom-relation and rom-session). I also don't think anybody will use session or mapper or relation as standalone gems, honestly. ROM is clearly becoming a convenient DSL on top of lower-level tools (axiom, morpher, probably more will come) so I don't see any point in maintaining complexity that comes with the separation. It is also way easier for people to understand the project when it's in a single repo. We can always extract things later when we see that it makes sense (I don't see any sense at the moment).
The text was updated successfully, but these errors were encountered: