How to monitor Sidekiq: A working example
Sidekiq monitoring needs a JSON status endpoint for queue sizes, worker activity, and recent failures. A cron-triggered heartbeat job and Redis timestamps let external checks detect stalled background processing.
How to open files from better_errors with RubyMine on Linux
RubyMine rubymine:// links can fail on GNOME/Linux, blocking better_errors from opening source files in the editor. A custom desktop handler and BETTER_ERRORS_EDITOR_URL make file jumping work.
How Rails and MySQL are handling time zones
Rails and MySQL handle datetimes differently: local-zone storage can avoid conversions, while UTC mode supports per-request zones but requires Time.current and careful timestamp handling.
Some tips for upgrading Bootstrap from 3 to 4
Migrating a larger Rails app from Bootstrap 3 to 4 often breaks styles, components and helper gems; planning library upgrades and rebuilding variables reduces the pain.
Capistrano 3: How to deploy when a firewall blocks your git repo
Firewall or proxy settings can block Capistrano from reaching a Git repository and stop deployments. Using an HTTP proxy or an SSH tunnel restores repository access.
Version 5 of the Ruby Redis gem removes Redis.current
Redis.current is removed in redis-rb 5.0; code using shared clients needs a replacement pattern for per-use, test, or threaded access.
Rails: render a template that accepts a block by using the layout option of render
Reuse a form partial with a customizable submit section by rendering it as a layout and yielding the form object into a block.
Manage Linux services on the command line (Ubuntu)
Ubuntu 18.04 uses systemd to manage services; systemctl starts, stops, enables, disables, and lists units, while service handles System V init scripts.
makandra tech survey - results
Survey results highlight common desktop environments, shells, command-line tools, editors, and Vim plugins used by the team.
Rails: Rest API post-mortem analysis
Rails API backends can be fast and easy to extend, but serializer maintenance, schema drift, documentation limits, and missing rate limits create real operational risks.
Debugging your Webpack build time with Speed Measure Plugin
Slow Webpack builds can be profiled to pinpoint time spent in loaders and modules. Speed Measure Plugin adds per-compile timing output for identifying optimization opportunities.
Install MySQL 5.6 in Ubuntu 16.04
MySQL 5.7 on Ubuntu 16.04 can break older applications; Oracle’s 5.6 APT repo and matching client libraries let development machines keep legacy compatibility.
Debug Ruby code
Interactive Ruby debugging lets you pause execution, inspect variables and stack frames, and step through code from a shell or RubyMine.
Five years of "Today I Learned" from Josh Branchaud
A curated set of 900+ personal programming tips spans Ruby, Rails, Git, Unix, Chrome, and JavaScript, with many small shortcuts for daily development work.
Get rid of WARNING: Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.8
Nokogiri can warn when it was built against one LibXML version but loads another, often after upgrades or mismatched gems. Rebuilding or reinstalling the gem usually resolves it.
Make an HTTP request to a machine but fake the hostname
Send an HTTP 1.1 request to a specific machine while presenting a different host name, using curl --resolve or a manual Host header.
Geordi 1.0 released
Geordi 1.0 consolidates Rails project commands into a single CLI with command lookup, dependencies, and new setup, update, console, shell, and test workflows.
Mock the browser time or time zone in Selenium features
Selenium browser tests see real system time unless the client clock is patched; timemachine.js and Timecop keep browser time aligned, while TZ can align the process time zone.
Apache: Log the original client IP when your site sits behind a reverse proxy
Apache logs behind a reverse proxy show the proxy IP instead of the original client IP, complicating troubleshooting and traffic statistics.
Never use SET GLOBAL sql_slave_skip_counter with a value higher than 1
MySQL replication errors can be skipped safely only one event at a time; larger sql_slave_skip_counter values may skip unrelated binlog events and cause data inconsistency.
Cronjobs: "Craken" is dead, long live "Whenever"
Old cronjob management with craken no longer works on Rails 3.2+, so whenever becomes the replacement for deploying rake tasks into cron.
Sending TCP keepalives in Ruby
TCP sockets can stay half-open when the remote side disappears silently; enabling keepalive probes helps clients detect dead connections and time out sooner.
Temporary solution for connection errors with rubygems
Bundler can fail to fetch gems from rubygems.org when IPv6 connectivity is broken. Lowering IPv6 priority in /etc/gai.conf can let bundle install succeed temporarily.
MySQL: Disable query cache for database profiling
MySQL query caching hides true database timings during profiling; disabling it and Rails per-request caching reveals actual query costs.