---
title: "The art of writing a good Ruby Gem specification"
publication: "Ruby Weekly"
issue: 491
published_at: "2020-03-05"
canonical_url: "https://rubyweekly.com/issues/491"
---

This week's Ruby news, views, and libraries.       

#491 — March 5, 2020 

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

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/gsdwn9vxfxjwisnfvtsu.jpg)](https://piotrmurach.com/articles/writing-a-ruby-gem-specification/)   

[The Art of Writing a Good Ruby Gem Specification](https://piotrmurach.com/articles/writing-a-ruby-gem-specification/) — Piotr’s goal here is to clear up any confusion you might have about putting together a `Gemfile.spec` for any gems you choose to build, as while there are tools to help you to do this, there’s still a lot you need to do by hand. 

Piotr Murach   

[Official Docs for Ruby 2.7's Pattern Matching](https://docs.ruby-lang.org/en/master/syntax/pattern_matching_rdoc.html) — The docs for the nascent pattern matching added to 2.7. You probably know that you can bind variables using pattern matching, but what about variable pinning? What class implements `deconstruct_keys`? 

ruby-lang.org   [![\](https://copm.s3.amazonaws.com/1a55a98c.png)](https://semaphoreci.com/?utm_source=rubyweekly&utm_medium=cpc&utm_campaign=rubyweekly-semaphore-2-0-20200305) 

[Your Ruby CI/CD Pipeline Needs an Upgrade](https://semaphoreci.com/?utm_source=rubyweekly&utm_medium=cpc&utm_campaign=rubyweekly-semaphore-2-0-20200305) — The Superhuman engineering team reduced build time from [17 mins to 70 seconds](https://semaphoreci.com/customers/superhuman?utm_source=rubyweekly&utm_medium=cpc&utm_campaign=rubyweekly-semaphore-2-0-20200305). With Semaphore, you can go faster too. Model any CI/CD workflow for Ruby, Docker and iOS with autoscaling pipelines. Try it free with GitHub. 

Semaphore 2.0 sponsor   

[RubyKaigi 2020 Postponed Due to Coronavirus](https://esa-pages.io/p/sharing/68/posts/1006/b15a58c675f5a69d06e5.html) — RubyKaigi is essentially _the_ Ruby conference and is hosted in Japan every year. It was due to take place in April but has been pushed back until September due to the COVID-19 outbreak that has affected many other events like F8, Google I/O, and dotGo. 

RubyKaigi Team   

[Spree 4.1: The Rails 6 Based Ecommerce Platform](https://github.com/spree/spree/releases/tag/v4.1.0) — [Spree](https://spreecommerce.org/) has been around for _years_ but only continues to get better and now has a new mobile-first storefront UI. 

Spree Commerce   

[Ruby 2.7's Numbered Parameters as Default Block Parameters](https://blog.bigbinary.com/2020/03/03/ruby-2-7-introduces-numbered-parameters-as-default-block-parameters.html) — Yes, you can now do things like `(1..10).map { _1 * 2 }` 

Taha Husain  

💻 Jobs  

[Seeking Rails-Experienced Front End Lead Developer](https://www.workarea.com/pages/front-end-lead-developers) — Workarea is shaping the future of commerce. Join our fresh, progressive approach to enterprise ecommerce. 

Workarea   

[Principal Engineer - Zendesk Talk (Dublin, Ireland)](https://bit.ly/principal-talk-ruby) — Set technical priorities, innovate & problem-solve across teams with company-wide impact. Great work-life balance and culture. 

Zendesk   

[Find a Dev Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-rubyweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77583) — Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers. 

Vettery  

📘 Articles & Tutorials  

[Benchmarking Ruby 2.7.0's Numbered Parameters](https://blog.schembri.me/post/benchmarking-ruby-2.7.0-numbered-parameters/) — It turns out that critics of numbered parameters have one less thing to cite! 

Jamie Schembri   

[Using Hanami::API on Amazon AWS Lambda](https://lucaguidi.com/2020/03/04/hanamiapi-on-amazon-aws-lambda/) — We featured [Hanami::API](http://hanamirb.org/blog/2020/02/26/introducing-hanami-api.html) last week, but here’s a practical article on deploying it on a serverless platform. 

Luca Guidi   

[Building a Rails App That Uses Multiple Subdomains](https://blog.appsignal.com/2020/03/04/building-a-rails-app-with-multiple-subdomains.html) — Lots of useful pointers here for the situation where you want a Rails app to cope with being served up over multiple subdomains. 

Prathamesh Sonpatki   

[Converting Unix Epoch Timestamps to Ruby Objects](https://prathamesh.tech/2020/03/02/converting-timestamps-to-ruby-objects/) — You probably know about `Time.at` but did you know about its `in` argument? 

Prathamesh Sonpatki   

[Seamlessly Integrate Video into Your Ruby App](https://get.mux.com/2vXagCR) — Mux Video is an API-first platform that makes it easy to build beautiful video that streams everywhere. 

Mux sponsor   

[Syntax Highlighting with Action Text](https://www.driftingruby.com/episodes/syntax-highlighting-with-action-text) — [Action Text](https://edgeguides.rubyonrails.org/action_text_overview.html) is the framework that provides rich text editing support to Rails 6+ apps. This 10 minute screencast walks through the practicalities of using it and adding syntax highlighting functionality. 

Drifting Ruby   

[Why Pry is One of the Most Important Tools a Junior Rubyist Can Learn](https://www.honeybadger.io/blog/debugging-ruby-with-pry/) — Not even just _junior_ Rubyists, even. I frequently forget to use Pry when it would make a lot of sense. 

Melissa Williams   

[Compiling the Latest Ruby from Scratch with `chruby`](https://shime.sh/til/compiling-latest-ruby-from-scratch-with-chruby) — [chruby](https://github.com/postmodern/chruby) is a popular Ruby version ‘changer’ – here’s how to get it working with the latest _head_ build of Ruby. 

Hrvoje Šimić   

[Rails 6 Added 'Jitter' to `ActiveJob::Exceptions.retry_on`](https://blog.saeloun.com/2020/03/04/rails-adds-jitter-to-activejob-exceptions-retry_on.html) — Let’s say some failure in your system causes a lot of background jobs to fail at around the same time.. if they’re all retried at a set interval, you end up with a ‘thundering herd’ effect. Adding _jitter_ to the retry time helps prevent this. 

Aditya Narsapurkar   

[Faster Excel Parsing in Ruby](https://blog.schembri.me/post/faster-excel-parsing-in-ruby/) — Benchmarking Excel parsing gems for faster parsing options. 

Jamie Schembri   

[A Secret Weapon For Your Rails Apps? RPC with RabbitMQ and Hutch](https://karolgalanciak.com/blog/2020/03/01/a-secret-weapon-for-your-rails-apps-rpc-with-rabbitmq-and-hutch/) 

Karol Galanciak  

🛠 Code and Tools  

[JRuby 9.2.11.0 Released](https://www.jruby.org/2020/03/02/jruby-9-2-11-0.html) — Fixes a regression in JRuby 9.2.10.0 that broke gems and gem paths packaged inside JAR files. Compatible with Ruby 2.5.x. 

JRuby   

[Spreadsheet Architect v4.0.0 Released](https://github.com/westonganger/spreadsheet_architect) — Spreadsheet Architect enables the creation of XLSX, CSV, etc. from just about anything tabular in Ruby. 

Weston Ganger   

[Sidekiq Optimization and Monitoring](https://blog.appsignal.com/2019/10/29/sidekiq-optimization-and-monitoring.html?utm_source=ruby_weekly_newsletter&utm_medium=boostedlink&utm_campaign=sidekiq-monitoring) 

AppSignal sponsor   

[Chaskiq: An Open Source Conversational Marketing Alternative](https://github.com/chaskiq/chaskiq) — An open-source alternative to Drift, Intercom, and the like. I guess if you’re going to have a chat window, you might as well own the code… 

ChaskiqHQ   

[FakeRedis: An In-Memory Driver for redis-rb](https://github.com/guilleiguaran/fakeredis) — Aimed at development and testing scenarios. 

Guillermo Iguaran   

[Valvat 0.9: Validates European VAT Numbers](https://github.com/yolk/valvat) — Tax number validation isn’t the most fun thing to be doing but.. that’s why we offload it to Valvat :-) 

Sebastian Munz         

Curated by [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
