This issue is for building up (a) support (please +1 if you would like to see Ruby support) and (b) requirements, e.g. helping suggest what scope is required and what APIs can be used.
I'd love to help out with this, but I'm not sure where to start! Which of the existing package manager integrations would be a good place to start looking?
@aergonaut Thanks for the offer! The Renovate codebase could do with a little refactoring to make it even easier to add new languages, but I can guide you in the meantime.
We use lib/manager for storing package manager logic, and lib/datasource for looking up registries.
A good reference one to look at is Docker in both those dirs.
Until now, it has been possible for us to implement version and lookup logic completely with JS, but for Ruby there may be the need for us to call out to bundler via a child process instead of attempting to reimplement it's resolution logic.
I can start a base branch for Ruby so you don't have to start from absolute scratch.
Thanks @rarkins. It would be great if you could start a base branch!
Yeah, I would think calling out to Bundler would be the easiest way to implement updating. As a first idea, we could run bundle update GEM and then inspect the diff in the lockfile to figure out what was updated.
@aergonaut please check out https://github.com/renovateapp/renovate/tree/feat/932-ruby and feel free to ping me here or in gitter with any questions
Any news on this? I was kind of surprised that Renovate does not support a language as widespread as ruby :)
@yuki24 maybe we can pair on this at some point? It'd be extremely useful.
I'd be happy to help add support for Ruby.
For people looking for a solution in the meantime or who want to take a look at some prior art, https://github.com/envato/unwrappr may be of some interest.
I've committed a "skeleton" for Ruby support into master branch. The best next step would be if someone can submit a PR filling in https://github.com/renovatebot/renovate/blob/master/lib/manager/bundler/readme.md
You can find completed examples for buildkite and composer already. Composer is probably the better example to use.
At a high level, we'll need to do this:
Ruby Bundler in Renovate support is now ready to enter "alpha" stage. If you are interested in helping get it through beta -> GA stages as quickly as possible by testing it out, please let me know!
The PR to establish alpha support is here: https://github.com/renovatebot/renovate/pull/3058
It's already capable of parsing the entire Rails Gemfile and even found an upgrade: https://github.com/renovate-tests/rails/pull/3
@rarkins 馃枑
We currently use Renovate for Docker+NPM and dependabot for Ruby. I'd happily be an alpha tester and run it instead of or side-by-side with dependabot.
:tada: This issue has been resolved in version 13.175.0 :tada:
The release is available on:
Your semantic-release bot :package::rocket:
Bundler support is now merged to master and live in the hosted Renovate App. You can see details on how to opt-in to testing it on the blog: https://renovatebot.com/blog/ruby-bundler-support
In short, it should detect all Gemfiles, see if any versions or ranges need updating, and submit PRs if so, with updated Gemfile.lock. If you have success or problems trying it out, please let me know.
This is awesome 馃檹
Thank you all for the hard work!
Most helpful comment
Bundler support is now merged to
masterand live in the hosted Renovate App. You can see details on how to opt-in to testing it on the blog: https://renovatebot.com/blog/ruby-bundler-supportIn short, it should detect all Gemfiles, see if any versions or ranges need updating, and submit PRs if so, with updated
Gemfile.lock. If you have success or problems trying it out, please let me know.