#​573 — October 7, 2021

Read on the Web

Ruby Weekly

Rubocop: Creating Custom Cops for Custom Needs — This is not only a great use case for a custom matcher, but also a solid tutorial that touches on ASTs, S-expressions, and other interesting technicalities.

Matheus Richard (thoughtbot)

Awesome Ruby: A Curated List of 900+ Ruby Libraries and Tools — Every year or two, we like to link to this epic, categorized collection of Ruby goodies. It continues to be updated frequently with new entries added and obsolete entries removed, and you’re encouraged to contribute your own projects too.

Marc Anguera Insa

AnyCable PRO Gets More Features for Real-Time Communication — AnyCable PRO adds JWT identification and Hotwire and CableReady streams support to other advanced features to build real-time Ruby on Rails apps. It has the potential to bring a significant performance boost in addition to 40% less memory footprint.

Evil Martians sponsor

A Compositional Approach to Optimizing the Performance of Ruby Apps — The “composition” here consists of a top layer in Ruby and a bottom layer of C extensions, applying an approach that is similar to what io_uring does in recent Linux kernel versions.

Sharon Rosner

QUICK BITS:

  • Last week we mentioned some changes were made to the Ruby Community Conduct Guidelines, but all such changes have now been reverted after Matz found the situation hard to figure out and he wants the community to discuss it further first (not sure where yet).

  • Gosu is a 2D game development framework for Ruby (and C++) and is well suited to smaller games and game development competitions, so it's neat to see the first ever Gosu Game Jam is taking place starting October 17. A fun way to dabble with something different.

strftimer: A Ruby strftime Format Generator — Give it a date and time format written long-hand and it’ll give you the Time#strftime format to use. For a Good Strftime and Rails DateTime Formats should also be useful in this area.

Edward Forshaw

Jobs

Principal Ruby Platform Engineer (Remote - EST Timezone +/- 3 hours) — Interested in Fintech? Join our core team building the AI that will level the playing field for self-directed investors.
Propelor

Software Engineer (Australia) — Join Certsy and help create Australia’s leading digital passport for verified credentials (visa/relocation support provided).
Certsy

Development Lead - People, Code, & Business — A hybrid role: supporting personal growth within the dev team, working on complex Rails apps, and championing our work.
Unboxed

Find Ruby Jobs Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers.
Hired

📕 Articles & Tutorials

ActiveSupport's #descendants Method: A Deep Dive — A nice walkthrough Ruby’s inheritance chain and how you can change it that ends with a really nice use case for #descendents that you’ll want to use in your Rails apps immediately.

Jonathan Miles (Honeybadger Developer Blog)

How to Verify Signed HTTP Requests from Webhooks — A developer needed to verify webhook requests being made by a payments provider who signed the request with public key encryption.

Paul Oms

Why to Use Sidekiq Directly, And Not Through Active Job — Active Job is great, but you might be missing out, says Andy.

Andy Croll

Using Dynamic Config Variables in Rails Apps — Config variables should never be embedded directly in the codebase as constants but luckily it’s now common to have them in a separate layer that’s brought in as constants at runtime. This post digs into what you might do if you want them to be a bit more dynamic..

Paweł Urbanek

RBS: How to Get the Most Out of RubyMine’s Code Assistance

JetBrains sponsor

Migrating Selenium System Tests to CupriteCuprite is a headless Chromium driver for Capybara.

Matouš Borák

▶  Discussing Seven Years at GitHub with John Nunemaker — If you’ve been in the Ruby world for many years, you may be familiar with John’s name (he created httparty, among other things).

Code with Jason Podcast podcast

▶  How to Use ESBuild in Rails with JSBundling — GoRails continues to bring us up to speed on all the new JavaScript bundling options coming in Rails 7. Here’s ESBuild (so fast!) and how you can use it in Rails 6 today.

GoRails

🛠 Code & Tools

Fusuma: Multitouch Gesture Recognizer for Linux — You define gestures and actions in YAML and it hooks into libinput to add custom gesture support on Linux. Interesting because this is a very atypical use case for Ruby.

Kohei Yamada

Grape 1.6: An Opinionated Framework for Creating REST-like APIs — Grape can run on Rack or be easily pulled into existing apps using Rails or Sinatra, say, and provides a neat DSL to build RESTful APIs. 1.6 drops Ruby 2.4 support.

Michael Bleigh, Intridea Inc. et al.

Shortcut Puts the Agile in Agile and the “Can” in Kanban — Shortcut is made for developers and PMs, providing speedy task management, reporting, and collaboration. Try it today.

Shortcut (formerly Clubhouse.io) sponsor

HTTPI 2.5.0: A Common Interface for Ruby HTTP Libraries — If for some reason it would be useful to code to a single API but then be able to switch between Net::HTTP, Curb, excon and a few others (no http gem, alas), this may be for you. GitHub repo.

Daniel Harrington

Amazing Print 1.4: Pretty Print Your Ruby Objects with Style
AmazingPrint

Test Kitchen 3.1: An Integration Tool for Testing Infrastructure Code
Test Kitchen

JWT: Ruby Implementation of the RFC 7519 OAuth JSON Web Token (JWT) Standard
Jeff Lindsay

apple_id: 'Sign-In with Apple' Backend Library
Nov Matake

😄 And a fun one..

Generate SVG Art from Supplied ASCII Characters — A slightly unusual project this, but it’s creative and the output looks neat.

Andreas Banholzer