Rails

Ruby concurrency is hard: how I became a Ruby on Rails contributor 1

Ruby concurrency is hard: how I became a Ruby on Rails contributor

For the past several weeks, I’ve been trying to fix a cranky spec in Karafka integrations suite, which in the end, lead me to become a Ruby on Rails micro-contributor and submitting similar fix to several other high-popularity projects from the Ruby ecosystem. Here’s my story of trying to make sense of my specs and …

Ruby concurrency is hard: how I became a Ruby on Rails contributor Read More »

RSpec story about disappearing classes 5

RSpec story about disappearing classes

ActiveSupport#descendants can be slow. In a bigger system with layers of descendants, finding all of them can be time-consuming: puts Benchmark.measure do 100.times { Dispatchers::Base.descendants } end # 5.235370 0.015754 5.251124 ( 5.251069) In the code I’ve been working on, it meant that a single lookup was taking around 50ms. That is a lot, especially …

RSpec story about disappearing classes Read More »

Karafka framework 2.0 announcement 6

Karafka framework 2.0 announcement

I’m thrilled to announce the new and shiny Karafka 2.0. It is an effect of my work of almost four years. For those who wonder what Karafka is, Karafka is a Ruby and Rails multi-threaded efficient Kafka processing framework. Karafka 2.0 is a major rewrite that brings many new things to the table but removes …

Karafka framework 2.0 announcement Read More »

Diffend – OSS supply chain security and management platform for Ruby 13

Diffend – OSS supply chain security and management platform for Ruby

I’m incredibly excited to announce a security platform for managing Ruby gems dependencies: diffend.io. This platform is a result of my involvement in Ruby security matters for years. It all started in early 2018 with a tool to review gems versions diffs. While working on it, I’ve noticed that there’s much more that needs to …

Diffend – OSS supply chain security and management platform for Ruby Read More »

Karafka framework 1.4.0 Release Notes (Ruby + Kafka)

This release mostly solves problems related to message deserialization and normalizes some of the naming conventions to ease during the upgrade to the upcoming 2.0 version. Note: This release is the last release with ruby-kafka under the hood. We’ve already started the process of moving to rdkafka-ruby. Note: If you are using Sidekiq-Backend plugin, please …

Karafka framework 1.4.0 Release Notes (Ruby + Kafka) Read More »

NameError: undefined method ‘parse’ for class ‘NilClass’ when doing Time.zone.parse

If you get following error when trying to parse time: Time.zone.parse(‘2019-01-01 11:11:11′) Traceback (most recent call last): 16: from /bundler/friendly_errors.rb:124:in `with_friendly_errors’ 15: from /bundle:30:in `block in ‘ 14: from /bundler/cli.rb:18:in `start’ 13: from /bundler/vendor/thor/lib/thor/base.rb:466:in `start’ 12: from /bundler/cli.rb:27:in `dispatch’ 11: from /bundler/vendor/thor/lib/thor.rb:387:in `dispatch’ 10: from /bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command’ 9: from /bundler/vendor/thor/lib/thor/command.rb:27:in `run’ 8: from /bundler/cli.rb:465:in `exec’ …

NameError: undefined method ‘parse’ for class ‘NilClass’ when doing Time.zone.parse Read More »

Karafka framework 1.3.0 Release Notes (Ruby + Kafka)

Note: These release notes cover only the major changes. To learn about various bug fixes and changes, please refer to the change logs or check out the list of commits in the main Karafka repository on GitHub. TL;DR If you would prefer to see the changes in the code, here’s the upgrade PR from the …

Karafka framework 1.3.0 Release Notes (Ruby + Kafka) Read More »

Ruby on Rails HTTP Basic authentication with JSON failure message

A short snippet on how to make Ruby on Rails authenticate_or_request_with_http_basic respond with a JSON valid message upon failure. class ApplicationController < ActionController::API include( ActionController::HttpAuthentication::Basic::ControllerMethods ) before_action :http_authenticate! def http_authenticate! authenticate_or_request_with_http_basic do |key, secret| return if Resource.find_by( key: key, secret: secret ) end render( json: 'Invalid credentials'.to_json, status: 401 ) end end Cover photo by …

Ruby on Rails HTTP Basic authentication with JSON failure message Read More »