The Ruby and Rails community linklog
Made a library? Written a blog post? Found a useful tutorial? Share it with the Ruby community here or just enjoy what everyone else has found!
Submit a post
Post Preview
Note: Only the first pargraph is shown on the front page and overly long paragraphs may be broken up.
Purify code with data integrity: defaults and not-nulls
How not-null constraint and default values help to write better code
Extract tables from PDF files
Iguvium is a way to get structured table data from PDF pages. The only external dependency is GhostScript, which makes this gem suitable even for free Heroku installations.
Reducing Enumerable - An Illustrated Adventure (Novel Version)
Translating the RubyConf talk “Reducing Enumerable - An Illustrated Adventure” into a series of six posts, this format is easier to read through than just glancing at the slide deck. Part one starts here:
How to write professional commits efficiently?
Writing good commit messages can be tricky and time-consuming. 🤔 Here I share my solution (how to handle that problem and write commit messages efficiently)[https://driggl.com/blog/a/how-to-write-professional-commits-efficiently]! Join to the discussion if you know other solutions for that!🗨️ [more inside]
Ruby memory, ActiveRecord and Draper a performance story
A story about digging to find we have a huge memory consumption while parsing and processing CSV. We will see that the issue was not in CSV parsing but in dependencies and the way they were used.
Kinit will make your Rails application better by adhering to good practices.
Kinit -– A gem to make sure sanity of your Gemfile is always in check.
How fast is Ruby 2.5, 2.6 and 2.6 –jit in generating Prawn PDFs
I tried to find out if the new Ruby 2.6 JIT (from preview3) can help the performance when generating invoices using InvoicePrinter and Prawn. Here is the benchmark.
Announcing the release of WebpackerCli
Announcing the release of WebpackerCli. Bringing the convenience of Rails’ Webpacker to any web framework… even those in other languages.
Convert html snippet into a png file
https://github.com/igorkasyanchuk/omg_image new gem which allows creating previews for your HTML snippets. Actually, there are many ways how to use it: from nice previews to charts and email attachments. [more inside]
Image Placeholder for your development environment
Some time ago I was working together with Szymon on one of our clients web application. We used copy of products catalog coming from production server on our development machines. What we were lacking were product photos, causing application layout to look poorly and making any CSS job hard. We tried to find a smart solution for that case.
Mastering data structures in Ruby — Singly linked lists
This is the first post of a series I made on how to create essential data structures from scratch. So far the series covers singly linked lists, doubly linked lists, circular linked lists, stacks, queues, hash tables, sets, and binary trees (and there more coming soon!). Each data structure is covered in a brief post that explains in a casual tone the core aspects of each data structure. I hope you enjoy them!
Taking Stimulus.js (front-end framework by Basecamp) for a ride
I am trying Stimulus.js lately in Rails and I think it fits nicely the server-rendered HTML + Turbolinks use case. This is my first look on Stimulus.js.
9 New Features In Ruby 2.6
A new Ruby version is almost here! What new & exciting features does it come with? Find out in this new article:
Six Great Reasons to Build Service Architectures in Ruby with Eventide
Eventide makes service development as approachable as Rails made web development in 2006, and seeks to democratize this as-yet esoteric subject that, at the moment, tends to be calcified under a thick layer of popular myths and fads.
finite_machine is back!
The finite_machine gem is back with improved APIs, faster execution times (2x more events fired per second), smaller memory footprint (2x fewer object allocations) and thread safety! Good place to start is at the FiniteMachine website.
ScriptCore - a mruby sandboxie for user's dynamic logic (safe eval)
ScriptCore based on Shopify’s ESS, it’s a mruby sandbox to run untrusted codes (usually written by users), ESS powered Shopify Scripts, and ScriptCore wrapping ESS (with some modifications) to easy to integrate with Rails apps, and I took a video to show the dummy app: https://twitter.com/jasl9187/status/1061674632380481536
Lazy preloading for ActiveRecord
ArLazyPreload gem allows you to avoid N+1 problem for cases, when you don’t know the exact list of associations you’re going to load (hi, GraphQL!). When you specify a list of lazy loaded associations, they would be loaded only when accessed for the first time: [more inside]
Type assertion with Ruby 2.6
With RubyVM::AST in 2.6 we can write more beautiful type-assertions: [more inside]
Headless browser testing with capybara-chrome
Test your latest Javascript with the most popular and modern web browser: Chrome. QtWebkit has become increasingly difficult to install, and requires shims for most modern Javascript techniques. Now you can swap out capybara-webkit for capybara-chrome and never worry about re-installing qt again. [more inside]
Smart select for GraphQL
GraphQL::SmartSelect is a plugin for graphql-ruby and ActiveRecord, which allows you to optimize DB queries and select only the columns required for the query. [more inside]
Migrating from Paperclip to Active Storage
My first challenge as an intern: