pak
ROM
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pak
-
Pragmatic Versioning – An Alternative to Semver
From your issue link:
> Then commons-logging changes its API incompatibly and is released as commons-logging 2.0.1. Authentication adopts commons-logging 2.0.1 while other libraries still depend on 1.1.1
> Now my-application is broken, because the dependency tree includes two versions of commons-logging which share packages, class / functions names, and thus can not be loaded simultaneously.
I absolutely don't see how this is a problem with semver, it is not the responsibility of semver to tell a language how packages should be isolated and loaded. That is a problem of a) the language and b) dependency resolution in the package manager.
> SemVer is a product of Ruby community.
Bundler, by design, does not allow the above, instead having a flat, consistent vision of dependencies.
NPM though, allows that, allowing nested dependencies, by virtue of the ES6 module system importing to a variable in a lexical scope. Go also allows that, by virtue of its imports being scoped to a package (or file, I can't recall).
Ruby can do that kind of isolation too. In fact, I've done it: https://github.com/lloeki/pak
Unless packages leak to globals each version is oblivious to the one next to it. Unless package dependents communicate with one another using objects from the packages they can happily live in their own world. Now if they do, then it's like hitting a HTTP /api/v1 with an HTTP /api/v2 client and somehow wishing things will work. Either the package (which should not leak globals / disallow cross-version communication) or the language (which should not allow leaking globals / detect incompatible communication).
None of this is the responsibility of semver.
-
Rails is not written in Ruby
(the link jumps to some random place for me)
Well, you always could, it was just a bit more involved:
https://github.com/lloeki/pak
ROM
-
Understanding Clean Architecture with small Ruby libraries
Object Mapper: rom-rb/rom: Data mapping and persistence toolkit for Ruby
-
Rails is not written in Ruby
Just wanted to say that the authors libraries, especially ROM [0], are incredible and have played a huge influence on me as a developer. I learned a lot using and diving through the code.
[0]: https://rom-rb.org/
-
Catching up on things
Better gems. dry-rb, ROM, and Hanami are doing interesting stuff. I also hear web_pipe is popular?
-
10 Years of Open Source
This is exactly how I ended up contributing to DataMapper, then joining the core team, then releasing Virtus, then working on DataMapper 2.0, then turning it into rom-rb, then joining dry-rb and building 1.25 library / month on average for about 2 years or so to eventually join Hanami team...and, yeah, it's been kinda nuts now when I look back.
-
Best of (Ruby) Gems Series - What's Next? What's Hot?
Ruby Object Mapper
What are some alternatives?
Sequel - Sequel: The Database Toolkit for Ruby
ActiveRecord
DataMapper
Hanami::Model - Ruby persistence framework with entities and repositories
Ohm - Object-Hash Mapping for Redis
Mongoid - The Official Ruby Object Mapper for MongoDB
Redis-Objects - Map Redis types directly to Ruby objects
NoBrainer - Ruby ORM for RethinkDB
MongoModel - Ruby ORM for MongoDB (compatible with Rails 3)
Neo4j.rb - An active model wrapper for the Neo4j Graph Database for Ruby.
Perpetuity - Persistence gem for Ruby objects using the Data Mapper pattern
Guacamole