Quantcast
Channel: Ruby Weekly
Viewing all 462 articles
Browse latest View live

Ruby 2.6.2 Released

$
0
0

#441 — March 14, 2019

Read on the Web

Ruby Weekly

About Ruby Certification— Did you know that Ruby has an official certification provided by the Ruby Association (a Japanese organization chaired by Matz himself)? Here, a developer took the required test and shares his experience.

Nikita Misharin

Ruby 2.6.2 (and 2.5.4) Released— These releases (2.5.4 is here) are mostly due to the RubyGems security issues we mentioned last week.

Yui Naruse

Production-Quality Redis Hosting— Better tools, analytics and support for your high-performance Redis needs.

RedisGreen sponsor

Rubyfmt: An Autoformatter for Ruby Code— If you’ve used Go at all, you may be familiar with gofmt. This early stage project is an attempt at a similar sort of linter/formatter but for Ruby.

Sam Phippen

sqlite3-ruby 1.4.0: Ruby Bindings for SQLite3— The first release in two years. Apart from the usual bug fixes, the main new feature is support for defining custom aggregate functions - the tests help illustrate how they’re used.

Sparkle Motion

Rails 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, and 6.0.0.beta3 Released— These patch level releases resolve some security issues, in particular two vulnerabilities in Action View.

Official Rails Blog

💻 Jobs

Senior Web Developer at Dr. Bill (Remote OK)— Dr. Bill helps Canadian doctors save time by streamlining their billing. Help lead our team into the next phase of growth.

Dr. Bill

Full Stack Engineer (Growth) - New York City— Help others by improving access to tech education globally. Help yourself with a competitive salary, daily free lunch, and yearly international retreats.

DataCamp

Find A Job Through Vettery— Vettery specializes in dev roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Don't Use Instance Variables in Partials— This is a PSA about partials and their evolution in a growing app.

Andy Croll

▶  How to Use Rails 6's ActionText— A quick introduction to using ActionText in Rails 6 (still in beta) apps for editing and displaying rich text plus uploading files.

Go Rails

Rails 6 Adds ActiveRecord::Relation#touch_all— It’s like touch (which updates records’ updated_at or other timestamps) but for multiple records.

Amit Choudhary

▶  Discussing TDD Workflows with Kent Beck— A 55 minute chat with the author of Test-Driven Development: By Example that digs into how to get started with testing if you’re still unsure.

The Ruby Testing Podcast podcast

▶  Discussing Why Rails Needs 'Active Deployment' with Stefan Wintermeyer— A 50 minute chat with the author of numerous Rails books.

Ruby Rogues Podcast podcast

How (Not) to Integrate Elasticsearch Testing with RSpec“I encountered several problems along the way. I hope this post will prevent readers from making my mistakes.”

Timur Yanberdin

🔧 Code & Tools

Sublime Text 3.2 Released— Not Ruby specific, but we know a lot of Rubyists use this popular editor and releases tend to be far apart.

Sublime Blog

Simplify Event Tracking with a Single API— Collect data once with Segment and send it to 200+ tools. Get a free developer account.

Segment sponsor

Shrine: A File Attachment Toolkit for Ruby Applications— Integrates with several ORMs, can do image processing (for thumbnails, say), resumable uploads, and can work with both Rails and standard Rack apps.

Shrine

Phony: International Phone Number Normalizing and Formatting— For full, international E.164 standard numbers only.

Florian R. Hanke

active-record-query-trace: Rails Plugin That Logs a Backtrace of ActiveRecord Queries

Bruno Facca

Automated Visual Testing for Rails Apps. Start for Free

Percy sponsor

Groupdate: A Simple Way to Group Temporal Data in Active Record

Andrew Kane

Sidekiq Statistic: See Statistics About Your Sidekiq Workers

Anton Davydov


Are numeric parameters coming to Ruby 2.7?

$
0
0

#442 — March 21, 2019

Read on the Web

Ruby Weekly

Ruby 2.7 Adding Numbered Parameter Support?— An interesting feature here that lets you reference a parameter numerically, i.e. @1 for the first or @2 for the second. This is generating a fair bit of debate in the Rubysphere with even Matz being a little unsure. Here’s the commit that enables it in head.

Brandon Weaver

What Causes Ruby Memory Bloat?— Some say fragmentation by Ruby or the memory allocator, but what is really going on and is there some way to trim Ruby’s memory usage?

Hongli Lai

Hongli's article provoked some interesting responses:

Redis Made Observable— RedisGreen provides better tools, instrumentation and support for high-performance Redis.

RedisGreen sponsor

'Why I Believe Rails Is Still Relevant in 2019'“Rails is secure, open source and ubiquitous. The talent pool is deep. The framework is mature. The community is vibrant.” Lots of interesting discussion in the Hacker News thread too.

Brett Richardson

Jekyll 4.0 Alpha 1 Released— It’s early days for the next major version of the popular static site generator (which is heavily used well beyond the Ruby world). Breaking changes include dropping Ruby 2.3, as well as removing Pygments, rdiscount, and RedCarpet support (some truly classic Ruby gems!)

Jekyll

Lamby: Getting Rails on AWS Lambda with SAM— It’s early days for this project, and after tweeting with Ken, it seems he’s busy at work making it better, but anything that makes it easier to work with Ruby both serverlessly and on AWS is good in my book. The project is here.

Ken Collins

RubyConf Taiwan 2019's CFP Now Open— Coming up July 26-27 this year. CFP closes April 25.

RubyConf Taiwan 2019 event

💻 Jobs

Senior Software Engineer - Invoca (Santa Barbara, or Remote US)— Join our collaborative engineering team, deploying code to our production SaaS platform & public cloud infrastructure.

Invoca

Site Reliability Engineer @ Ably (Ruby, London/UK Remote)— Join the team behind a global fault-tolerant serverless data stream platform, using Ruby to automate Internet-scale infrastructure.

Ably Realtime

Find A Job Through Vettery— Vettery specializes in dev roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

An Unusual RSpec Time Issue— An investigation into why a test was failing only 30 minutes per day and, to our surprise, it wasn’t because of timezones.

Daniel Vandersluis

A Look at Using Que Instead of Sidekiq for Background JobsSidekiq is awesome but sometimes alternatives make more sense. Que, shown here, uses Postgres as the backend store.

Pete Keen

Testing Rails Migrations— If you’re really dedicated to that 100% test coverage, you better start testing those migrations! But is it useful to do so? Hard to say.

Alberto Vena

Dynamo-ite! Using DynamoDB Without Blowing Up Your Budget 💥💸— Join us as we face down the challenges of using DynamoDB cost-effectively with large amounts of frequently-updated data.

Honeybadger sponsor

How Ruby 2.6 Allowed Me to Contribute to httparty— In Ruby 2.6, Net::HTTP gained support for setting a write timeout. Igor noticed this and contributed a patch to the popular httparty HTTP client.

Igor Springer

▶  Discussing Ruby Bindings & Extensions with FFI with Sean Handley

Ruby Rogues podcast

In Defense of YAMLYAML is a particularly popular markup language in the Ruby space, especially for config settings such as in Rails. It’s faced a lot of criticisms in recent years but it’s not entirely fair.

Rod Johnson

Do You Really Know How public, private, and protected Work?— The author is betting that you don’t. In fact, it’s likely most Ruby developers don’t really understand the full effects of these modifiers, particularly the little used protected.

Błażej Pichur

How to Build a Dynamic Website Using Google Sheets and Sinatra— For the right use cases, this is a pretty compelling combination of frontend and backend. (Sorry about Medium’s code formatting.)

Jacob Whitish

🔧 Code & Tools

Ruby 2.5.5 Released— Includes a bug fix for a deadlock issue in multi-process Process.fork-based apps. (Note: 2.6.2 remains the latest Ruby version.)

ruby-lang

Undercover: A Tool to Stop You Shipping Untested Code— It’s like RuboCop but for code coverage rather than code style.

Jan Grodowski

Himl: An HTML-Based Indented Markup Language— Remember Haml? Himl is an attempt at a more HTML-flavored version of the same idea that attempts to meet HTML and Haml fans in the middle.

Akira Matsuda

Run Your CI/CD Pipelines on Azure Using GoCD

GoCD sponsor

table_print: Format Your Data in Tables at the Terminal— There’s an informative three-minute screencast of all the features. (Not new, but it's neat.)

Chris Doyle

Why RubyMotion?

$
0
0

#443 — March 28, 2019

Read on the Web

Ruby Weekly

Why RubyMotion?— When a very long standing Ruby developer cheerleads for a particular technology, it’s worth seeing what they have to say! Here Lori Olson looks at RubyMotion, a toolkit for writing cross-platform native apps with Ruby. Its been around for several years but is continuing to move forward as a project at a healthy pace.

Lori Olson

Rails 5.2.3 Released— Until Rails 6 arrives, Rails 5.2 is still the latest version and 5.2.3 is mostly a lot of minor fixes rather than anything new (with the exceptions of HashWithIndifferentAccess#assoc now accepting either strings or symbols and Range#cover? can now accept a range argument).

Official Rails Blog

Creating Automated Build, Test, and Deploy Workflows for Orbs— Fifteen weeks out from the launch of CircleCI orbs, there are more than 405 orbs in the Orb Registry. That’s upwards of 25 new orbs per week.

CircleCI sponsor

Announcing Amazon Transcribe Streaming Transcription Support in the AWS SDK for Ruby— Amazon Transcribe’s ‘streaming transcription’ feature can be used to transcribe audio supplied, as a stream, on the fly. Here’s how to use it from Ruby.

Amazon Web Services

Rails 5.1.7 Released— Note that this is the final bug fix release of the 5.1 line.

Official Rails Blog

ActiveRecordExtended 1.0: Adds Additional Postgres Functionality to Active Record— Active Record is naturally database agnostic but PostgreSQL has so many great querying features that it’s a shame not to be able to use them. This gem brings things like array and JSON querying, CTEs, and unions to AR.

George Protacio-Karaszi

⏰ A Countdown to Rails 6 in New Features

BigBinary have been doing a great run of posts on useful, though relatively minor, new Rails 6 features, so we've pulled together a few here:

Rails 6 Adds create_or_find_by and create_or_find_by!— A useful addition designed to avoid race conditions, but use it wisely, especially if you have integer primary keys…

Rails 6 Shows Unpermitted Params in Logs in Color

Rails 6 Shows Routes in Expanded Format— The output of rails routes can get unruly, so a new optional table format is welcomed.

Rails 6 Adds ActiveModel::Errors#slice!

💻 Jobs

Sr. Fullstack Engineer (Remote)— Sticker Mule is looking for passionate developers to join our remote team. Come help us become the Internet’s best place to shop and work.

Sticker Mule

Full-Stack Engineer - React/Rails (NYC)— Rapidly growing healthcare startup in the addiction and sobriety space seeking talented developers to help build the future of online addiction and sobriety support.

Tempest, Inc

Find A Job Through Vettery— Vettery specializes in dev roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Using ActiveStorage in Rails API-Based Apps— How to use and test ActiveStorage in a Rails API-only app and which pitfalls to be aware of.

Tim Landwerth

Protect Your Sign Up Form with Rack::Attack— A simple middleware to stop bots and hackers from signing loads of fake accounts up to your site.

Andy Croll

How We Built a Highly Performant App with Rails and Phoenix— Phoenix is a Web framework for Elixir, the Ruby-inspired Erlang-based language.

Zuzia Kusznir

Best Practices for Improving Page Load Speed Whitepaper. Download Now

Cloudinary sponsor

An Deep Dive into TensorStream— TensorStream, a machine learning framework, is based on TensorFlow that supports multiple backends, including pure Ruby.

Joseph Emmanuel Dayo

A Reminder About Hash#new— This is a really simple feature but easily overlooked if you’re used to creating hashes using the literal syntax only.

Scott Watermasysk

How to Work with Docker and Docker Compose from RubyMineRubyMine is a popular, commercial Ruby IDE whose early access version has just introduced Docker support. It’s also introduced support for profiling with rbspy.

Andrey Aksenov (JetBrains)

Scaling a Ruby Webapp on Heroku— Here’s an easy to remember process and a solid checklist of items to go after when you want to maximize performance on Heroku.

Scott Bartell

Ruby Under The Influence [of Scala]— Some subtle ways that programming in Scala has changed the way one developer writes Ruby code.

Rachel Mathew

▶  Discussing Rubymotion with Lori OlsonRubyMotion is a toolkit for writing cross-platform native apps with Ruby. See the top-most feature in this issue.

Ruby Rogues podcast

🔧 Code & Tools

faastRuby 0.5: Build Rich Serverless Applications using Ruby (and Crystal)— I’ve been watching this project mature from afar and they’re doing some interesting stuff in the serverless space for Rubyists.

Geoff Sullivan

Shop Like a Developer— Discover and experiment with hot new cloud services on Manifold. 🔥

Manifold sponsor

Truemail: Configurable Plain Ruby Email Validator— Offers three levels of email validation: regex, MX records, and SMTP.

Ruby Garage

E-Petitions: The Code for the UK Government's E-Petitions Service— This app has become relatively (in)famous over the past week for an overwhelmingly popular petition to revoke Brexit which brought the site down on several occasions.

UK Government Digital Service

Fast Binary Encoding (FBE): Fast and Universal Serialization— An interesting project that supports C++, C#, Go, Java, JavaScript, Kotlin, Python, and Ruby all out of the box on the three major platforms.

Ivan Shynkarenka

Signet: An OAuth 1.0/2.0 Implementation from Google

Google APIs

😢 And finally, a goodbye..

Bye Bye (Ruby Powered) Sass— I don’t think it’s an exaggeration to say that Sass had a huge impact on Web development and while it was originally written in Ruby, the Ruby-powered version is now officially deprecated.

Twitter

Bye Ruby 2.3, and a backdoor in a popular gem

$
0
0

#444 — April 4, 2019

Read on the Web

Ruby Weekly

Malicious Remote Code Execution Backdoor Discovered in a Popular Gem— Last week, a malicious version (v3.2.0.3) of the bootstrap-sass package was published with a backdoor that could allow third parties to run arbitrary Ruby code passed via cookie. If you are using bootstrap-sass, check the version you’re using and upgrade if appropriate.

Liran Tal

The Missing Ruby Code Formatter— There’s no “one true formatter” but there are several options, where are evaluated here. Bozhidar clearly has a favorite, which makes a lot of sense.

Bozhidar Batsov

Automate Domains, DNS, and SSL Certificates Via DNSimple API— The DNSimple API Ruby client takes domain automation to the next level. Register domains, manage and monitor DNS records, issue free. Let's Encrypt SSL certificates, and get Webhooks for event notifications. Get started with our 3 part mini course.

DNSimple sponsor

Support of Ruby 2.3 Has Ended— Doesn’t it feel like only yesterday that we entered the world of Ruby 2.0? Well, Ruby 2.3 has already reached end-of-life and 2.4 is only in security maintenance mode, so you want to be upgrading all production systems to 2.5 and 2.6 soon.

Anton Paisov

Ruby’s Creed— Bozhidar takes issue with some of the proposed additions to Ruby (sounds like “pumbered narameters”) and their conflict with optimizing for programming happiness.

Bozhidar Batsov

The Status of Ruby Memory Trimming— Phusion’s Hongli Lai recently wrote about memory bloat and now he reflects on measurements made by other people and encourages you to get involved with testing for yourself.

Hongli Lai

Why I Stuck with Windows for 6 Years While Developing DiscourseDiscourse is a popular Ruby-based forum system and one of its lead developers reflects on the speed of its test suite (which appears to be incredibly slow on macOS). There are also some clear insights: Habits are hard to break and stop you from growing; don’t be afraid to experiment.

Sam Saffron

💻 Jobs

Sr/Software Engineer - The Age of Privacy Is Here (SF Bay Area)— DataGrail helps customers offer transparency and control of personal data. Rails. Go. CI/CD. Modern stack.

DataGrail

Ruby on Rails Developer at X-Team (Remote)— Join the most energizing community for developers. Work from anywhere with the world's leading brands.

X-Team

Find A Job Through Vettery— Vettery specializes in dev roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Learning by Building A Background Processing System in Ruby— If you’ve ever wondered how libraries like Sidekiq work, this article will take you pretty far down the path to making your own job processor.

Benedikt Deicke

How to Access Production Data in Rails Migrations— This is one of those articles that presents the smart, well-thought-out way to perform a task we’ve all done. If you’re migrating data, do it this way.

Greg Navis

Making Flux Queries in Rails

InfluxData sponsor

Processing a CSV File in Batch with Sidekiq

Cleiviane Costa

Rails 6 Adds ActiveRecord::Relation#reselect— This joins the rewhere and reorder methods as another way to change previously set attributes on queries or scopes.

Abhay Nikam

▶  Rails 6's db:system:change Command— A new command in Rails 6 will make it a little easier to switch database systems. Here’s how it works.

Go Rails

Monitoring Puma with Prometheus and Grafana

Salahutdinov Dmitry

Moving On From Rails and What's Next— A long time committer to Ruby and Rails reluctantly says goodbye..I guess you could say he got Rusty.. Thanks for your work Sean!

Sean Griffin

🔧 Code & Tools

Ruby 2.4.6 Released— This is the final maintenance release of Ruby 2.4 and it’ll only be getting security fixes from here on out. Upgrade to Ruby 2.5 or 2.6 when you can.

ruby-lang

CanCanCan 3.0: The Authorization Library— The most used Ruby authorization framework has some breaking changes and solid new features (including Rails 6 support). can? :read, @you, this_post => true.

Alessandro Rodi

Deploy Only the Parts of Your RoR Apps That Have Changed

Buddy sponsor

Aws::Record: A Data Mapping Abstraction for Amazon DynamoDB— This is still baking, so now’s your chance to help them test it out and create the best API possible.

Amazon Web Services

still_life: Compare Rendered HTML Before and After App Updates— Billed as a “Rails upgrade’s best friend”, this tool is designed for comparing eventual HTML output of an app before and after a Rails upgrade, say.

Akira Matsuda

MerkleTree: A Binary Tree of One-Time Signatures— Wikipedia has more info on what merkle trees are, but they’re used in distributed systems like git, Bitcoin and Ethereum.

Piotr Murach

'Beginless' ranges, using React.js with Rails, and building a chat app

$
0
0

#445 — April 11, 2019

Read on the Web

Ruby Weekly

Let's Build a Chat App from Scratch using Rails and WebSockets— Our Step-by-Step Tutorial of the Week™! A thorough look at using ActionCable to create a nice looking real-time chat app.

Lazarus Lazaridis

React-Rails 2.5: Easily Integrate React.js into Rails Apps— Are you a React developer who likes a bit of Rails on the backend? React-Rails is for you and makes it easy to integrate React with the Rails asset pipeline, views, and controllers. Docs here.

React Community

eBook: How to Get a 3x Performance Improvement on Your Postgres Database— The pganalyze team shares their best practices, learned over the last few years by helping companies like Atlassian optimize their Postgres databases.

pganalyze sponsor

Rails 6 Requires Ruby 2.5 or Newer— Also, Rails 6 will not support PostgreSQL versions older than 9.3 (11.x is the latest version but 9.x versions are still very common in production).

Vishal Telangre

'Beginless' Ranges Experimentally Added to Ruby 2.7— e.g...100— `“It might not be as useful as an endless range, but would be good for DSL purpose.” What happens if we use it with an endless range? 😂

Ruby Core

The 3rd Edition of 'The Well-Grounded Rubyist' Is OutThe Well Grounded Rubyist is a very popular Ruby book and it’s great to see a new edition out (available on Amazon.com). There’s also a book signing and talk in New York City next Wednesday if you can make it.

David A. Black and Joseph Leo III

Google App Engine Now Supports Ruby 2.5 (in Alpha)— It’s buried way down in a post about something else entirely, but Google’s serverless app platform now has (very) initial support for Ruby 2.5.

Google Cloud Blog

💻 Jobs

Sr. Software Engineer - Rails— You get it done with Rails, have strong programming fundamentals, are adaptable, and ready to jump in anywhere. Leafly is looking for you.

Leafly

New Career for Ruby Engineers. All Levels (Edinburgh, Remote)— Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us.

FreeAgent

Find A Ruby Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📘 Articles & Tutorials

▶  Faking Method Inputs with OpenStruct— A useful, quick tip that can be used to refactor a method without having to build all its dependencies.

Avdi Grimm and Kerri Miller

Object Marshalling in Ruby— A detailed look at how Ruby serializes/deserializes data, the methods involved, and how to customize the marshalling process.

Mehdi Farsi

Creating a Basic, Native Ruby Extension in C— It’s not entirely straightforward but this tutorial breaks down the key steps.

Vinicius Stock

A Rails Model Test 'Hello World'— A tutorial showing off the basic process for getting RSpec set up and using it to do a simple model test.

Jason Swett

Replace chromedriver-helper with webdriverswebdrivers is now the way you’ll want to manage Selenium drivers when testing from a Rails app and improves support for non-Chrome browsers.

Aaron Sumner

🔧 Code & Tools

JRuby 9.2.7.0 Released— The JVM-oriented Ruby implementation gets a variety of bugfixes and stays in sync with CRuby 2.5.x standards.

JRuby Core Team

Automated Dependency Updates for On-Premises GitHub and GitLab— Run Depfu Enterprise behind your firewall and keep your app dependencies up-to-date effortlessly.

Depfu sponsor

InSpec: An Auditing and Testing Framework for Infrastructure— Write tests to check firewall rules, installed packages, etc, and run locally or remotely. Targets most production OS including Windows.

InSpec

Arbre: A Way to Build HTML Views in Ruby Code— Billing itself as an ‘object-oriented DOM tree in Ruby’, Arbre is extracted from the popular Active Admin Rails administration framework system.

Active Admin

lol_dba: Scan Your Application for Columns That Should Be Indexed— It can also generate the SQL/migrations to create the indexes.

Diego Plentz

critical-path-css-rails: Only Load CSS Required for the Initial Viewport in Rails

Mudbug Media

device_invitable: An Invitation (by Email) Strategy for Devise

Sergio Cambra

Get the Fastest Website Deployments. Ever.

Buddy sponsor

Asciidoctor: A Fast AsciiDoc Text Processor and Publishing Toolchain— Convert AsciiDoc content to HTML, PDF and other formats. The recent 2.0 release is a big step forward.

Asciidoctor

imap-backup: A Tool to Backup Gmail (or Other IMAP) Accounts to Disk— Written in Ruby, of course.

Joe Yates

First Impressions of Ruby 2.7's Pattern Matching

$
0
0

#446 — April 18, 2019

Read on the Web

Ruby Weekly

First Impressions of Ruby 2.7's Pattern Matching— Enjoy this ‘sneak peek’ at what pattern matching looks like in the forthcoming Ruby 2.7. It’s essentially an extension to case using in instead of when.

Brandon Weaver

Approximating “Prettier for Ruby” with RuboCop— The folks at Flexport have open-sourced some “cops” (RuboCop plugins) to bring Prettier-style autocorrection to Ruby. (Although, as we’ve reported recently, there is also a Ruby plugin for Prettier itself.)

Max Heinritz

Automate Your Code Reviews— Take the hassle out of shipping quality code - Codacy flags errors so you can fix them quickly. Address security concerns, code duplication, code complexity, drops in coverage, and more, directly from your current workflow. Get started today.

Codacy sponsor

Optimizing Database Performance in Rails— Some Rails and Heroku tools to help clean up slow database issues including a quick look at caching.

Heroku

Searchkick 4.0: Intelligent Search for Ruby Webapps— A very mature library that uses Elasticsearch to provide ‘smart’ search that learns from what your users are searching for.

Andrew Kane

How Do You Know If A Gem Is "Done" or "Dead"?— Here’s an interesting discussion around how tools like RubyToolbox should indicate if a gem is still “active” and what that means so we can avoid dead gems in our apps.

The Ruby Toolbox

💻 Jobs

Senior Ruby Developer at Arsenal (Remote)— We're using machine learning to help get the best photos possible with DSLR or mirrorless cameras.

Arsenal

Backend Engineer at Splitwise (Providence/Greater Boston)— Splitwise helps millions of happy users in 170+ countries manage shared expenses with friends and family. Come help us scale.

Splitwise

Find A Ruby Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📘 Articles & Tutorials

Prevent Links in Text Fields to Foil Spammers— If your app turns user input into emails at all, you might want to avoid allowing URLs in, since many email clients will link them by default.

Andy Croll

Working with Dynamic JSON Attributes in Rails— Including performing validations on them.

Tom Rothe

Founders/CTOs: We Upgrade Rails So That Your Team Doesn't Have To— With Rails 4.2 approaching end-of-life (when Rails 6 is released this month), the time to upgrade is now.

Upgrade Rails sponsor

▶  How to Use JavaScript via Webpacker in Rails 6— Rails 6 defaults to using Webpacker instead of the asset pipeline.

Go Rails

A Way to Validate and Fix Active Record Data Integrity— Thoughts on an approach to take if your data gets into an ‘invalid’ state (via arbitrary updates, skipping validations, broken dependencies, etc.)

Paweł Urbanek

▶  Discussing the Evolution of RubyMotion with Lori Olson— A 25 minute chat about RubyMotion, a toolkit for building cross-platform apps in Ruby.

The Ruby on Rails Podcast podcast

Ruby 2.6.3 Released— Includes some bug fixes, an update to the 12.1 Unicode beta and adds support for the new Japanese Era “令和” (Reiwa).

Yui Naruse

🔧 Code & Tools

pry-nav: A JRuby-Compatiable Way to Add Debugging Features to PryPry is a fantastic REPL, and if you’re using Pry but not using MRI, you’ll like this.

Gopal Patel

Licensed: Cache and Verify the Licenses of Dependencies— Currently being used at GitHub itself.

GitHub

Spreadsheet Architect: Create Spreadsheets from Ruby Objects— A library to create XLSX, ODS, or CSV spreadsheets from Active Record relations, plain Ruby objects, or tabular data.

Weston Ganger

Get the Fastest Website Deployments

Buddy sponsor

resque-scheduler: A Lightweight Job Scheduling System Built on Top of Resque

Resque

An AWS Lambda Layer for the ruby-vips Gem— If you’re using ruby-vips for image processing and want to use it from a Ruby-powered AWS Lambda function, this will help.

Custom Ink

excon: A Fast, Simple HTTP 1.1 Client for Ruby— Has just had its first update in a year.

excon

Textbringer 1.0: An Emacs-Like Text Editor Written in Ruby— It’s just reached version 1.0. Congratulations, Shugo.

Shugo Maeda

A Ruby 3 progress report

$
0
0

#447 — April 25, 2019

Read on the Web

Ruby Weekly

A Ruby 3 Progress Report— Ruby 3 is due to be released in 2020 (following Ruby 2.7 this Christmas) and progress is looking good. This is only a slidedeck but does a good job of illustrating the main points. It’s also interesting to learn that types will make an appearance in Ruby 3!

RubyKaigi 2019 slidedeck

Rails 6.0.0 Release Candidate 1 Released— It’s several weeks behind schedule but things are progressing well for the next version of Rails and DHH reassures us that we should be starting any new Rails apps on 6.0.0.rc1 now.

David Heinemeier Hansson

Powerful CI/CD Pipelines. Pay Only For What You Use— Built for developer productivity, Semaphore 2.0 allows you to model any CI/CD workflow with fully customizable, powerful pipelines. With the new pricing model you pay only for what you use. Sign up free with GitHub and give it a run-through.

Semaphore 2.0 sponsor

Graphiti: Add REST-based Graph APIs to Ruby Webapps— You’ll need to watch the video or see the quickstart to get the idea, but it’s essentially a REST-flavored alternative to something like GraphQL which means you don’t need to leave behind the REST you know and love.

Lee Richmond

Ruby Repository Moved to Git from Subversion— The repo is now at git.ruby-lang.org with the GitHub repo remaining a mirror.

Hiroshi Shibata

Ruby Conference Thailand 2019— The first Ruby Conference in Bangkok, September 6-7, tickets are on sale now. Talks are welcomed too, with speakers already including Richard Schneeman and Saron Yitbarek.

RubyConfTH

💻 Jobs

New Career for Ruby Engineers. All Levels (Edinburgh, Remote)— Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us.

FreeAgent

Senior Software Engineer - Catawiki (Amsterdam)— We’re a fun, thriving scale-up using Ruby (and a little bit of Go) to help millions of users fulfil their passions. We have technical and product challenges, and need you to solve them.

Catawiki

Have You Tried Vettery?— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📘 Articles & Tutorials

Boost Your Shell Scripting with Ruby and RexeRexe“executes Ruby code on the command line” and offers many conveniences beyond vanilla ruby.

Keith Bennett

How TruffleRuby’s Startup Became Faster Than MRI— The chain of optimizations used to minimize the simplest (ruby -e 'puts "Hello World"') Ruby script. It’s interesting to think how a non-MRI interpreter got here.

Benoit Daloze

Pop Quiz Hot Shot, Your App Is on Fire, What Do You Do? ⏱🔥— Answer: Open Honeybadger’s real-time incident report in PagerDuty, check the backtrace, and fix in GitHub. Done. 😎

Honeybadger sponsor

Optimizing Database Performance in Rails— Some Rails and Heroku tools to help clean up slow database issues including a quick look at caching.

Heroku

Rails 6 Adds implicit_order_column— Adds the ability to control which column is used for order, but it also adds some smarter defaults around UUIDs.

BigBinary Blog

Using Streams to Build Read Models— How using an event stream can accelerate the path to an evented data architecture and avoid upfront migrations.

Arkency Blog

Automated Gratitude at Scale— Feeling the need to thank the top 100 Rails contributors, Giles wrote an app to quantify each contribution to focus his appreciation. Here’s an example of such a post.

Giles Bowkett

Pattern Matching – Second ImpressionsA Quest for Pattern Matching in Ruby was a popular article 3 years ago, so what are the author’s thoughts about what’s coming to Ruby core?

Paweł Świątkowski

🔧 Code & Tools

Faktory 1.0 Released: A High-Performance Background Job System— Faktory, created by the maker of Sidekiq, offers language-independent background job processing and could be handy if you have a multi-language app stack.

Faktory

Gel: An Alternative Gem Manager— As yarn is to npm so Gel is to Bundler and Rubygems. “Gel was written with the goal of improving the performance of common Bundler tasks.”

gel.rb

Become a Ruby Guru with RubyMine

JetBrains sponsor

rspec-benchmark: Performance Testing Matchers for RSpec— Adds cool matchers around timing, like perform_under(6).ms, as well as others around iterations and comparisons.

Piotr Murach

iri: A Simple Immutable Ruby URI Builder— At first glance, I like the fluent API this offers.

Yegor Bugayenko

graphql-cache: A Caching Plugin for graphql-ruby— Another company scratches their own itch and we all benefit.

StackShare

Sneaking Ruby onto a Nintendo Switch

$
0
0

#448 — May 2, 2019

Read on the Web

Ruby Weekly

Rails 6: B-Sides and Rarities— A nice list of some of the lesser-publicized additions to Rails 6 (currently in its release candidate phase), such as Action Cable testing, bulk (in/up)serts, per-environment credentials, and actionable errors in the browser.

Martian Chronicles

🎮  Developer Sneaks Ruby Coding Environment into Nintendo Switch Game— The CEO of RubyMotion created a game with a Ruby REPL Easter Egg. Needless to say, Nintendo was not amused 😂 Psst.. Switch Weekly, it exists!

Wesley Yin-Poole

Not All DevOps Heroes Wear Capes, but They Do Use Honeybadger— Honeybadger combines exception, uptime and check-in monitoring into a single, easy to use platform. It also integrates with apps you use: Slack, PagerDuty, GitHub and tons more. Discover how easy Honeybadger makes it for you to be a DevOps hero.

Honeybadger sponsor

Two Hidden Gems: Delegator and Forwardable— A helpful and thorough look at two parts of the standard library that aim to help you with delegation.

Michael Kohl (AppSignal)

A List of Forthcoming Ruby Conferences— We often include lists of events in our newsletters, but this site is doing a great job too. Make sure you’re not missing out on any Ruby conferences you might want to attend. Along similar lines is RubyMap, a world map of local Ruby communities (be sure to add yours!)

Jon Allured

Procodile: A Simple Process Manager for Development and Production— Procodile works with Procfiles, like foreman, but adds the ability to specify options, integrate easily with systemd, and more.

aTech Media

🎂  The Ruby Toolbox Turns 10 Years Old— Sure, it took a bit of a hiatus, but it’s back better than ever and it’s great to see anything in our community hit double digits.

Christoph Olszowka

💻 Jobs

Senior Software Engineer - Catawiki (Amsterdam)— We’re a fun, thriving scale-up using Ruby (and a little bit of Go) to help millions of users fulfil their passions. We have technical and product challenges, and need you to solve them.

Catawiki

Ruby on Rails Developer at X-Team (Remote)— Join the most energizing community for developers. Work from anywhere with the world's leading brands.

X-Team

Have You Tried Vettery?— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📘 Articles & Tutorials

Using Custom Objects in Ruby Ranges— Not only is this a cool tick to know, he uses Star Wars movies in the example. Air lightsabers while making vrzzzzz noises…

Tim Ash

How to Schedule Cron Jobs in Ruby with the whenever Gem— Cron is a job scheduling system on most POSIX systems and whenever provides a neat, Rubyish way to work with it.

Jesus Castello

A Rails Testing "Hello World" using RSpec and Capybara— An excerpt from Jason’s book (Rails Testing for Beginners), how to set up a Rails app from scratch to use RSpec.

Jason Swett

Do You Know What's Hiding in Your App? An App Review Gives Certainty

reinteractive - ROR App Review sponsor

A Visual Trace of How Rails Responds to a Request— A very cool visualization (built using TracePoint) of the “2041 Ruby method calls made by a Rails 5.2.2 server running in production mode”.

Chris Zetter

▶  How to Use Bootstrap with Webpack and Railswebpacker makes it super easy to load both Bootstrap’s CSS and JS into your Rails app using webpack.

Go Rails

🔧 Code & Tools

Suspenders: A Rails Template with Thoughbot's Standard Defaults— Thoughtbot know a lot about building Rails apps, so using their starter app isn’t a bad idea, especially as they keep it up to date.

thoughtbot, inc.

Shiba: Catch Bad SQL Queries Before They Cause Problems in Production— It’s only in alpha for now, but Shiba can review the SQL created by ActiveRecord queries for common performance issues and create pull requests that highlight the offending lines.

Burrito Brothers

GoCD - Open Source CI/CD Tool— GoCD provides visibility into complex deployments & supports cloud environments like Kubernetes, Docker, AWS, Azure.

ThoughtWorks - GoCD sponsor

rom 5.0.0 and rom-sql 3.0.0 Released— The new release includes some nice DSL updates, especially around joins, support for case statements, and more. There’s rom-http 0.8.0 too if you’re living that Ruby Object Mapper lifestyle.

Piotr Solnica

wasmer: A Ruby Extension to Run WebAssembly Binaries

Wasmer

Arx: A Ruby Interface for Querying Academic Papers on ArXiv

Edwin Onuonga

Job Iteration 1.0: Makes ActiveJob Jobs Interruptible and Resumable

Shopify

Scientist: A Ruby Library for Carefully Refactoring Critical Paths— Scientist allows you to experiment with refactorings alongside the old code and publish the results. It’s recently had its first release in a year.

GitHub

tesla_api: An Unofficial Gem for Tesla's JSON API— Want to control your Tesla’s seat or steering wheel heater from a Ruby script? Why, yes, we hear you all cry.

Tim Dorr


A guide to function composition in Ruby 2.6+

$
0
0

#449 — May 9, 2019

Read on the Web

Ruby Weekly

A Guide to Function Composition in Ruby— Ruby 2.6’s introduction of the << and >> function composition operators has opened up some interesting new techniques and this article tours them deftly. This topic clearly inspired two people at the same time as Tom Wey has a related article on function composition you might also enjoy.

Paul Mucur

RubyKaigi and the Path to Ruby 3— A summary of Matz’s talk at RubyKaigi that focused on performance, concurrency, and static analysis as they lay the path for Ruby 3, expected late in 2020.

Shannon Skipper

Automated Dependency Updates Done Right— Stop chasing the latest versions. Depfu's new reasonably up-to-date feature "matures" releases before sending you pull requests, while making sure you're never more than 1 month behind.

Depfu sponsor

Ruby 2.7 Adds Experimental Shorthand Operator for Object#method— Years in the making, this allows you to use thing.:method_name instead of thing.method(:method_name). You might find some of the discussion behind the design interesting too.

Vipul A M

🎧 Podcasts of the Week

There have been a few interesting Ruby related podcast episodes this week that are worth checking out if you have time:

💻 Jobs

New Career for Ruby Engineers. All Levels (Edinburgh, Remote)— Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us.

FreeAgent

Senior Software Developer - Ruby (London, UK)— We're a SaaS business that helps run, build and change small companies so they can run, build and change the world. 🚀

CHARLIEHR

Find A Ruby Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Instrumenting Rails Apps with Prometheus— A demonstration of how straightforward it is to export telemetry from Rails to the Prometheus open source monitoring system using ActiveSupport::Notifications and the prometheus_exporter gem.

Bobby Tables

6 Postgres Tips for Rails Developers— Improving Postgres performance for Rails, ft. statement time-outs, marginalia, pg_stat_statements, pgBouncer.

CITUS DATA, A MICROSOFT COMPANY sponsor

Weird Ruby: Pure Object-Oriented Negation— The first post in a series that explores the ‘twilight zone’ of Ruby. This post talks about the negation unary method (!) and what you can (and shouldn’t) do with it. You can play similar games with unary plus and minus too.

Bozhidar Batsov

How to Create an Array Containing a Single Hash Without Using Curly Braces— This is rather niche and a bit of a Ruby syntax quirk but I didn’t realize this would happen. Essentially [{ a: 10 }] == [a: 10]

Sean Lerner

How to Setup Ruby Object Mapper (ROM) for a Standalone Project— A look at setting ROM alone, without any web framework, covering migrations, testing, commands, and relations.

Igor Kuznetsov

Full Text Searching Linux Man Pages with Elasticsearch and Ruby— Yes, it’s from 2018 but I missed the opportunity to link it earlier :-)

Lazarus Lazaridis

▶  Nested Forms From Scratch with Stimulus— What’s involved in building forms in the new Rails order (i.e. Rails 6) without having to pull in any third-party gems to help.

Drifting Ruby

🔧 Code & Tools

RailsPanel: A Chrome Extension for Rails Development— Stop tailing development.log and see info about your app’s requests in Chrome’s DevTools instead. The first new version in over a year just dropped.

Dejan Simic

SearchFlip: Full-Featured Elasticsearch Client with Chainable DSL— Elasticsearch is still the best system I’ve found to add powerful search features to my apps, so maybe I’ll give this a try..

Benjamin Vetter

Get the Fastest Website Deployments. Get Started Free

Buddy sponsor

Xcodeproj: Create and Modify Xcode Projects from Ruby— One for you macOS/iOS developers, this could help you script away boring management tasks or auto generate projects, etc.

CocoaPods

split: The Rack Based A/B 'Split' Testing Framework— A very mature framework with robust configuration and multiple options for determining the winning option.

Split

MiniMagick: A Mini Replacement for RMagick— If you were working with Ruby over 10 years ago, you can probably remember how irritating rmagick often was to install, so alternatives are always welcomed :-)

Corey Johnson

Tmuxinator 1.0: A Tool to Manage Complex tmux Sessions Easilytmux is a terminal multiplexer a lot like screen but with more features.

tmuxinator

Eucalypt: A New Sinatra App Generator— It’s early days for this, but as a Sinatra fan myself, it’s great to see more tooling appear around it.

eucalypt

Opal 1.0, RubyKaigi videos, and creating diagrams of your Rails models

$
0
0

#450 — May 16, 2019

Read on the Web

🎉 After a bit of a drought of new Ruby projects over the winter, there have been a lot of releases lately so scroll down and check out the Code & Tools section this week for sure — it's packed!

Ruby Weekly

Opal 1.0: The Ruby to JavaScript Compiler— A release seven years in the making, Opal is now faster, supports more Ruby features (such as Module.prepend) and has a promising roadmap (including first class Webpack support) for those that want Ruby everywhere.

Elia Schito

▶  The State of Sorbet: A Type Checker for Ruby— Even if you’re not interested in types, this is an interesting talk because Stripe are really trying to push Ruby developer productivity forward, and it’s also interesting to hear how Ruby is Stripe’s main development language.

Jake Zimmerman and Paul Tarjan

eBook: The Most Important Events to Monitor in Your Postgres Logs— In this pganalyze eBook, we are looking at the Top 6 Postgres log events for monitoring query performance and preventing downtime.

pganalyze sponsor

zxcvbn-ruby 1.0: A Password Strength Estimator— A Ruby port of Dropbox’s zxcvbn JavaScript library which you can use to show users how secure their passwords are or to enforce password security policy.

Envato

📺 RubyKaigi Videos of the Week

The RubyKaigi conference took place month and talk videos are now coming out thick and fast. Here are some of the highlights:

💻 Jobs

Ruby on Rails Engineer— Goldstar is looking for experienced Ruby on Rails engineers on-site in Portland, Oregon and Pasadena, California.

Goldstar

New Career for Ruby Engineers. All Levels (Edinburgh, Remote)— Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us.

FreeAgent

Find A Ruby Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

The Lifecycle of a Rails Request— The lifecycle here starts before DNS, journies through the web server and Rack before arriving in Rails and finally ending in a controller and view.

Godfrey Chan

Rails 6 Upgrade Best Practices— Are you ready for the latest version of Rails? Here are some tips to help your eventual upgrade go as smoothly as possible.

Nate Vick

Automate Your Code Reviews— Codacy flags errors in your code so you can fix them quickly, directly from your current workflow. Get started today.

Codacy sponsor

A Simpler Rails Benchmark, Puma and Concurrency— While writing a simpler, non-Discourse dependent Rails benchmark framework, Noah shows how more threads is definitely not always more better.

Noah Gibbs

4 Lesser Known Ways to Use Ruby’s Enumerable Module

Josh Dzielak

▶  Discussing Running a Ruby User Group— Riaz Virani organizes the Atlanta Ruby Users Group meetup and talks about how it all works from sponsors to costs. Handy if you’re planning to host a meetup of your own.

Drifting Ruby

RubyKaigi 2019: A Speaker’s Report— A report on the recent RubyKaigi 2019 event from a speaker’s point of view. In short: “if you still think that “Ruby is dead” then you’re just not paying attention.”

Andrey Novikov

▶  How to Use Action Mailbox in Rails 6— A demonstration of using Action Mailbox (a Rails 6 framework for routing incoming emails within an app) to process emails.

GoRails

🔧 Code & Tools

rails-erd: Generate Entity-Relationship Diagrams for Rails Apps“Generate a diagram based on your application’s Active Record models. The diagram gives an overview of how your models are related.”

Voormedia

High Voltage: Easily Include Static Pages in Your Rails App— Abstracts away some of the boilerplate around static pages (e.g. “About Us”) in otherwise dynamic apps.

Thoughtbot

Get the Fastest Website Deployments. Get Started Free

Buddy sponsor

minitest_log: Give Structure to Test Logs— So the test can “tell its story”. There are lots of options here.

Burdette Lamar

FactoryTrace: A Tool to Maintain Factories and Traits from FactoryBot— If you’re a heavy FactoryBot user, you need this as it’ll help you find unused factories and traits to clean up.

Evgeniy Demin

Dynamoid: A Ruby ORM for Amazon's DynamoDB— Get an ActiveRecord-esque for DynamoDB - no mean feat considering DynamoDB is a NoSQL key/value and document database.

Dynamoid

RouteTranslator: Translate Your Rails App Route to Various Languages— Manage the translations of your app routes with a simple dictionary format. Already works with Rails 6.

Enric Lluelles

Logidze: Log Database Changes in Rails Apps— Logs are stored in the database in a JSONB column (so Postgres only). It claims to be faster than Audited and PaperTrail which both remain fine alternatives in this area.

Vladimir Dementyev

telegram-bot-ruby: A Ruby Wrapper for Telegram's Bot APITelegram is a popular messaging app that’s particularly friendly to bot accounts and automation.

Alexander Tipugin

Blab: An Experimental Tool for Tracing Local Variables and Memory Usage— Not only experimental, but extremely experimental, but interesting nonetheless.

Yulia Oletskaya

The one where Haml and RMagick return from the dead?

$
0
0

#451 — May 23, 2019

Read on the Web

Ruby Weekly

httplog: Log Outgoing HTTP Requests in Ruby— If you want to debug pesky API integrations or just get a feel for what’s going on under the hood with certain libraries you’re using, this hooks into the popular ways to fetch HTTP from Ruby and logs everything for you. Version 1.3.0 just came out.

Thilo Rusche

Google Cloud Run on Rails: A Real Life Example— A four-part series on creating a Rails application and deploying it using Google Cloud Run, which brings “serverless to containers.”

Laurent Julliard

Get the Fastest RoR Deployments. Get Started Free— Unlike most Continuous Integration (CI) solutions, Buddy only re-builds the parts of your application that have changed and deploys your updates in seconds to any app store. Start building better apps faster with Buddy.

Buddy sponsor

▶  Test-Driven Re-Implementation with Josh Thompson— If watching solid Rubyists take apart a popular open source library (Rake) and reimplement it is your idea of a good time, have we got a video for you!

Avdi Grimm

A More Modular RuboCop— A look at breaking RuboCop (the code analyzer and formatter) up into three gems so each can focus on specific cops (general, performance and Rails).

Bozhidar Batsov

Building Serverless Ruby Functions with AWS Lambda and the Jets Framework— You don’t need a framework like Jets to deploy Ruby functions on AWS Lambda, but it can make life easier, as you’ll see here.

Phil Nash (Twilio)

💻 Jobs

Senior Software Engineer - Custom Ink (Fairfax, Virginia)— Are you passionate and pragmatic about the craft of writing code? If so - and you have the track record to back it up - read on.

CUSTOMINK

New Career for Ruby Engineers. All Levels (Edinburgh, Remote)— Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us.

FreeAgent

Find a Ruby Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Watch Out For nil in Ranges— The new endless ranges change behavior in a way that could break your code.

Andy Croll

How to Play MP3 Files with Ruby, VLC, and the FFI Module— FFI (Foreign Function Interface) allows you to access C libraries in your environment. In this case, it’s used to call libvlc to play an MP3.

Jesus Castello

Your App 👏 Your App 👏 Your App Is On 🔥🔥— We don’t need no water. Open Honeybadger’s incident report in PagerDuty, check the backtrace, and fix in GitHub. Done.😎

Honeybadger sponsor

Weird Ruby: Single-Quoted Heredocs— ‘Weird’ might be a bit of a stretch but it’s not something you tend to see very often. Perl can be credited with this feature being included in Ruby.

Bozhidar Batsov

Rails 6 Adds if_not_exists Option to create_table

Amit Choudhary

Implementing Authentication with Auth0 and Rails 6— If you want to offload authentication/single-sign-on to a third-party service, Auth0 makes it easy to get up and running quickly.

Emmanuel Hayford

Learn RubyMine's Features with the IDE Features Trainer— JetBrains have added Ruby-oriented lessons to their IDE Features Trainer if you want to learn to use their commercial RubyMine IDE better.

Andrey Aksenov (JetBrains)

🔧 Code & Tools

RMagick: The Ruby Bindings for ImageMagick Are Now Actively Maintained Again“Installation should be smooth now and many, many memory issues have been fixed…We’re looking to have ImageMagick 7 support by summer.”

RMagick

Haml 5.1.0 Released: The HTML Abstraction Markup Language— If you’ve been in the Ruby world for several years or more, you might remember all the buzz around Haml at one point. It's still here, but it’s great to see it getting its first release in almost two years. haml-rails has been updated too.

Haml

Safely Roll Out Features in Ruby with Free Feature Flags

Optimizely Rollouts sponsor

FEEDI: Turn Feeds (RSS, Atom or JSON) into an API

Davide Santangelo

Mittsu: A 3D Graphics Library for Ruby— Work with OpenGL in a Three.js-inspired way.. but from Ruby. GLFW is required to make it all work. I just followed the instructions and the example code and it worked a treat on macOS.

Daniel Smith

Eps: Machine Learning for Ruby— A way to build predictive models in Ruby. Just got its first release in a year.

Andrew Kane

Color LS: A Ruby Gem That Beautifies the ls Command— Adds both color and icons to the output of ls.

Athitya Kumar

P.S. Many more awesome videos from RubyKaigi 2019 have come out in the past few days, but we like to watch videos we recommend first, so will be focusing on the highlights next week.

The RailsConf 2019 videos are here

$
0
0

#452 — May 30, 2019

Read on the Web

Ruby Weekly

Working with Tests That Sometimes Fail— Nothing is certain but death and taxes.. and tests that begin to fail over time in mature software projects! Sam, who works on the popular Discourse forum project, looks at how Discourse’s tests have failed over time and how they handle them.

Sam Saffron

▶  RailsConf 2019 Videos— Confreaks have done their usual fantastic job in recording RailsConf (which was 4 weeks ago) and already have 67 videos up for us to enjoy. We'll be linking to more talks in future issues, but a particular highlight was Chris Salzberg's 'The Elusive Attribute' talk which wandered deep into the worlds of Active Record and Active Model.

WAFL: A Scalable MVP Alternative— WAFL stands for “Well Architected, Functionally Limited.” The idea behind a WAFL is to create (or recreate) the basic functionality of a project in a codebase that can scale.

CircleCI sponsor

VCR 5.0: Record Your Test Suite's HTTP Interactions and Replay Them— A very long standing library for recording HTTP interactions and replaying them during testing (so that your tests aren’t relying upon brittle third party services). The project is seeking maintainers but the first release in over a year is just out.

VCR

▶  How GitHub Handled Upgrading Rails— Eileen M. Uchitelle, Senior Software Engineer at GitHub and Rails core team member, talks about her work in upgrading GitHub from Rails 3.2 to 5.2 and why teams should be upgrading to Rails 6 now.

Maintainable Podcast podcast

Ruby 2.7 Adds Enumerable#filter_map— It’s basically shorthand for select and map in a single call, but also provides a minor speed up from the current ways you’d do the same thing. Check out the examples.

Vipul A M

Ruby Conf Taiwan 2019, July 26-27— Keynote speakers include Matz, Aaron Patterson, c9s and Samuel Williams, along with 20 other fantastic speakers from the Ruby world.

Ruby Conf Taiwan 2019

💻 Jobs

Full Stack Web Developer - Roadtrippers (Cincinnati, OH)— We're looking for problem solvers to help us write code that simplifies the complexities of travel planning & discovery at scale.

Roadtrippers

Sr. Software Engineer - Rails (Seattle, WA)— You get it done with Rails, have strong programming fundamentals, are adaptable, and ready to jump in anywhere. Leafly is looking for you.

Leafly

Find a Ruby Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Measuring Rails' Overhead— How much overhead does Rails add over a pure Rack application? And how much does this change between Ruby versions?

Noah Gibbs

▶  Working with Google Sheets from Ruby— It feels like you have to jump through several hoops to work with Google’s APIs from Ruby but this 6 minute screencast makes it look simple.

Twilio

4 Lesser Known Ways to Use Ruby’s Enumerable Module— A couple of the tricks here are new in 2.6, such as endless ranges & the shorter step syntax (%).

Josh Dzielak

Inside Enumeration in Ruby— Build your own linked list from the ground up by reproducing both an Enumerable module and an Enumerator class of your own.

Jeff Kreeftmeijer

Track Requests to Your Ruby Apps End-To-End with Datadog APM

Datadog APM sponsor

Managing Multiple Databases in Rails 6— How to manually and automatically route queries to replicas in Rails 6.

Lukas Fittl

▶  JRuby's Road to Ruby 2.6 and Rails 6— How JRuby is addressing startup time issues, why it’s great for Rails, where TruffleRuby fits in, how to move from MRI to JRuby (jruby_lint, ftw!), and more.

Charles Nutter and Thomas E Enebo

▶  A Look at Ruby 2.7 JIT's Real World Performance Improvements— A talk from RailsConf 2019 that looks at the performance improvements Ruby 2.7’s ‘MJIT’ could deliver. Technical and in-depth, this video has a limited audience but is interesting nonetheless.

Takashi Kokubun

🔧 Code & Tools

Chartkick: Beautiful JavaScript Charts in One Line of Ruby— See some examples, along with code, here.

Andrew Kane

Rumale: A Machine Learning Library in Ruby— Formerly known as SVMKit, it offers a Scikit (from Python) like interface. Cute logo!

A. Tatsuma

Safely Roll Out New Features in Ruby with Optimizely Rollouts— Ship faster with less risk. Get free feature flags to instantly turn on or off features without deploys.

Optimizely Rollouts sponsor

Ahoy: Simple Analytics for Rails Apps— Track visits and events in your app. By default, data is stored in your usual database.

Andrew Kane

Redlock: A Redis-Based Distributed Lock Implementation in Ruby

Leandro Moreira

TTY::Spinner: A Terminal Spinner for Tasks with an Unknown Completion Time— Use this alongside TTY to demonstrate to users that something is still happening.

Piotr Murach

Eucalypt: A New Sinatra App Generator— It’s early days for this, but as a Sinatra fan myself, it’s great to see more tooling appear around it.

eucalypt

The first preview release of Ruby 2.7

$
0
0

#453 — June 6, 2019

Read on the Web

Ruby Weekly

Ruby 2.7.0 Preview 1 Released— The “preview” stage of 2.7.0 is upon us and is now in good shape to be tested by the wider community. Features include:

  • Heap compaction in the garbage collector (a win for long-running and multithreaded apps).
  • Pattern matching.
  • Multi-line editing support and rdoc integration in irb.
  • The .: method reference operator.
  • Enumerable#tally for counting the occurrence of elements in an enumerable.
  • Beginless ranges, numbered parameters, JIT imrovements, and more.

The final version of Ruby 2.7 is due, as ever, on Christmas Day.

Produce High-Quality Code More Efficiently with RubyMine— With smart code completion, dozens of refactorings, and support for popular frameworks, all working out of the box, RubyMine is an IDE that makes development easier and more enjoyable. Try the new RubyMine 2019.1.

JetBrains sponsor

Direct Instruction Marking in Ruby 2.6— GitHub upgraded to Ruby 2.6 and saw a 3 percent decrease in post boot memory usage. Aaron explains how the optimization works at a technical level.

Aaron Patterson (GitHub)

macOS to Remove Having Ruby Installed by Default— The next version of macOS (10.15) is deprecating having ‘scripting language runtimes’ (which includes Ruby) installed by default, though it seems they might not disappear until 10.16. In related news, macOS will also be switching from bash to zsh.

Apple Developer Documentation

GraphQL on Rails: From Zero to The First Query— This article explains the basics of GraphQL, fixes a bug in the first query, and sets the stage for the forthcoming article on mutations.

Martian Chronicles

💻 Jobs

Sr. Software Engineer - Rails (Seattle, WA)— You get it done with Rails, have strong programming fundamentals, are adaptable, and ready to jump in anywhere. Leafly is looking for you.

Leafly

Ruby on Rails Developer at X-Team (Remote)— Join the most energizing community for developers. Work from anywhere with the world's leading brands.

X-Team

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Rails 6 Boot Sequence— If you’ve never walked through how Rails starts up, it’s a good exercise that highlights the design of Rails and how it uses things like Rack and Bundler.

Younes Serraj

Don’t Email From Active Record Callbacks— Using callbacks has to be done with care, so this is great advice on one thing not to do in a real Rails app.

Andy Croll

The Open Source Conundrum: How Do We Keep the Lights On?— Thoughts behind funding need to change if Open Source is to remain sustainable well into the future.

CodeFund sponsor

Enhanced Shell Scripting with Ruby— A set of tips that will start you on the path of adding Ruby to your shell scripting toolbox.

DevDungeon

Why You Should Consider Bounded Contexts in Rails— One approach to applying Domain Driven Design concepts to Rails. I bet this article will inspire opinions.

Tomas Valent

Split RSpec Tests with Jenkins Parallel Pipeline to Run Specs Faster— I bet the longest stage in your CI pipeline is running the tests. Running them in parallel could help.

Knapsack Pro

dry-rb 1.0: Upgrading Validations, Types and Schemas

Igor Morozov

🔧 Code & Tools

PostgreSQLCursor: An Active Record Postgres Adapter Extension for using a Cursor to Return a Large Result Set— Anything that helps me make use of Postgres’s advanced features with Active Record gets a thumbs up from me.

Allen Fair

trip.rb: A Concurrent Tracer That Can Pause, Resume, and Alter Code— This looks like a pretty handy tool, almost like an external debugger that can change binding variables and pause on errors.

rg-3

Test Drive First Class CI/CD Pipelines

GoCD sponsor

WebMock: Stub and Set Expectations on HTTP Requests for Testing— Supports lots of HTTP libraries like Net::HTTP, Excon, the http gem, and Curb::Easy.

Bartosz Blimke

Onebox: Turn URLs into Website Previews— Originally created for the Discourse forum software.

Discourse

Truemail 1.0: A Configurable Plain Ruby Email Validator— Offers three levels of email validation: regex, MX records, and SMTP.

Ruby Garage

Flatware: A Parallel Test Runner for RSpec and Cucumber with Pretty Output

Brian Dunn

Rambulance: Dynamically Render Error Pages or JSON Responses for Rails Apps

Yuki Nishijima

dry-validation 1.0.0 released

$
0
0

#454 — June 13, 2019

Read on the Web

Ruby Weekly

The Ruby Style Guide Gets a Major Facelift— This is truly a one-stop-shop for how to write Ruby code that can be easily read and maintained by other Rubyists.

Bozhidar Batsov

Introducing ActionView::Component: View Components Are Coming to Rails?— This pull request introduces ActiveView::Component based on work done at GitHub, bringing the popular concept of view components into Rails.

Ruby on Rails

Powerful CI/CD Pipelines. Pay Only For What You Use— Built for developer productivity, Semaphore 2.0 allows you to model any CI/CD workflow with fully customizable, powerful pipelines. With the new pricing model you pay only for what you use. Sign up free with GitHub and give it a run-through.

Semaphore 2.0 sponsor

Rouge: A Pure Ruby Code/Syntax Highlighter— Supports over 100 different languages, including Ruby, naturally. It’s a mature project now, but has recently had some releases fixing issues discovered over the years and somehow I’d not heard of it before. GitHub repo.

Jeanine Adkisson

dry-validation 1.0.0 Released— A significant release for a popular DSL-driven database validation library that lets you easily define schemas your own validation rules. GitHub repo.

Piotr Solnica

Using Stimulus and RxJS for an SPA-Like Experience— There’s very little Ruby code here but Stimulus is an interesting JavaScript framework that integrates very well with Rails (it was made by Basecamp, after all) and this looks at using Stimulus and RxJS to get a single page JavaScript app style experience on top of Rails.

Mike Wilson

💻 Jobs

Sr. Software Engineer - Rails (Seattle, WA)— You get it done with Rails, have strong programming fundamentals, are adaptable, and ready to jump in anywhere. Leafly is looking for you.

Leafly

Senior Software Engineer - Semaphore CI (Remote - Europe)— Build an industry-defining product with a great team.

Semaphore

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Weird Ruby: Zeroing in on a Couple of Numeric Predicates— There’s not a lot to see here, but it’s certainly an interesting quirk as to why 0.nonzero? returns nil when 1.zero? returns false. Here’s the full story.

Bozhidar Batsov

How to Build a Mini Sinatra in 23 Lines of Code— A deep dive into Sinatra that touches on many other concepts (Rack, et al) and builds a clone to really drive things home.

Forrest Ye

Do You Know What's Hiding in Your App? An App Review Gives Certainty

reinteractive - ROR App Review sponsor

▶  DHH's Opening Keynote at RailsConf 2019— A “reading” that covers open source politics, how Rails fits and doesn’t fit into this world, how things have and have not changed in 20-ish years, and finding and not finding meaning. Whew.

RailsConf

An Overview of Using Redis::Distributed for Redis Client Side Partitioning in Ruby

Mário Nzualo

Continuous Integration and Delivery to AWS Kubernetes with Semaphore

Tomas Fernandez

🔧 Code & Tools

Behaves: Define and Maintain Behaviors and Contracts Between Classes

Edison Yap

An OmniAuth Strategy for 'Sign In with Apple'— Now that Sign in with Apple is a thing, here’s a way to use it in Ruby.

Naoki Hosoya

Spin Up a GoCD Continuous Delivery Server in Less Than 5 Minutes— Use new GoCD test drive to see how to solve your CI/CD challenges with our first class pipelines, visualizations, and more.

GoCD sponsor

ActiveModelAttributes: ActiveRecord-like Attributes API for ActiveModel— Brings some of the goodies of the Rails 5 Active Record attributes API to ActiveModel too.

Karol Galanciak

ValidatesTimeliness: Date and Time Validation for ActiveModel and Rails

Adam Meehan

screen-recorder: Record your Screen from Ruby— It uses FFI to talk to FFmpeg behind the scenes but is controllable from Ruby and might be something you’d want to integrate with an automated UI testing run, say.

Lakshya Kapoor

Rodauth: Authentication and Account Management for Rack Applications— Built using Roda and Sequel, but can be used with other frameworks. GitHub repo.

Jeremy Evans

Bundler 2.0.2: The Ruby App Gem Dependency Manager— We’re all using Bundler somewhere or other and it’s had a minor update, mostly fixing up a variety of issues as well as dropping Ruby 1.x compatibility code.

Bundler

Active Admin 2.1: The Administration Framework for Rails

Greg Bell and VersaPay Corporation

A production-optimized alternative distribution of MRI

$
0
0

#455 — June 20, 2019

Read on the Web

Ruby Weekly

▶  Progress on Compacting GC in Ruby 2.7— No, this is not a short talk (indeed, it’s an hour long, but the actual technical part starts at 15 minutes in) but Aaron, both a member of the Ruby and Rails core teams, explains what work is taking place to improve Ruby’s garbage collector by essentially ‘defragging’ (or ‘compacting’) the memory that Ruby uses at runtime.

Aaron Patterson

Fullstaq Ruby: An Alternative CRuby Distribution, Optimized for Production— A CRuby/MRI-based Ruby distribution that’s optimized for production environments out of the box, such as using the popular Jemalloc and malloc_trim patches. GitHub repo.

Hongli Lai

eBook: Best Practices for Optimizing Postgres Query Performance— Learn how to get a 3x performance improvement on your Postgres database and 500x reduced data loaded from disk in this free pganalyze eBook.

pganalyze sponsor

Ruby Processes and Threads: Configuring a Web Server— A look at the effects of increasing threads vs increasing processes vs increasing both upon the performance of Web applications.

Jake Yesbeck

Using Multiple Databases with Active Record in Rails 6+— Rails 6 is adding the ability to work with multiple databases in a single app out of the box and the official Rails Guide on the topic is coming along nicely.

Ruby on Rails Guides

Whenever 1.0: Cron Jobs, but for Ruby— Whenever makes it easy to write and deploy cron jobs using a Ruby DSL (e.g. every 3.hours do ...) which is then converted into cron syntax.

Javan Makhmali

💻 Jobs

Experienced Ruby on Rails Developers (Full Remote)— We're looking for smart devs to join our fast-growing, well-funded company that makes thousands of African fashion designers happy.

Afrikrea Marketplace

Sr. Software Engineer (Remote/Chicago)— We are the top marketplace for personalized learning with experts. Modern stack, small team, great work environment and benefits.

Wyzant

Wanted: Curious Developers with ❤️— Stagnating? Check C5 out: New projects, tech, and challenges perfectly paired with kind and brilliant people in SF, LA, NYC, CHA.

Carbon Five

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Scaling Your Ruby Service Objects with LightService— The light-service gem implements the Railway (or, some might say, Interactor) pattern.

Riaz Virani

A Repeatable, Step-by-Step Process for Writing Rails Integration Tests with Capybara— If you’re having TDD-paralysis, this is helpful.

Jason Swett

Earn Passive Revenue for Your Ruby Projects with 2 Lines of Code

CodeFund sponsor

Rails 6 Adds Enumerable#index_with— No more map with to_h.

Amit Choudhary

Quick Tip: A Rails Middleware to Change The Log Level At Runtime

Mattia Roccoberton

The Difference between RSpec, Capybara and Cucumber— Aimed at beginners to whom these tools may be entirely new.

Jason Swett

A Look at Node.js for Rails Lovers— If you’re from a Ruby background and haven’t even played with Node.js, this will help paint a little of the picture.

Craig Phares

How I Test JavaScript-Heavy Rails Apps

Jason Swett

🔧 Code & Tools

RubyGems 3.0.4 Released— 3.0.4 gains TruffleRuby support. The 2.7 branch gets a new release too with 2.7.10.

RubyGems Blog

Timeliness: Fast Date/Time Parsing for the 'Control Freak'— An interesting alternative to time/parse for working with formatted dates (Chronic is still a great option if you need to support natural language).

Adam Meehan

Monitoring and Distributed Tracing for Ruby Apps— Trace real requests from end-to-end to identify latency or errors in your Ruby applications with Datadog APM. Try Datadog free.

Datadog APM sponsor

reCAPTCHA 5.0: ReCaptcha Helpers for Ruby Apps— A way to more easily use Google’s popular (but often controversial) CAPTCHA service from Ruby apps, including both v2 and v3 variants.

Jason L Perry

Shoryuken 5: A Super Efficient Amazon SQS Thread Based Message Processor— It’s neat to see so many mature, established Ruby libraries getting updates lately.

Pablo Cantero

fog 2.2: The Ruby Cloud Services Library— A way to manage cloud services (storage, DNS, compute, etc.) in a relatively abstracted, agnostic way.

Wesley Beary and Contributors

Phrasing: Let Admins Edit Phrases Inline on Your Rails Apps

Infinum


Ruby gets a fast, powerful type checker

$
0
0

#456 — June 27, 2019

Read on the Web

Ruby Weekly

Sorbet – A Fast, Powerful Type Checker for Ruby – is Now Open Source— Stripe have been working on a type-checker for Ruby for quite some time now and it’s now publicly available and open source after undergoing rigorous testing at 30 companies. (Psst.. if you write up any good Sorbet related blog posts, let us know, we want to link to them!)

Sorbet

A Look at Instance Variable Performance— You know when tenderlove starts a post with “Let’s start today’s post with a weird Ruby benchmark..” you’re in for a fun read and will learn how the order in which you define instance variables can affect performance (under somewhat contrived circumstances).

Aaron Patterson

An In-Depth Look at Ruby's Exception System— Ruby's exception system is more powerful than many people realize. This book shows you how to get the most from it.

Honeybadger sponsor

Puma 4 Released: New I/O 4 Your HTTP Server— Puma, a popular Ruby/Rack web server, works using a ‘reactor’ and the new version 4 soups it up on Unix (sorry Windows) by using nio4r to significantly increase performance and concurrency.

Richard Schneeman

Impersonator: Ruby Library to Record and Replay Object Interactions— The best way to describe what impersonator does is in the README: “Familiar with VCR? Impersonator is like VCR but for Ruby objects instead of HTTP requests.”

Jorge Manrubia

Why is Ruby Slower on Mac? An Early Investigation— You might recall we recently linked to some benchmarks where Discourse’s Sam Saffron found that Ruby runs a lot slower on macOS. But why? Turns out trying to answer that is rather difficult.

Noah Gibbs

💻 Jobs

Senior Full Stack Ruby on Rails Engineer (Remote)— Currently on Rails 5.2. Other technologies include Angular, PostgreSQL, & Redis. Perks include strong remote work culture, competitive pay, company equity, & full benefits.

Fleetio

Senior Software Engineer - Knotel (San Francisco / Remote)— Want to be part of a small team focused on building sustainable applications?

Knotel / 42Floors

Find a Ruby Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

🎧 Podcasts of the Week

There have been a few interesting Ruby related podcast episodes this week that are worth checking out if you have time:

▶  Discussing ActionView::Component with Joel Hawksley— Do you like your technical introductions in podcast form? Enjoy 30 minutes with the lead developer who’s bringing view components to Rails.

Ruby on Rails Podcast

▶  Chatting with Rails Core Team Member Eileen M. Uchitelle— Eileen covers how GitHub maintained a custom fork of Rails for years and how they moved off of it, as well as some of what’s coming up in Rails 6.

The Bike Shed

▶  Discussing the Life and Death of a Rails App with Olivier Lacan— Olivier Lacan talks about his experience in working on (and then sunsetting) CodeSchool’s apps before they were acquired by Pluralsight.

Ruby Rogues

📘 Articles & Tutorials

On Ruby and Type Checkers— Going along with the Sorbet news, here is one Rubyist’s thoughtful opinion on the subject.

Jorge Manrubia

Quick Tip: How to Relax Your Ruby Version Specification in Your Gemfile— A very simple tip but if you don’t know about ~>, you should.

Avdi Grimm

Rails 6 Adds Array#extract!extract! removes and returns elements for which the given block returns true (versus reject! which returns the array).

Amit Choudhary

How CircleCI's Distributed Team Communicates So No Context is Left Behind— Our distributed team of 10 asked: if we had a choice, would we choose to be a remote team across distant time zones, or would we rather be closer together?

CircleCI sponsor

How to Use Ruby's begin and rescue Keywords (with Examples)

Jesus Castello

A Step by Step Way to Backup a Heroku PostgreSQL Database to an AWS S3 Bucket— I don’t know about you, but I’m still a heavy Heroku user for deploying my Ruby webapps.

Paweł Urbanek

Testing ActionText Without JavaScript— The example here is very simple, but may fit your use case.

Toby Osbourn

'I'm Worried About Ruby's Future'— I am not sure how widespread this sentiment is, but the reasons cited here are valid, for sure.

Paweł Świątkowski

🔧 Code & Tools

sorbet-rails: Make the Sorbet Typechecker Work with Rails— If you haven’t seen the Sorbet feature at the very top of this issue, do that first. Then, if you’re using Rails and want to use Sorbet with it too, install this to make things easier.

Chan Zuckerberg Initiative

Learn RubyMine's Features with the IDE Features Trainer Plugin

JetBrains sponsor

AuthTrail: Track Devise Login Activity— v0.2.0 has just come out.

Andrew Kane

Square Unveils Its New Ruby SDK— Want to integrate Square payments into your app? square.rb is in beta for now.

Shannon Skipper (Square)

RuboCop Rails: A RuboCop Extension Focused on Enforcing Rails Best Practices and Coding Conventions

RuboCop Headquarters

AnnotateModels: Annotate Your Rails Classes with Schema and Routes Info— Having schema info at the top of your model files could be handy for quicker referencing while developing.

Cuong Tran

6 changes coming to Ruby 2.7

$
0
0

#457 — July 4, 2019

Read on the Web

Happy Independence Day to those of you in the United States :-)

Ruby Weekly

6 Changes You Might Have Missed Coming in Ruby 2.7— Things like Module#const_source_location, FrozenError#receiver and the deprecation of certain, special, Perl-inspired global variables. Also, if you press up in IRB, you’ll be able to bring up an entire method definition in one go, rather than line by line.

Sebastian Sogamoso

'Sorbetting' a Gem, or The Story of the First Adoption— Last week, we featured the release of Sorbet, a type checker for Ruby. This story covers the practicalities of integrating Sorbet type checking into a Ruby gem. Conclusion? “it’s still far from bringing the development happiness..”

Vladimir Dementyev

Automated Code Reviews for 27 Languages— Take the hassle out of code reviews - Codacy flags errors automatically, directly from your Git workflow. Customize standards on coverage, duplication, complexity & style violations. Use in the cloud or on private servers. Get started free.

Codacy sponsor

Should Experimental Ruby Features Be Introduced Behind an Off-by-Default Flag?— An interesting proposal to expose new features, like the pipeline operator, behind a feature flag that is opt-in only (a little like how Node.js does it). The discussion here is worth the read.

Ruby Issue Tracker

I Just Made the ++ Increment Operator for Ruby— Implementing the ++ increment operator was more difficult than expected and required a dive into the parser to get it done (via this patch).

Jesús Burgos Maciá

💻 Jobs

Write Ruby. Save Lives— Ruby/JS developers: help us build our genome analysis platform and save lives of critically ill children.

Diploid

Senior Software Engineer (Santa Barbara or Remote)— Join a team where everyone is striving to constantly improve their knowledge of software development tools, practices, and processes.

Invoca

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Brewing Our Own Template Lexer in Ruby— A practical walkthrough of building a basic lexer (the parser part will come later) as a way to implement your own templating language (in this case a subset of Mustache). Not many of you will need to do this, but it’s good to know how.

Benedikt Deike

Rails 6 Adds Support for Multi Environment Credentials— Credentials that belong to different environments can now be stored in separate files with their own encryption key.

Berin Larson

A Rubyist Takes a Stroll in Elixir-Land...with Surprising Results— Get outside your comfort zone and join us as we compare & contrast resolving modules in Elixir vs Ruby. Let’s get weird.

Honeybadger sponsor

Examples of Pointless Types of RSpec Tests— Some tests just don’t need to be written.

Jason Swett

Danger On Rails: Make Robots Do Some Code Review for You!Danger runs “common code review chores” in your CI process, which is one more step to Automating All The Things™.

Vladimir Dementyev

▶  Creating an In-App Payments Backend Using Ruby and Roda— We don’t see a ton of tutorials or videos with Roda, a simple routing-oriented framework for creating HTTP services.

Square

▶  How to Send SMS Text Messages in Rails with Twilio

Go Rails

Ruby On Rails Optimization Techniques— Lots of focus on database and query tweaks along with caching content and assets.

Dmitry Ishkov

Rails 6 Adds before? and after? to Date and Time— No more confusing < comparisons.

Amit Choudhary

🔧 Code & Tools

HTTP Toolkit: Capture, View, and Explore Your Ruby App's HTTP Traffic— There’s both an open source and “pro” version.

HTTP Toolkit

Slop: Simple Lightweight Option Parsing— Not the most appealing name for a library, but a compelling choice for defining a command line app’s options and having them get parsed for you.

Lee Jarvis

Cut Your Heroku Bill in Half, Autoscale Your Web and Worker Dynos

Rails Autoscale sponsor

Scallop: An 'Ergonomic' Shell Wrapper for Ruby— Early days for this project, but it essentially provides a more idiomatically Ruby and object oriented way to run commands via the shell and access their output.

FetLife

Black Candy: A Self Hosted Music Streaming Server— Build your own Spotify-a-like using Rails and Stimulus (Basecamp’s ‘just decorate your HTML’ JavaScript framework).

aidewoode

Stripe::Rails: A Rails Engine for Integrating with Stripe

SengMing Tan

Discussing Sorbet with its technical lead

$
0
0

#458 — July 11, 2019

Read on the Web

Ruby Weekly

strong_password v0.0.7 Ruby Gem Hijacked— Here is an example of why being diligent with your dependencies is a must. Tute was looking at the changelogs for gems in their app and found out one had been sneakily taken over. Snyk also has a good writeup of the problem.

Tute Costa

▶  Discussing Sorbet, the Ruby Type Checker, with Paul Tarjan— Two weeks ago, we covered Stripe’s open sourcing of Sorbet, a powerful type checker for Ruby. In this brief 20 minute podcast, Sorbet’s technical lead explains the project.

Ruby on Rails Podcast podcast

Stream Unveils Its Official Ruby SDK for Chat— Stream Chat is more powerful than ever with its SDKs for various languages, which now include Ruby. View the official Ruby SDK on GitHub.

Stream sponsor

TimeCalc: A Simple, 'Next Gen' Time Arithmetic Library— The API here is not without its oddities, but I think it’s a neat way to approach working with times without any dependencies. For example: TimeCalc.(t).+(3, :months)

Victor Shepelev

Rails 6 Errors: The Good, The Bad, The Ugly— An exploration of what’s awesome, what’s not so great, and what’s downright confusing when it comes to debugging errors on a Rails 6 app. (By the way, if you’re wondering about the progress of Rails 6, 6.0.0 RC1 is still the latest version out.)

Avdi Grimm

Rails 6 Adds Hooks to Active Job Around Retries and Discards— If you haven’t worked with Rails for a while, the whole area of Active Support instrumentation may be interesting to you – it’s pretty powerful.

Vishal Telangre

ApexCharts.rb: Interactive, Responsive Web Charts for Ruby Apps— Wraps ApexCharts, a popular JavaScript charting library, and makes it easy to render charts from your ERB views.

Adrian Setyadi

💻 Jobs

Senior Full Stack Engineer - New York City— We help our clients leverage their marketing data. As a Sr. Full Stack Engineer, you’d develop our products through Ruby and JS.

Knotch

Senior Software Engineer (Santa Barbara or Remote)— Join a team where everyone is striving to constantly improve their knowledge of software development tools, practices, and processes.

Invoca

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Discovering the Design Pattern at the Heart of Rack Middleware— Developers at Simply Business extracted the middleware pattern used by Rack for a data migration pipeline and are hoping you’ll help them name (or identify) the pattern.

Daniel Barlow

How to Test Ruby Methods That Involve puts or gets— The RSpec-oriented answer in this case is to use test doubles. Another technique I use myself is to use puts and gets directly upon an object (e.g. STDIN and STDOUT) you can switch out.

Jason Swett

Fully Managed Operations Solutions for Large & Small Teams— Do you need 24/7 support, without the overhead of dedicated staff?

reinteractive | OpsCare sponsor

My Experience Architecting A Software Development Stack with JRuby, OpenJDK, and Roda— I found this article in a tweet from Charles Nutter calling it “arguably the best way to serve a high-throughput Ruby web endpoint.” I am not arguing that point.

Retro Axis

How to Deploy AnyCable with Capistrano and systemdAnyCable has billed itself as “Action Cable on Steroids” that can run in a separate process from your Rails app, so why not have systemd manage it?

Igor Alexandrov

Handling HTTP Headers in Grape with Rack and Rails

Daniel Doubrovkine

How to Store Secure Encrypted Data in Rails Without Gems— It doesn’t take much code to add encryption to your models and data, allowing you to avoid LOC-heavy gems.

Paweł Urbanek

10 Tips When Using the VCR Gem in Your Ruby Test Suite

Fabio Perrella

Building Messaging Between Ruby/Rails Applications with ActiveMQ— ActiveMQ is a popular message broker that supports multiple protocols and has an AWS-hosted service option.

Kirill Shevchenko

Founders/CTOs: We Upgrade Rails So That Your Team Doesn’t Have To

Upgrade Rails sponsor

The Experience of Upgrading a Rails App from 3.2 to 4.2

Peter Toth

How to TDD When TDD Is Hard— You don’t know what you’re doing, you don’t know where to start, it’s all just another thing getting in the way of your work..? If you’re frustrated with test driven development, Aaron has some advice.

Aaron Sumner

🔈 Podcasts

▶  A 45 Minute Chat with Aaron Patterson at RailsConf— One for all you tenderlove fans out there! (For anyone unfamiliar with Aaron, he’s on both the Ruby and Rails core teams and is well known for his superb talks.)

The Bike Shed

▶  Talking About 'Stimulus', Basecamp's JavaScript Framework— JavaScript, you say? Well, yes.. Stimulus is an interesting JavaScript framework designed to integrate easily with Rails apps.

Ruby Rogues Podcast

Tenderlove digs deep into the Ruby runtime

$
0
0

#459 — July 18, 2019

Read on the Web

Ruby Weekly

regexp-examples: Generate Strings That Match a Given Regular Expression— This isn’t new but it’s just had a update to support the latest Ruby and I’ve always loved the idea. Given a regular expression, use the examples method to see some strings that would match the expression. For example: /ab+/.examples == ['ab', 'abb', 'abbb']

Tom Lord

GraphQL on Rails: On The Way to Perfection— The conclusion to a three part series (part one is here) on building GraphQL-based apps with React and Rails. This last outing focuses on some significant refactorings, including real-time updates with ActonCable.

Dmitry Tsepelev and Polina Gurtovaya

See Why Chef’s CTO Chose strongDM— Adam Jacob says “strongDM takes the friction out of getting end users access to the systems they need.” Zero trust access to any database, server or k8 cluster. Click here to try for free.

strongDM sponsor

▶  Aaron Patterson Goes Deep on the Ruby RuntimeSoftware Engineering Radio is a very popular developer podcast backed by IEEE and last week they sat down with core Ruby and Rails team member Aaron ‘tenderlove’ Patterson to dig deep into Ruby’s runtime, its construction, its VM, garbage collection, JIT, and more. A worthwhile hour if you want to get an idea of what’s going on under Ruby’s hood.

Software Engineering Radio podcast

Goodbye ActiveRecord!— Hello ROM! Aircall broke their Rails monolith into service using Rails, Sinatra, and ROM. Here’s why they chose ROM over ActiveRecord.

Julien Amoros

Lefthook, Crystalball, and Git Magic for a Smooth Development Experience— Use git hooks to stop pushing broken code and automate updating gems and database migrations between branches to save time and headaches.

Andrey Novikov

💻 Jobs

Senior Software Engineer (Santa Barbara or Remote)— Join a team where everyone is striving to constantly improve their knowledge of software development tools, practices, and processes.

Invoca

Ruby on Rails Developer at X-Team (Remote)— Join the most energizing community for developers. Work from anywhere with the world's leading brands.

X-Team

Land a New Dev Job on Vettery— Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

How We Migrated To Turbolinks Without Breaking JavaScript— Turbolinks, first introduced in Rails 4, made it easy to make server-rendered Rails apps feel a little more like single-page apps.

Starr Horne

Puma 4: Hammering Out H13s – A Debugging Story— Richard Schneeman always has great debugging stories. Here, Puma was mishandling requests at scale for some apps and another debugging adventure ensued.

Heroku

The Ruby Security Handbook— Learn all the latest best practices to help you protect your Ruby applications. Download the cheat sheet about Ruby security.

Sqreen sponsor

Using strftime in a Rails View is a Mistake— You really want to be refactoring out those time formats into a better place.

Andy Croll

Minimum Viable Example of Calling Rust From Ruby without a Gem— Spoiler.. you have to use some C.

Sam Phippen

Adding devise_token_auth to An Existing Rails App— I thought the devise_token_auth gem was deprecated, but it’s still under active development and integrates seamlessly with many javascript frameworks.

Raghu Bhupatiraju

Rails 6 Adds ActiveRecord::Relation#annotate— Adds comments to AR’s SQL queries. Seems like this could be useful in debugging contexts.

Abhay Nikam

Debugging MySQL Lock Errors in Rails Apps— If you like using monkey patching to debug, read on.

Peter Toth

Dynamic Image Resizing with Ruby and the Serverless Framework

Bryan Killian

🛠 Code and Tools

Montrose 0.10: A Library for Defining Recurring Events— Provides a composable way to model recurring events. For example, give me every Tuesday and Thursday of every week between two dates. You can model that.

Ross Kaffenberger

Wasmer: A Ruby Library to Run WebAssembly Binaries— It’s early days, both for WebAssembly and this project, but we’re sure to see some exciting developments here over time.

Wasmer

Continuous Security Scans for Your Ruby Repos on GitHub

GuardRails sponsor

Ahoy Email: Email Analytics for Rails— Add the ability to track the emails you send from your Rails apps (log of what was sent, plus opens and clicks), as well as add UTM params to links included in them.

Andrew Kane

Transproc: Transform Ruby Objects in Functional Style— Compose procs together in a left-to-right functional style.

Piotr Solnica

A Bare Bones Starter Project for Sinatra Apps— It’s pretty basic but I think I’ll use this as I seem to type all this stuff in for myself every few weeks 😂

JHero23

pg_search: Build ActiveRecord Named Scopes using Postgres’s Full Text Search— Another classic library that has recently had an update.

CaseBook

A Q and A with Noah Gibbs, Ruby benchmarker extraordinaire

$
0
0

#460 — July 25, 2019

Read on the Web

Ruby Weekly

TTY::Logger: Structured, Attractive Logging on the Terminal— Nice looking, colorized and formatted logging.

Piotr Murach

Where Does Rails Spend Its Time?— Noah (who is the subject of our first Ruby Weekly interview - more on that below) profiles Rails Ruby Bench to see where his benchmark is spending most of its time. Unsurprisingly, it involves setting up all those ActiveRecord objects we use.

Noah Gibbs

An In-Depth Look at Ruby's Exception System— 😲 Ruby's exception system is more powerful than many people realize. This book shows you how to get the most from it.

Honeybadger sponsor

Ruby on Whales: Dockerizing Ruby and Rails Development— There a boatload (Ha!) of articles on ‘dockerizing’ Rails apps, but this one is very good and results in a nice setup.

Vladimir Dementyev

Awesome Ruby: A Curated List of Ruby Libraries and Tools— Each year or so, we like to link to this epic, categorized collection of Ruby goodies. It continues to be updated several times a month with new entries added and obsolete entries removed.

Marc Anguera Insa

👋 Be sure to scroll down to the end of this issue to enjoy an interview with Noah Gibbs, a prolific benchmarker of Ruby and Rails, on how he benchmarks Ruby and where he thinks the performance of Ruby 3.x will end up.

💻 Jobs

Fight Poverty by Doing What You Love— We are a Rotterdam based, fast growing crowdfunding platform. Our site is built on a modern stack by a small passionate team.

Lendahand

Find a Job Through Vettery— Vettery matches top tech talent with growing companies. Create a profile to get started.

Vettery

📘 Articles & Tutorials

Reading Ruby Metaprogramming Inside Devise— Walking through how devise_for adds routes and helpers to your Rails app using that technique you either love or hate: metaprogramming.

Jim Gay

Leaky Constants— A small thing, but did you know if you declare a constant in a block body it becomes a top-level constant?

Filipp Pirozhkov

Learn How to Build Chat with Ruby on Rails and Dialogflow— Learn the inner workings of Stream Chat paired with Ruby on Rails and Dialogflow with this in-depth technical tutorial.

Stream sponsor

▶  Building Chatbots in Ruby with Daniel Pritchett

Ruby Rogues podcast

Demystifying RSpec's DSL with Parentheses?— Just a simple way to wrap your head around RSpec’s often magical seeming API. (I often do this with complex boolean logic as well, just to clarify what’s happening.)

Jason Swett

Spinning Up a 'Rails API'-Powered JSON API in Minutes— A very entry level tutorial, but useful if you haven’t played with Rails’ API-only functionality yet.

Evan Glazer

How to Run Parallel Tests in RSpec on GitLab CI Pipeline

Artur Trzop

Free eBook: How to Get a 3x Performance Improvement on Your Postgres Database

pganalyze sponsor

Fetching Millions of Rows from PostgreSQL in Rails— If you want to do it quickly, you’ll need to lean on raw_connection and send your own query and stream the results from the database.

Gustavo Diel

🛠 Code and Tools

TTY::Box: Draw Frames and Boxes in Your Terminal Window— Staying on a TTY/terminal theme, we’re getting some serious DOS-era UI vibes from this :-)

Piotr Murach

QueryTrack: Find Time-Consuming ActiveRecord Database Queries— Can be used with Slack to provide automated notifications with backtraces, raw SQL, time duration, etc.

Kirill Shevchenko

Audited: An Extension That Logs All Changes to Rails Models— Formerly known as acts_as_audited.

Collective Idea

Valvat: Validates European VAT Numbers— If you’re working on a billing system that involves issuing invoices to European companies, this sort of library is invaluable (we use it ourselves!)

Sebastian Munz

💬 A Q&A with…
Noah Gibbs
author of Rebuilding Rails and Ruby performance benchmarker extrordinaire

Noah is a Ruby Fellow at AppFolio and has authored countless articles and given many presentations on benchmarking Ruby and Rails. He has also built benchmarking tools, including an official benchmark for Ruby 3x3. We're grateful that he's taken the time to answer a few questions today.

What first inspired you to start benchmarking Ruby so fervently?

When I was chosen for the Ruby Fellow role, I knew I needed to work on performance. That's what they were specifically looking for! I tried a few things including different Ruby compile options, different kinds of profiling... You can see some of that in my early articles. But what worked (for me, for readers, for the Core team) turned out to be the benchmarking. Sometimes you try a few things and find a sweet spot!

What do you see as the largest impact item in Ruby 3x3 when it comes to better performance?

It's hard to narrow Ruby 3x3 performance down - there are so many little fixes! But for non-Rails code, MJIT is huge. For Rails, probably a change to how Ruby handles TraceFunc in Ruby 2.5 that added nearly 10% to the overall speed.

What's the most challenging aspect of your benchmarks?

The most challenging aspect, always, is being sure enough (but never 100%!) that I'm right. Measuring and interpretation are hard, and often I can't be sure what a result means. Re-running tests and extra measurements help, but you're never utterly sure. You've probably noticed that a lot of my conclusions sound nuanced ("X is probably true," "Y seems very unlikely.") That's why!

What's the most worrisome item on the current Ruby roadmap, in your opinion?

I'm not sure I'd call any item on the roadmap "worrisome" - progress is pretty good and we have 18 months left. Static type tools took longer to get really started, but new tools like Sorbet are in surprisingly good shape. We'll get there. I think real-world Rails performance is going to finish at more like double speed than triple.[editor: emphasis is ours] It's at about 172% speed in Ruby 2.6. That should make sense - a lot of Rails time is in the database, or libev or other C extensions and Ruby's speed doesn't affect it. In those cases I'm pretty happy with "only" doubling the end-to-end speed. Especially in a mature 20+-year-old language!

Noah is a Ruby Fellow for AppFolio.

Viewing all 462 articles
Browse latest View live