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.
Content Security Policy (Ruby on Rails)
Recently, we made changes to our codebase in regards to Content Security Policy (CSP). This article starts with a minuscule intro to CSP, then talks about why we decided to change our approach, what we changed, some unintended consequences and how we fixed things; it then ends with some observations and learnings. [more inside]
Configuration-driven state machines
Many projects need a state machine to control workflows, You can read all sorts of computer science articles on what a state machine is, but the essence is that a particular object can exist in a certain number of states only, and events will cause a transition from one state to another. [more inside]
Why the CSV library is broken (Part V) - Do You Want French Quotes with that Comma?
Hello, I’ve written a new (and fifth) episode on why the CSV standard library is broken (and how to fix it). Let’s have a look at quotes and leading and trailing spaces: Escaping the Stray Quote Error Hell - Do You Want Single, Double, or French Quotes With That Comma? Questions and comments welcome. Cheers. Prost. PS: If you want to see other (more) CSV formats / dialects pre-configured and supported “out-of-the-box” in the new csv reader, please tell.
`ActiveSupport::ArrayInquirer` and even more Rails
This week I learned that ActiveSupport::StringInquirier Rails class has a younger brother called ActiveSupport::ArrayInquirer. It adds some superpowers to Array objects. [more inside]
Talking about my first Rails pull request on The Ruby on Rails Podcast
I was absolutely honored when I was invited to speak and share my story a few weeks ago; from dipping my toes into very small bits of open source to getting a meaningful Rails PR accepted by DHH himself: https://schwad.github.io/ruby/rails/community/2018/10/16/talking-about-my-first-rails-core-pull-request-on-the-ruby-on-rails-podcast.html
Why software architecture really matters
Bottom line is, there isn’t such a thing as spending too much time on software architecture. A well-designed solution is worth thousands of hours. Why software architecture matters.
Hanami v1.3.0
Switch to RSpec, deprecations, minor enhancements, and bug fixes. New Guides website and new team member. From now on, our focus will be for 2.0. We’ll deeply integrate DRY & ROM. http://hanamirb.org/blog/2018/10/24/announcing-hanami-130.html
Webpacker can’t find application.js in public/packs/manifest.json error
Debugging silently failing compilation aka Webpacker can’t find application.js in public/packs/manifest.json.
csvreader v1.1.0 - adds records with fixed width fields (fwf) and no separator :-)
Hello, I’ve added the CSV with meta data (front matter) block in YAML (CSVY) format and the “classic” fortran-style fixed width fields (FWF) with no separator in the latest csvreader library / gem update. Use: Csv.fixed.parse( ..., width: [8,8,32,14] ), for example, for the new flavor or Csv.meta to get the (optional) meta data block in the CSV v1.0 “The Right Way” format / flavor. Happy data wrangling with ruby. Cheers. Prost. PS: If you want to see other CSV flavors / dialects / formats / variants included, please tell.
"Ruby on Rails is slow"
Too frequent a complaint, but I see why: Rails makes it easy to be lazy.
describe v0.1.0 - A small command line dictionary
https://rubygems.org/gems/describe and https://github.com/cybcafe/describe [more inside]
How to: Execute RSpec in parallel locally
Local, parallel spec execution, right here, right no (before upgrades to Rails 6) 🏎️💨Just watch out to not cook your notebook 🔥 This is where desktops shine :-) 👉 http://bit.ly/testing-sanity-p3-local
Meet Yabeda: Modular framework for instrumenting Ruby applications
Introducing Yabeda (Russian for “tattletale”)—a family of gems based on the extendable framework that makes collecting metrics from Ruby applications and exporting them to datastores such as Prometheus easier than ever before. Rails, Sidekiq, and Prometheus are supported out of the box, more integrations are coming, hopefully with the help from the community.
How does Devise keep your passwords safe?
A brief explanation on how Devise alongside Bcrypt store passwords safely. https://medium.com/@alvesjtiago/how-does-devise-keep-your-passwords-safe-d367f6e816eb
New AppPerf Feature - Latency Bands
Hey everyone. Just wanted to share an update that I made to AppPerf (open source application performance monitoring tool). I added a new feature call Latency Bands that tries to combine histograms counts of latencies and percentiles of latencies into a single graph to help identify issues more quickly. You can read about it here: [more inside]
tty-config v0.3.0
The latest release of tty-config adds support for binding settings to environment variables, adding a custom setting aliases, reading and writing INI type files formats which are often used for holding environment configuration variables. Enjoy!
Mining for Gold Using the World's #1 and Most Popular Data Format (w/ Ruby)
Hello, the talk notes from yesterday’s Vienna.rb meetup titled Mining for Gold Using the World’s #1 and Most Popular Data Format (w/ Ruby and CsvReader). Happy data wrangling / mining with Ruby. Cheers. Prost. PS: The talk slides from the 2nd talk titled Designing HexaPDF: Iterarative Design, Orthogonality and Other Design Tools by Thomas Leitner
Livestreaming from Phusion HQ: adding a major feature to Passenger
November 1st Passenger creator Hongli Lai will be livestreaming the implementation of a major feature in the app server. Implementing ‘generic language support’ seemed like the opportune moment to show how Passenger is architected and how we approach writing (C++) code: https://blog.phusion.nl/2018/10/19/livestreaming-from-phusion-hq-adding-a-feature-to-passenger/
Why the ruby community encourages Duck Typing
In this article, we’re going to explore the following topics:
How to Speed up Your Tests without Touching the Code
I wanted to share an interesting discovery. If you’re using Capybara then you might be able to speed up your tests considerably (5 times in my case) by moving the database to tmpfs. I wrote an article showing how: https://www.gregnavis.com/articles/how-to-tune-your-database-to-make-tests-faster.html . The same technique should work in other frameworks (and languages) as long as you don’t wrap test cases in transactions to clean up after them.
`ActiveSupport::StringInquirer` magic
Did you know that ActiveSupport::StringInquirier class is a part of Ruby on Rails codebase? I didn’t. It gives String objects magic powers :-) [more inside]