---
title: "A tool to compare versions of gems"
publication: "Ruby Weekly"
issue: 596
published_at: "2022-03-24"
canonical_url: "https://rubyweekly.com/issues/596"
---

Plus tenderlove's livestream, some Hotwire tutorials, and a new JRuby release. |        

[🇺🇦](https://war.ukraine.ua/) #​596 — March 24, 2022 

[Read on the Web](https://rubyweekly.com/issues/596)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/kjvawettsikgwwpmhg9g.jpg)](https://nts.strzibny.name/gem-compare-1.0/)   

[gem-compare 1.0: A RubyGems Plugin to Compare Gem Versions](https://nts.strzibny.name/gem-compare-1.0/) — Josef created this to help vet new versions of gems he was forging (to see accidental changes, files erroneously added to the gem, license changes, etc.) but you could use it for any sort of cross-version curiosity. Once installed, give `gem compare gem-compare 0.0.7 1.0.0` a try to see it working on itself. 

Josef Strzibny   [![\](https://copm.s3.amazonaws.com/be4a50e6.png)](https://www2.reinteractive.com/codecare) 

[Monthly Fixed Price CodeCare That Doesn’t Cost the Earth](https://www2.reinteractive.com/codecare) — CodeCare is a professional service with a dedicated team. You get: minor feature development • code tweaks • updates • security patches • bug fixes. All for an affordable monthly fixed price. 

CodeCare by reinteractive sponsor   

**IN BRIEF:** 

- Could you [cut your Rails boot times on Heroku in half](https://dev.to/dbackeus/cut-your-rails-boot-times-on-heroku-in-half-with-a-single-command-514d) with just one command? (Suits any [Bootsnap](https://github.com/Shopify/bootsnap) using Ruby app, too, not just Rails.)
- We mentioned it a few weeks ago, but the [Ruby on Rails Survey 2022](https://rails-hosting.com/) is still open and the more submissions they get, the more valuable the results for all of us :-)
- Shopify's Kevin Newton has written up [a report on progress](https://kddnewton.com/2022/03/17/ruby-association-final-report.html) in writing a pure Ruby code formatter (called [`SyntaxTree`](https://github.com/ruby-syntax-tree/syntax_tree)), as funded through [a Ruby Association grant](https://www.ruby.or.jp/en/news/20211025).
- The [▶️ latest episode of the Remote Ruby podcast](https://share.transistor.fm/s/d5fc2f35) also features a discussion with Kevin (see previous item) on all things relating to parsing and YJIT – plus his work on SyntaxTree, of course.
- Aaron 'tenderlove' Patterson has [▶️ been livestreaming again](https://www.youtube.com/watch?v=EeavmsscJv8) on his pure Ruby ARM64 assembler project - and there's even an appearance from a special guest you've probably heard of :-) Geeky stuff, but you'll love it if you have the time to spare.     

Jobs  

[Senior Rails Engineer @ Nebulab (Remote)](https://nebulab.com/careers?gh_src=a6448332teu) — Join our distributed team and build high-volume eCommerce applications in a workplace made by developers for developers. 
Nebulab   

[Ruby on Rails Developer](https://www.saeloun.com/careers) — Remote-first RoR Consulting & Development firm working with entrepreneurs and startups to build modern and scalable applications. 
Saeloun   

[Build Your Career from Anywhere](https://topt.al/ZQcgQZ) — Join Toptal and get access to exclusive remote work opportunities for the top companies on the planet. 
Toptal    

📕 Articles & Tutorials  

[Changing Critical Code Paths with Scientist](https://world.hey.com/jorge/changing-critical-code-paths-with-scientist-a3becb84) — GitHub’s [Scientist](https://github.com/github/scientist) is one of those gems that, when paired with the right use case, can really reduce anxiety, increase confidence, and make change easy, just like it did here for HEY. 

Jorge Manrubia (Basecamp)   

▶[How To Build a Powerful Search Form with Hotwire](https://www.youtube.com/watch?v=4MUEQVxUbm4) — I know, there’s a lot of Hotwire content these days, but this video did teach something new (`turbo_action` to manage the URL). 

Mix and Go   

[Getting Started With OpenTelemetry](https://www.influxdata.com/getting-started-with-opentelemetry/?utm_source=vendor&utm_medium=referral&utm_campaign=2022-03-24_spnsr-nl_getting-started-opentelemtry_global&utm_content=rubyweekly) — Learn best practices and understand what observability can do for your organization. Tools, key concepts, and more… 

InfluxData sponsor   

[Things to Consider When Upgrading Ruby from 2.7 to 3.0](https://www.fastruby.io/blog/ruby/upgrades/upgrade-ruby-from-2.7-to-3.0.html) — For those of you that haven’t done so… 

Cleviane Costa (FastRuby.io)   

[Hotrails: Learn Modern Rails with Hotwire](https://www.hotrails.dev/turbo-rails) — This is one of the best tutorials on Hotwire (and Rails, too) we’ve seen in quite some time. It’s in eleven parts and really demonstrates how the pieces of Hotwire function. 

Alexandre Ruban   

[A Quick Guide To Managing User Permissions in Rails Apps](https://www.honeybadger.io/blog/complete-guide-to-managing-user-permissions-in-rails-apps/) — Sure there are lots of authorization gems, but creating policy on your own is pretty easy and gives you one less dependency. 

Renata Marques (Honeybadger)   

[How to Setup Heroku Autoscaling in Under 15 Minutes?](https://dynoscale.net/blog/how-to-setup-heroku-autoscaling-in-under-15-minutes) — Sure, this goes on to showcasing Dynoscale’s offering, but does start with how and when to use Heroku’s autoscaling feature first. 

Eric Abrahamsen (Dynoscale)  

🛠 Code & Tools  

[RailsAdmin 3.0: A Rails Engine Providing a Basic CRUD Interface](https://github.com/railsadminteam/rails_admin) — Supporting apps built round both Active Record and Mongoid, RailsAdmin gives you an interface for basic manipulation and management of your app’s data. As of 3.0, Rails 7 is now supported. [Demo app.](http://rails-admin-tb.herokuapp.com/) 

Rails Admin Team   

[DSL Factory: A DSL to Create.. DSLs!](https://github.com/motine/dsl_factory) — At the risk of getting a bit meta, DSL Factory aims to abstract away the task of defining a DSL into a DSL of its own. It does validation too. 

Tom Rothe   

[JRuby 9.3.4.0 Released](https://www.jruby.org/2022/03/23/jruby-9-3-4-0.html) — The 9.3 branch remains compatible with CRuby 2.6. 9.3.4.0 adds improvements to Java integration, aarch64 and M1 support. 

JRuby Core Team   

[Monitoring and Observability: An Ever Evolving Market](https://ter.li/h7nzxe) 

Scout APM sponsor   

[online_migrations: Catch Unsafe Postgres Migrations in Development and Run Them Easier in Production](https://github.com/fatkodima/online_migrations) — The README alone is worth the price of admission, but using the gem might save you a few headaches with dangerous migrations on large tables. 

Dima Fatko   

[Roo 2.9: Read All Common Spreadsheet File Formats in Ruby](https://github.com/roo-rb/roo) — Covers Excel 2007-2013, LibreOffice ODS, CSV, and lesser used Excel formats. 

Daniels, Simonov, et al.   

[curl-to-ruby: Convert Curl Commands to Ruby `net/http` Code](https://jhawthorn.github.io/curl-to-ruby/) — There are lots of fantastic HTTP client options for Rubyists nowadays but `net/http` works everywhere out of the box which makes this tool still potentially useful. 

John Hawthorn   

[Standard 1.9: A Ruby Style Guide, Linter and Formatter](https://github.com/testdouble/standard) 
test double      

💡**Tip of the Week** 

   

## Getting clean with `gem pristine` 

[Last week](https://rubyweekly.com/issues/595), we discussed using `bundle open` to edit a local version of a gem. Once I've finished debugging an issue using `bundle open`, I'm often left with miscellaneous remnants of that debugging process: various `puts` statements or [`binding.irb`](https://rubyweekly.com/issues/536) calls which I no longer need. 

Thankfully, [`gem pristine <gem_name>`](https://guides.rubygems.org/command-reference/#gem-pristine) can resolve this problem by restoring a gem to its cached (or 'pristine') version. In other words, the gem will no longer have the extraneous lines of code that were added during debugging. 

If we're interested in restoring more than just a single gem, we can run `gem pristine --all` to restore all gems for our current Ruby version. 

This might mean, though, that we clear more gems than our current application is using. The last helpful command for restoring gems is [`bundle pristine`](https://bundler.io/man/bundle-pristine.1.html) which will restore all gems which are in our repo's `Gemfile.lock` - so all gems that a repo is using, but not necessarily all gems for our current version of Ruby.    

This week’s tip was written by [Jemma Issroff](https://twitter.com/jemmaissroff).           

Curated by [Peter Cooper](https://twitter.com/peterc), [Glenn Goodrich](https://twitter.com/ruprict) and [Cooperpress](https://cooperpress.com/). 

[Change your email address](https://rubyweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
