# Ruby on Rails

Ruby on Rails is a web-application framework for building database-backed web applications in Ruby.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Rails Hyperdrive: supercharged agentic development for Rails

DevFeed: [Rails Hyperdrive: supercharged agentic development for Rails](<https://devfeed.tech/articles/rails-hyperdrive-supercharged-agentic-development-for-rails-26897.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/rails-hyperdrive-supercharged-agentic-development-for-rails>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-09-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>)

Tags: [agent-experience](<https://devfeed.tech/tags/agent-experience.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding-agents](<https://devfeed.tech/tags/ai-coding-agents.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [ruby-on-rails-consulting](<https://devfeed.tech/tags/ruby-on-rails-consulting.md>)

### AI overview

This tutorial introduces Rails Hyperdrive, a development-only Rails engine that gives AI coding agents live answers from a booted Rails application and lets gems provide agent guidance through Gemfile-gated knowledge. It covers installation, MCP server setup, skills, sub-agents, slash commands, upgrades, and integration for gem authors.

### Source excerpt

Introducing Rails Hyperdrive: a development-only Rails engine that gives AI coding agents live answers from your booted app and lets any gem in your bundle ship guidance gated to your Gemfile. Convention over configuration, applied to agent knowledge.

## Best CI/CD Tools in 2026: Performance and Cost Compared

DevFeed: [Best CI/CD Tools in 2026: Performance and Cost Compared](<https://devfeed.tech/articles/best-ci-cd-tools-in-2026-performance-and-cost-compared-20416.md>)

Original publisher: [Read original article](<https://semaphore.io/blog/best-ci-cd-tools>)

Author: Pete Miloravac

Published: 2026-07-02T14:00:53Z

Content type: article

Language: en

Sources: [Semaphore Engineering](<https://devfeed.tech/sources/semaphore-engineering.md>)

Topics: [CI/CD](<https://devfeed.tech/topics/cicd.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cost](<https://devfeed.tech/tags/cost.md>), [linux](<https://devfeed.tech/tags/linux.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

The article benchmarks five CI/CD platforms using the Redmine Ruby on Rails application, standardized 2 vCPU environments, and ten post-cache-warm-up runs per provider. It reports that Semaphore ranked first for both speed and cost, with an average build time of 5m 01s and a cost of $0.04 per run.

### Source excerpt

Choosing a CI/CD tool in 2026 isn't just a technical decision -- it's a cost and productivity decision. Slow pipelines mean slower shipping, and opaque pricing means budget surprises at the end of the month. We benchmarked five of the most widely used CI/CD platforms against the same workload: a real Ruby on Rails application [...] The post Best CI/CD Tools in 2026: Performance and Cost Compared appeared first on Semaphore.

## Persisting nested form attribute indexes through Turbo updates

DevFeed: [Persisting nested form attribute indexes through Turbo updates](<https://devfeed.tech/articles/persisting-nested-form-attribute-indexes-through-turbo-updates-30000.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/01/08/persisting-nested-form-attribute-indexes-through-turbo-updates/>)

Author: georgebaker

Published: 2026-01-08T12:57:43Z

Content type: article

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [forms](<https://devfeed.tech/tags/forms.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [server-side-rendering](<https://devfeed.tech/tags/server-side-rendering.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [turbo](<https://devfeed.tech/tags/turbo.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This article examines a problem with maintaining nested form attribute indexes when Turbo Streams update part of a Ruby on Rails form. It explains how indexes are generated during server rendering and in browser-side JavaScript, and why introducing server-side Turbo Stream rendering creates additional complexity.

### Source excerpt

Introduction We recently encountered an interesting problem when using Turbo Streams to update part of a complex nested form in FreeAgent's main Ruby on Rails web application. For those unfamiliar, nested forms allow a user to enter data relating to both a main parent object and its associated objects. This could be, for example, a [...]

## Creating a Custom Mobile Integration for a Board Game Using Ruby on Rails

DevFeed: [Creating a Custom Mobile Integration for a Board Game Using Ruby on Rails](<https://devfeed.tech/articles/creating-a-custom-mobile-integration-for-a-board-game-using-ruby-on-rails-20115.md>)

Original publisher: [Read original article](<https://hashrocket.com/blog/posts/creating-a-custom-mobile-integration-for-a-board-game-using-ruby-on-rails>)

Author: Craig Hafer

Published: 2025-12-04T14:00:00Z

Content type: tutorial

Language: en

Sources: [Hashrocket](<https://devfeed.tech/sources/hashrocket.md>)

Topics: [board-game](<https://devfeed.tech/topics/board-game.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [Database](<https://devfeed.tech/topics/database.md>), [Stimulus](<https://devfeed.tech/topics/stimulus.md>)

Tags: [board-game-app](<https://devfeed.tech/tags/board-game-app.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [stimulus](<https://devfeed.tech/tags/stimulus.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>)

### AI overview

A tutorial on building a mobile version of the Analyzer mechanism from the 1973 Parker Brothers board game Billionare. The project uses Ruby on Rails, Tailwind, PostgreSQL, and Stimulus, with the goal of supporting a broader library of board game helpers.

### Source excerpt

Picture this: you find a charming old board game at a garage sale, bring it home, gather some friends--and snap. The 50-year-old plastic components break instantly. You search the web for help to replace this fun and unique game mechanic but there's nothing to be found. So naturally, you roll up your sleeves and build your own mobile version. No one else does this? Just me? Well, in case you ever find yourself in a similar boat, I figured I would walk you through what I did when building my own mobile integration to the 1973 Parker Brothers classic Billionare. As I said, right when I went to try out this cool "new" board game for the first time, the plastic ends of the Analyzer snapped. The analyzer is basically a plastic rod with 2 floating spinners on them. The spinners, when rotated, will either land with a red face or a green face. You then refer to the chart to see what action to take. I thought this was such a unique way to give a random effect in a game, without relying on dice. It essentially is just a random binary spinner that counts up to 4. Here is what it looks like for reference: So, without any 4 sided die lying around, and not wanting to use a boring random number generator, my brain went right to what it knows best---Ruby on Rails. So without further ado, here's what I did and how you can do something similar yourself. Creating the app Sure, Rails could be considered overkill for such a simple app. But my idea is to allow this project to scale into a whole library of board game helpers that can all live within the same app. So, to start off I ran the old trusty rails new command, with a couple preferences I like to pass in to make my life easier as a developer. rails new board_game_library --css tailwind --database=postgresql One of the main tools I leveraged for this project besides Rails was Tailwind. Tailwind makes styling so easy. Here at Hashrocket Tailwind is pretty standard for all of us, so if you're interested in any tips or tricks, we have

## A decade in the tech industry

DevFeed: [A decade in the tech industry](<https://devfeed.tech/articles/a-decade-in-the-tech-industry-39669.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/random/2025-05-30_a-decade-in-the-tech-industry>)

Published: 2025-05-30T00:00:00Z

Content type: opinion

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Angular](<https://devfeed.tech/topics/angular.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [career](<https://devfeed.tech/tags/career.md>), [development](<https://devfeed.tech/tags/development.md>), [experience](<https://devfeed.tech/tags/experience.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [tech](<https://devfeed.tech/tags/tech.md>)

### AI overview

A personal reflection on completing a decade in the technology industry, covering the author's first job after college, early software employment in India, startup work, changing career opportunities, and the technologies that were prominent at the start of the author's career.

### Source excerpt

I just realised that I completed a decade in the tech industry this month. 17th May 2015, was my joining date in my first ever big boy job...

## Announcing Hotwire Native 1.2

DevFeed: [Announcing Hotwire Native 1.2](<https://devfeed.tech/articles/announcing-hotwire-native-1-2-33497.md>)

Original publisher: [Read original article](<https://dev.37signals.com/announcing-hotwire-native-v1-2/>)

Author: Jay Ohms

Published: 2025-04-23T17:00:00Z

Content type: release

Language: en

Sources: [37signals Dev](<https://devfeed.tech/sources/37signals-dev.md>)

Topics: [Hotwire](<https://devfeed.tech/topics/hotwire.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [hotwire](<https://devfeed.tech/tags/hotwire.md>), [ios](<https://devfeed.tech/tags/ios.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

Hotwire Native 1.2 is a major update for iOS and Android that adds route decision handlers, built-in handling for server-driven historical location URLs, official bottom-tab navigation support, and new demo apps.

### Source excerpt

A big update to Hotwire Native for iOS and Android.

## Make streaming APIs easy with enumerable methods

DevFeed: [Make streaming APIs easy with enumerable methods](<https://devfeed.tech/articles/make-streaming-apis-easy-with-enumerable-methods-33525.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/making-streaming-apis-easy>)

Published: 2024-12-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [large-language-model](<https://devfeed.tech/tags/large-language-model.md>), [openai](<https://devfeed.tech/tags/openai.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This tutorial explains how Ruby enumerable methods can make streaming API responses easier to transform and compose. It uses large language model APIs, including the OpenAI chat API, as an example and describes converting block-yielded values into an enumerator.

### Source excerpt

When you first discover Ruby on Rails, some things might strike you right away: namely the large number of enumerable methods and the blocks to run code in the middle of another method. Those features helped me translate my thoughts directly into c

## Tropical.rb Conference and Rails Girls São Paulo

DevFeed: [Tropical.rb Conference and Rails Girls São Paulo](<https://devfeed.tech/articles/tropical-rb-conference-and-rails-girls-sao-paulo-20048.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/tropical-rb-conference-and-rails-girls-sao-paulo>)

Author: Doximity

Published: 2024-05-22T16:12:00Z

Content type: article

Language: en

Sources: [Doximity](<https://devfeed.tech/sources/doximity.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Development](<https://devfeed.tech/topics/development.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [software-development](<https://devfeed.tech/topics/software-development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [brazil](<https://devfeed.tech/tags/brazil.md>), [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [event](<https://devfeed.tech/tags/event.md>), [global](<https://devfeed.tech/tags/global.md>), [junior](<https://devfeed.tech/tags/junior.md>), [learning](<https://devfeed.tech/tags/learning.md>), [programming](<https://devfeed.tech/tags/programming.md>), [projects](<https://devfeed.tech/tags/projects.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [skills](<https://devfeed.tech/tags/skills.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

Doximity sponsored the Tropical.rb Rails conference in São Paulo and the following Rails Girls São Paulo event. The events covered Ruby on Rails, its community and upcoming Rails 8 features, while Rails Girls participants collaborated on a mentoring app and received guidance toward advancing their software development skills.

### Source excerpt

On April 4th and 5th, 2024, Doximity sponsored Tropical.rb, also known as "The Latin America Rails Conference," in São Paulo, Brazil. This event gathered developers from across Latin America and beyond. It served as a dynamic platform for discussing Ruby on Rails, sharing knowledge, and networking among professionals in the field. The Doximity team at Tropical.rb Doximity has utilized Ruby on Rails since its founding, attributing significant success to the framework. The timing of the recent conference coincided with a resurgence in Rails' popularity, marked by new features and increased adoption among start-ups and new companies.The framework's robust foundation is evidenced by its daily use in major companies such as Doximity, Shopify, AppSignal, and 37Signals. The Tropical.rb conference featured keynotes from prominent Rails core team members Aaron Patterson and Eileen Uchitelle, who provided deep dives into the internals of Rails, explaining some of its magic. Rafael França shared insights on his experiences and the pivotal role of the Ruby on Rails community. The event highlighted numerous success stories of projects and companies built using Rails. Further excitement was generated by discussions on upcoming features in Rails 8, such as Propshaft, Kamal, and Thruster, detailed in Breno Gazzola's keynote. A central theme of the conference was Rails' suitability as a "one-person framework", with Rails 8 advancements reinforcing this concept. Rails Girls São Paulo The day after Tropical.rb, Doximity, in partnership with The Rails Foundation, sponsored the latest edition of Rails Girls São Paulo, a global non-profit initiative dedicated to introducing women of all ages to the world of software development. This edition of Rails Girls focused on empowering women with a programming background to improve their skills and guide them in their journey from junior to mid-level positions and beyond. Our SVP of Engineering, Bruno Miranda, attended the event, along with a fe

## Modularizing Rails Monoliths One Bite at a Time

DevFeed: [Modularizing Rails Monoliths One Bite at a Time](<https://devfeed.tech/articles/modularizing-rails-monoliths-one-bite-at-a-time-20038.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/modularizing-rails-monoliths-one-bite-at-a-time>)

Author: Doximity

Published: 2023-12-05T13:00:00Z

Content type: article

Language: en

Sources: [Doximity](<https://devfeed.tech/sources/doximity.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>)

Tags: [microservices](<https://devfeed.tech/tags/microservices.md>), [modular-monolith](<https://devfeed.tech/tags/modular-monolith.md>), [modularization](<https://devfeed.tech/tags/modularization.md>), [modules](<https://devfeed.tech/tags/modules.md>), [rails](<https://devfeed.tech/tags/rails.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

The article describes using a phased refactoring approach and the packwerk gem to modularize growing Rails monoliths into modules with enforced boundaries. It presents the modular monolith as a lower-complexity alternative to adopting microservices and references Doximity's experience.

### Source excerpt

As Rails monoliths grow, coupling becomes increasingly difficult to manage. Developers often reach for microservices to help simplify things, but instead find higher complexity. The Modular Monolith approach is a proven, lightweight alternative that offers the benefits of enforced boundaries without being cumbersome. I spoke at the 2023 Rocky Mountain Ruby conference on how teams can use a phased approach to refactoring toward this style using the packwerk gem. At Doximity, we've used this gem and a phased approach to break some of our most critical rails applications into modules that are easier for our teams to work with. In November, 2023, I also chatted with Elise Shaffer on The Ruby on Rails Podcast about our experience with application modularization at Doximity. Be sure to follow @doximity_tech if you'd like to be notified about new blog posts.

## The Rails Foundation

DevFeed: [The Rails Foundation](<https://devfeed.tech/articles/the-rails-foundation-20047.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/the-rails-foundation>)

Author: Doximity

Published: 2022-11-14T08:10:00Z

Content type: release

Language: en

Sources: [Doximity](<https://devfeed.tech/sources/doximity.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [rails](<https://devfeed.tech/tags/rails.md>), [resources](<https://devfeed.tech/tags/resources.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

Doximity describes how it has used Ruby on Rails to build products and services for U.S. medical professionals. It announces that Doximity is joining the Rails Foundation as one of eight founding core members and plans to contribute resources to support the Ruby on Rails ecosystem.

### Source excerpt

Physicians First has been our mantra from day one. Over the last twelve years, we've leveraged Ruby on Rails to build the largest network of U.S. medical professionals. Our mission is to help physicians be more productive so they can provide better care for their patients. Ruby on Rails has enabled us to build products that provide doctors with modern telehealth, communication, workflow, and continuing medical education. We love building innovative technology that has a real, meaningful impact on physicians' and patients' lives. We will continue investing and building products to help make medical professionals more effective. To us, the Ruby on Rails framework and its ecosystem is still the best tool for the job. We're happy to announce that we're joining the Rails Foundation as one of eight founding core members. We look forward to contributing to this non-profit organization and providing important resources to help ensure the Ruby on Rails ecosystem remains healthy and continues to thrive for decades to come. -- Bruno Miranda vp, eng

## Strava's Transition from a Ruby on Rails Monolith to Scala Microservices

DevFeed: [Strava's Transition from a Ruby on Rails Monolith to Scala Microservices](<https://devfeed.tech/articles/a-taste-of-pakora-26568.md>)

Original publisher: [Read original article](<https://medium.com/strava-engineering/a-taste-of-pakora-cf3b5de261ec?source=rss----89d4108ce2a3---4>)

Author: Avery Dunn

Published: 2022-11-01T16:02:01Z

Content type: opinion

Language: en

Sources: [Strava Engineering](<https://devfeed.tech/sources/strava-engineering.md>)

Topics: [Microservices](<https://devfeed.tech/topics/microservices.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [internships](<https://devfeed.tech/tags/internships.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

A Strava software engineering intern reflects on the company's transition from a Ruby on Rails monolith to Scala microservices. The article describes the intended benefits for team independence and developer experience, and notes that the API is evolving from REST to GraphQL.

### Source excerpt

My name is Avery Dunn and I am a rising master's student at Washington University in St. Louis studying computer science. For the past 12 weeks, I have been a software engineering intern on the API & Platform pod of the Foundation team. I am an active Strava user and have been for approximately 3 years with my favorite activity being running. Some other activities I enjoy are playing the piano, reading novels, or skiing (more of a luxury rather than a hobby). My internship at Strava has been a wonderful experience to help me learn, grow, and develop into becoming a more well-rounded, conscientious software engineer. Whether it was working with a recent hire or seasoned "Stravioli," the positive and ambitious company culture shined brightly throughout the course of the summer. In Transition From a Monolithic to Microservice Architecture Strava currently maintains a code monolith-a huge Ruby on Rails codebase that controls the user interface, business logic, and database access. For a growing company like Strava and the continuous development of ideas being made into new features, a code monolith doesn't make for a great developer experience. Trying to parse through a massive codebase and making sure that all the moving parts are in order so that a typo that was somehow glossed over can successfully be changed makes me a little dizzy, personally. The developers at Strava thought so too, and decided to embark on a transition from the Ruby on Rails singular software application to Scala microservices. Over the course of my internship, I gained insight into the process of restructuring a singular software application into Scala microservices and the benefits of that result. Scala microservices can be thought of as modules that work together but separately. They encourage diversification of teams such that each team has less of a dependence on one another like they would for a monolithic codebase. Figure 1: Comparison of a monolithic codebase architecture versus distribut

## Mexico City Rails Meet-up Reboot

DevFeed: [Mexico City Rails Meet-up Reboot](<https://devfeed.tech/articles/mexico-city-rails-meet-up-reboot-20036.md>)

Original publisher: [Read original article](<https://technology.doximity.com/articles/mexico-city-rails-meet-up-reboot>)

Author: Doximity

Published: 2022-11-01T10:39:00Z

Content type: article

Language: en

Sources: [Doximity](<https://devfeed.tech/sources/doximity.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Bootcamp](<https://devfeed.tech/topics/bootcamp.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

This article describes the restart of the Mexico on Rails meetup in Mexico City after pandemic-related disruption. It covers the event, its attendees, a presentation on syncing data across Rails microservices, Kafka as publish-subscribe middleware, and discussion about software education and in-person community.

### Source excerpt

In recent years Mexico City has developed a thriving tech scene, with new startups putting roots, vying for talent, and contributing to a slew of events and conferences in the city. Mexico on Rails meetup has been an integral part of the ecosystem, meeting regularly to connect and discuss Ruby on Rails and web development. But the pandemic put most of this activity on hold. While discussing this recently with my Doximity colleague Samus Gray, who also lives in Mexico City, he suggested we try and restart the meetup activity. I nodded along, as something that would be nice to do. A few days later, Samus had already convinced the previous meetup organizer to transfer the group to us, found a venue, and got Doximity to sponsor it. That's when I realized he meant it. Last week we met in Le Wagon, a Rails Bootcamp in the fashionable Roma Norte neighborhood. Despite a rainy day, about 20 people showed up. This was a diverse crowd of seasoned developers working for local startups such as Telos Labs and Jetty, Bootcamp students, and digital nomads working remotely. After breaking the ice over Detroit-style pizza and beers, we moved to a classroom, where I gave a presentation on data syncing between Rails microservices. Presented originally by our colleague Austin Story in RailsConf 2021, it tracked Doximity's thorny path from a monolith app with a limited number of data sources to an architecture in which multiple rails applications and services can consume and sync over billions of data updates from a myriad of sources. During the Q&A session, Samus shared his experience working with Kafka, Doximity's tool of choice for our publish-subscribe middleware. Finally, Le Wagon co-founder Mathiew Le Roux took the floor to share his vision for the future of software education. Eager to connect, most of us stayed long after the formal part was over, chatting and sharing our experiences. The enthusiasm shared by everyone for the meetup reboot was a reminder of the importance of meet

## Using GraphQL with Ruby on Rails

DevFeed: [Using GraphQL with Ruby on Rails](<https://devfeed.tech/articles/using-graphql-with-ruby-on-rails-23563.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/using-graphql-with-ruby-on-rails>)

Author: Erin Fox

Published: 2021-11-18T11:00:05Z

Content type: tutorial

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [API](<https://devfeed.tech/topics/api.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [apollo](<https://devfeed.tech/tags/apollo.md>), [applications](<https://devfeed.tech/tags/applications.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [community](<https://devfeed.tech/tags/community.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [framework](<https://devfeed.tech/tags/framework.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rails](<https://devfeed.tech/tags/rails.md>), [react](<https://devfeed.tech/tags/react.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [ruby-programming-language](<https://devfeed.tech/tags/ruby-programming-language.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>)

### AI overview

A tutorial introducing Ruby on Rails and GraphQL, then demonstrating how to build and query a Rails-GraphQL API with React and Apollo.

### Source excerpt

Objective: Learn how to create a new project with Ruby on Rails and GraphQL while setting it up to use React and Apollo. The focus is on getting the API running and executing a query. Introduction Ruby on Rails is an MVC (model, view, controller) framework that you can use to build web applications using the Ruby programming language. GraphQL is a declarative query language and server-side runtime that makes it easier for frontend developers to perform data fetching.

## Using Git Commits to Learn to Program Ruby on Rails

DevFeed: [Using Git Commits to Learn to Program Ruby on Rails](<https://devfeed.tech/articles/using-git-commits-to-learn-to-program-ruby-on-rails-28240.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2019/11/03/using-git-commits-to-learn-to-program-ruby-on-rails.html>)

Author: Fuzzygroup

Published: 2019-11-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Git](<https://devfeed.tech/topics/git.md>), [GitHub Issues](<https://devfeed.tech/topics/github-issues.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Agile](<https://devfeed.tech/topics/agile.md>), [User Stories](<https://devfeed.tech/topics/user-stories.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [code](<https://devfeed.tech/tags/code.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [github-issues](<https://devfeed.tech/tags/github-issues.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learning](<https://devfeed.tech/tags/learning.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

This article presents a learning technique for Ruby on Rails based on mapping Agile user stories to GitHub Issues, branches, pull requests, and resulting code commits. It illustrates the approach with a Rails data-model and database-migration example.

### Source excerpt

I've been actively working on a side project for the past several months and one of the people who has been helping out a bit around the edges wants to learn how to program Ruby on Rails. Since this, like everything I always do, is a distributed, remote effort, an in person teaching effort just doesn't work. When they pushed back on the feature set I was making and said that it wouldn't work for them, I said "Well that's fine, tell me what you want". And they responded with a detailed set of Agile User Stories. I took a look at these and I realized that if I mapped them into Github issues (aka tickets) and then Github Pull Requests that this might be exactly the right tool to get this person past the learning hump. Note: Just to be clear, it doesn't matter what the side project is. Yes it is live on the Internet but it is buggy as hell. And this is a major new feature. The whole point of this blog post is to talk about a new learning technique not "Scott's (current) Crazy Side Project". Learning from Code Commits The hard part with learning any new development framework is making the leap from "here's what I want" (the story) to "here's what to do to make that" (the code and tooling steps). Now if you use Github how we do, with a simple branch based development model, where 1 issue maps to 1 branch, this means that you can actually look at a user story and then see all the changes. This is a weird enough learning concept that I'm going to illustrate this step by step. Beginning With the Story Let's start with the agile user story: As a user, I want a currency system (ChangeCoins - CC) that is awarded to me for doing stuff. From a Rails perspective, what this means, is that we need a data model, persistently stored to the database that tracks something else. Continuing to the Issue Let's look at the issue in question: There are a few notes on the issue here: "Needs to tie back to user_id, metric_id, habit_id" - this indicates foreign key relationships back to other d

## Hooking in a Stats module in Rails Active Record

DevFeed: [Hooking in a Stats module in Rails Active Record](<https://devfeed.tech/articles/hooking-in-a-stats-module-in-rails-active-record-39610.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2019-06-09_Hooking-in-a-Stats-module-in-Rails-Active-Record-942c4fdbc0a9>)

Published: 2019-06-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [activerecord](<https://devfeed.tech/tags/activerecord.md>), [crud](<https://devfeed.tech/tags/crud.md>), [orm](<https://devfeed.tech/tags/orm.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

This tutorial explains how to integrate a separate statistics module into Rails Active Record by overriding model CRUD methods and tracking operation counts. It also describes why this approach does not fully handle chained ActiveRecord::Relation queries.

### Source excerpt

Most full-fledged web frameworks come with ORMs built in. ORMs or Object Relational Mappings help to map the programming language data structures to actual data stores without having to worry about the underlying data source...

## The Road to an Envoy Service Mesh

DevFeed: [The Road to an Envoy Service Mesh](<https://devfeed.tech/articles/the-road-to-an-envoy-service-mesh-27020.md>)

Original publisher: [Read original article](<https://medium.com/square-corner-blog/the-road-to-an-envoy-service-mesh-d1a51cbd31dd?source=rss----3650599ae4e2---4>)

Author: Snow Pettersen

Published: 2019-03-29T15:36:51Z

Content type: article

Language: en

Sources: [Square Corner Blog - Medium](<https://devfeed.tech/sources/square-corner-blog-medium.md>)

Topics: [microservices architecture](<https://devfeed.tech/topics/microservices-architecture.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Java](<https://devfeed.tech/topics/java.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [automatic](<https://devfeed.tech/tags/automatic.md>), [discovery](<https://devfeed.tech/tags/discovery.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [envoy-proxy](<https://devfeed.tech/tags/envoy-proxy.md>), [failover](<https://devfeed.tech/tags/failover.md>), [go](<https://devfeed.tech/tags/go.md>), [http](<https://devfeed.tech/tags/http.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [java](<https://devfeed.tech/tags/java.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [microservices-architecture](<https://devfeed.tech/tags/microservices-architecture.md>), [routing](<https://devfeed.tech/tags/routing.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [service-mesh](<https://devfeed.tech/tags/service-mesh.md>)

### AI overview

Square describes its evolution from a Ruby on Rails monolith to a microservices architecture and explains the interoperability challenges created by its Java, Ruby, and Go stack. The article outlines its Protobuf-based Sake RPC framework, its routing, failover, traffic-shaping, and service-discovery features, and Square's migration toward a full service mesh.

### Source excerpt

Heads up, we've moved! If you'd like to continue keeping up with the latest technical content from Square please visit us at our new home https://developer.squareup.com/blog At Square we've been running a microservices architecture for years, primarily using three different languages: Java, Ruby and Go. Running such a diverse stack can make interoperability between the different languages/frameworks challenging, and in this post I'll talk about how Square has handled this in the past and where we're at today -- actively migrating towards a full service mesh. The Old World Square started off, like many other companies, just running one large monolith. For Square this was a big Ruby on Rails service, that handled everything that Square did. A monolith makes service to service communication completely unnecessary: everything runs in the same code base on a single database, so everything can be implemented without making any outbound network calls (except to third parties outside of Square). After a while, Square decided to move more towards a service oriented architecture to reduce the reliance on a single, large application. To do this Square decided to build their own Protobuf based RPC framework, inspired by Google's Stubby. This was years before gRPC was created, so there weren't any open source options at the time. This RPC framework, called Sake, was implemented for Java and Go as these were the languages used for higher availability services, while regular REST HTTP was used between services that didn't understand Sake. (Incidentally, Sake became a part of gRPC's DNA) Over time this framework became fairly sophisticated, with many features not generally available: Smart retries with automatic failover Prioritized routing based on upstream health Traffic shaping and service discovery This ended up working well, but relied on fat client/server libraries, so extending support to other languages was hard. Attempts were made to bring feature parity between languages i

## Logster and our error logging strategy at Discourse

DevFeed: [Logster and our error logging strategy at Discourse](<https://devfeed.tech/articles/logster-and-our-error-logging-strategy-at-discourse-22431.md>)

Original publisher: [Read original article](<https://samsaffron.com/archive/2018/12/27/logster-and-our-logging-strategy-at-discourse>)

Author: Sam Saffron

Published: 2019-01-02T07:11:20Z

Content type: article

Language: en

Sources: [Sam Saffron](<https://devfeed.tech/sources/sam-saffron.md>)

Topics: [log management](<https://devfeed.tech/topics/log-management.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Sidekiq](<https://devfeed.tech/topics/sidekiq.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>), [nginx](<https://devfeed.tech/topics/nginx.md>), [Prometheus](<https://devfeed.tech/topics/prometheus.md>), [Docker](<https://devfeed.tech/topics/docker.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [docker](<https://devfeed.tech/tags/docker.md>), [errors](<https://devfeed.tech/tags/errors.md>), [grafana](<https://devfeed.tech/tags/grafana.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [net](<https://devfeed.tech/tags/net.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [production](<https://devfeed.tech/tags/production.md>), [prometheus](<https://devfeed.tech/tags/prometheus.md>), [rails](<https://devfeed.tech/tags/rails.md>), [redis](<https://devfeed.tech/tags/redis.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [saffron](<https://devfeed.tech/tags/saffron.md>), [sam](<https://devfeed.tech/tags/sam.md>), [sidekiq](<https://devfeed.tech/tags/sidekiq.md>), [sql](<https://devfeed.tech/tags/sql.md>), [visibility](<https://devfeed.tech/tags/visibility.md>), [weblog](<https://devfeed.tech/tags/weblog.md>)

### AI overview

The article describes Discourse's logging strategy and Logster, an open-source log viewer for Ruby on Rails or Rack applications. It explains how Logster stores and analyzes logs with Redis, aggregates production errors, and provides detailed development logs, alongside broader monitoring and observability tools.

### Source excerpt

I have always been somewhat fascinated with logs. I tend to see the warning and error logs in production as a valuable heartbeat of an application. Proper handling of error logs is a very strong complement to a robust test suite. It shows us what really happens when real world data meets our application. 9 years ago, at Stack Overflow we had a daily ritual where we would open up our fork of ELMAH every morning and fish through our logs for problems. This had a dramatic positive effect on Stack Overflow. Almost 7 years into our journey building Discourse, every single week we find and fix issues in our application thanks to our error logs and Logster. Error logs are the pulse of our application, they let us know immediately if there are any urgent issues and where. Since we host more than 1500 sites running many different code branches, we needed to evolve a sane and robust set of practices and tools. Top level structure of logging and monitoring at Discourse We have lots of logs at Discourse and many systems for dealing with them. We keep raw Docker, Postgres, Redis, NGINX, Rails and HAProxy and so on in Elastic Search and use Kibana for business intelligence. We have a monitoring system built on alertmanager and Prometheus, with business intelligence in Grafana and alert escalation in our internal Discourse instance and opsgenie. We have logster which we use for web application aka. "Rails / Sidekiq" warnings and errors. I would like to focus on logster and our Rails / Sidekiq portion for this blog post, but think it is worth mentioning other mechanisms cause I don't want people to think we are not good data hoarders and only have very limited visibility into our systems. About Logster At Discourse we developed a log viewer called logster. Logster is a free and open source tool you can embed into any Ruby on Rails or Rack application in production and development. It runs as Rack middleware and uses Redis as its backend for log storage and analysis. It operates in

## Debugging 100% CPU usage in production Ruby on Rails systems

DevFeed: [Debugging 100% CPU usage in production Ruby on Rails systems](<https://devfeed.tech/articles/debugging-100-cpu-usage-in-production-ruby-on-rails-systems-41343.md>)

Original publisher: [Read original article](<https://samsaffron.com/archive/2018/01/18/my-production-ruby-on-rails-cpu-is-at-100-now-what>)

Author: Sam Saffron

Published: 2018-01-18T02:24:25Z

Content type: tutorial

Language: en

Sources: [Sam Saffron](<https://devfeed.tech/sources/sam-saffron.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [debug](<https://devfeed.tech/topics/debug.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [debugging](<https://devfeed.tech/tags/debugging.md>), [performance](<https://devfeed.tech/tags/performance.md>), [production](<https://devfeed.tech/tags/production.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [sidekiq](<https://devfeed.tech/tags/sidekiq.md>)

### AI overview

This article explains how to investigate 100% CPU usage in a production Ruby on Rails system. It demonstrates using rbtrace and stackprof with Sidekiq to capture CPU profiles, identify the code consuming the processor, and analyze the resulting performance data. The reported culprit is a regular expression in Typography.to_html_french.

### Source excerpt

Today I noticed one of our customer containers was running really high on CPU. # top -bn1 190 discour+ 20 0 2266292 205128 15656 S 86.7 0.3 9377:35 ruby # ps aux discour+ 190 19.4 0.3 2266292 207096 ? Sl 2017 9364:38 sidekiq 5.0.5 discourse [1 of 5 busy] Looks like sidekiq is stuck on a job. Where is it stuck? Usually, this is where the story ends and another series of questions start Can we reproduce this on staging or development? What code changed recently? Why is perf trace not giving me anything I can work with? How awesome is my Sidekiq logging? Where is my divining rod? Julia Evans is working on a fantastic profiler that will allow us to answer this kind of question real quick. But in the meantime, is there anything we can do? rbtrace + stackprof At Discourse we include rbtrace and stackprof in our Gemfile. gem 'rbtrace' gem 'stackprof', require: false We always load up rbtrace in production, it allows us a large variety of production level debugging. stackprof is loaded on-demand. In this particular case I simply run: # rbtrace -p 190 -e 'Thread.new{ require "stackprof"; StackProf.start(mode: :cpu); sleep 2; StackProf.stop; StackProf.results("/tmp/perf"); }' This injects a new thread that enables stackprof globally and finally writes the performance data to /tmp/perf This dump can easily be analyzed: # stackprof /tmp/perf ================================== Mode: cpu(1000) Samples: 475 (0.63% miss rate) GC: 0 (0.00%) ================================== TOTAL (pct) SAMPLES (pct) FRAME 473 (99.6%) 473 (99.6%) #<Class:0x00007fac08218020>::Typography.to_html_french 4 (0.8%) 1 (0.2%) #<Module:0x00007fac080c3620>.reap_connections In fact, we can even collect backtraces and generate flamegraphs in stackprof, so I strongly recommend reading through the readme. So there you have it, my culprit is: text.gsub(/(\s|)+([!?;]+(\s|\z))/, '&thinsp;\2\3') A regular expression consuming 100% CPU in production, this has got to be a first

## How To Get A Computer Science Degree in a Warzone

DevFeed: [How To Get A Computer Science Degree in a Warzone](<https://devfeed.tech/articles/how-to-get-a-computer-science-degree-in-a-warzone-40604.md>)

Original publisher: [Read original article](<https://www.nateberkopec.com/blog/how-to-get-a-computer-science-degree-in-a-warzone/>)

Published: 2017-08-10T07:00:00Z

Content type: opinion

Language: en

Sources: [Nate Berkopec](<https://devfeed.tech/sources/nate-berkopec.md>)

Topics: [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [computer-science](<https://devfeed.tech/tags/computer-science.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

This personal account follows Mohammed, a Syrian computer science student at the University of Aleppo who corresponded with the author about Ruby and open-source projects while living through the Syrian Civil War. After fleeing Syria for Turkey, Mohammed shares his story and the challenges of continuing his education and interests during war.

### Source excerpt

In June of 2016, I received an email: The original email Dear sir: I'm from Syria , expected to graduate this semester (Computer Science) , and as you sir my role model in Ruby also Rails , I need some advice about open source projects in Ruby to learn from. Thanks in advance and sorry if I waste your time Actually, he wasn't just in Syria. He was at the University of Aleppo. His name was Mohammed. Russian drone footage of Aleppo in February 2016. Mohammed: 'The damage now is much much bigger than this video.' Youtube At this point, the Syrian Civil War had been raging in Aleppo for almost four years. One tenth of the total deaths of the war so far have happened in Aleppo. When Mohammed wrote this email in 2016, the tide was just starting to turn in favor of Assad's forces. You would be forgiven if, like me, you thought that life did not go on inside of a warzone, especially in a city where entire city blocks had been leveled to dust. But, it does - although life is hard, life goes on. Aftermath of the 2013 Aleppo University bombing. Mohammed: 'When I saw the photo of the University bombing in the post I saw everything: I saw who did it, how he did it, the bodies, legs, arms, blood, glass, melted metal, I was there. My heart beat is getting faster and the inhales and exhales is disturbing my body better to close this thing.' NYTimes The veil of ignorance had been stripped away. Here was someone my age, on the other side of the world, with the same interests as I do, but living in an actual warzone. He played video games with his friends, like I do, enjoyed programming in Ruby on Rails, like I do, but his university was being bombed. Mohammed and I continued corresponding. He never asked for anything except advice, and that was all I gave (or really, could give). In January of this year, Mohammed fled Syria and made it to Turkey, where he is officially a Syrian refugee. Mohammed with his public key fingerprint. We both signed this post, see the end. Keybase I'll turn

## Connecting to Snowflake with Ruby on Rails

DevFeed: [Connecting to Snowflake with Ruby on Rails](<https://devfeed.tech/articles/connecting-to-snowflake-with-ruby-on-rails-28624.md>)

Original publisher: [Read original article](<https://eng.localytics.com/connecting-to-snowflake-with-ruby-on-rails/>)

Author: Kevin Deisz

Published: 2017-06-09T14:53:09Z

Content type: tutorial

Language: en

Sources: [Localytics](<https://devfeed.tech/sources/localytics.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [API](<https://devfeed.tech/topics/api.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [activerecord](<https://devfeed.tech/tags/activerecord.md>), [adapter](<https://devfeed.tech/tags/adapter.md>), [api](<https://devfeed.tech/tags/api.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [data](<https://devfeed.tech/tags/data.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [snowflake](<https://devfeed.tech/tags/snowflake.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A tutorial on connecting a Ruby on Rails API to the Snowflake data warehouse using unixODBC, Snowflake's ODBC driver, and an ActiveRecord adapter. It explains ODBC, DSN configuration, installation, and debugging.

### Source excerpt

At Localytics, one of the tools we use for data processing is the Snowflake data warehouse. We connect to Snowflake in a couple different ways, but our main data retrieval application is a Ruby on Rails API. To accomplish this we use a combination of unixODBC (an open-source implementation

## How I Made $220,033.50 Self-Publishing a Book About Ruby on Rails

DevFeed: [How I Made $220,033.50 Self-Publishing a Book About Ruby on Rails](<https://devfeed.tech/articles/how-i-made-220-033-50-self-publishing-a-book-about-ruby-on-rails-40603.md>)

Original publisher: [Read original article](<https://www.nateberkopec.com/blog/how-i-made-self-publishing-about-ruby-on-rails/>)

Published: 2017-03-10T07:00:00Z

Content type: article

Language: en

Sources: [Nate Berkopec](<https://devfeed.tech/sources/nate-berkopec.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Publishing](<https://devfeed.tech/topics/publishing.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [developers](<https://devfeed.tech/tags/developers.md>), [freelance-career](<https://devfeed.tech/tags/freelance-career.md>), [publishing](<https://devfeed.tech/tags/publishing.md>), [rails](<https://devfeed.tech/tags/rails.md>), [revenue](<https://devfeed.tech/tags/revenue.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

A step-by-step account of creating and self-publishing The Complete Guide to Rails Performance, which the author says sold just over 1,800 copies and generated $220,033.50 in gross revenue. The article also describes how the product affected his freelancing career and lifestyle.

### Source excerpt

Did I mention how awesome it is to live 30 minutes from a ski lift? In March of 2016, I launched a course called The Complete Guide to Rails Performance. Since then, I have distributed just over 1800 copies, for a gross revenue of $220,033.50 (about $1000/week). Although I launched the course in March, I had worked on it for about 4 months. Releasing the course has been a lifechanging event for me. For the first time ever, I made more money over a year from product revenue rather than service revenue. Releasing the course nearly doubled my usual freelancing rate, allowed me to change my lifestyle by moving to a ski resort town in New Mexico, and turned me into something of a minor Thought Leader (tm) in the Ruby on Rails field. In this post, I'd like to share my process for creating The Complete Guide to Rails Performance (henceforth "the CGRP"), what I'd do differently in the future, and how creating a programming information product radically changed my freelance career. It would be immensely helpful to me if other programming authors (self-published or not) would email me to share their own experiences and results. I'm not sure if I'm an outlier or just the average case! The Path to Making Money While You Sleep I ain't programmin' here no mo'! I was on the first season of ABC's Shark Tank when I was only 18 years old. I think "product money" is the eventual goal for nearly all freelancers or solopreneurs. There's probably a lot of developers sitting on the sidelines too wishing they could tell their boss to take this scrum and shove it. And, now that I've made some product money, I can tell you it is pretty awesome. Waking up with more money than you went to bed with is a very, very good feeling. I've been trying to "start a business" since 2008 (you may know me from my appearance on ABC's reality show Shark Tank in 2009). It's always been a struggle for me to find the magical intersection in the theoretical Venn diagram of my interests/skills and what people wil

## ODBC and writing your own ActiveRecord adapter

DevFeed: [ODBC and writing your own ActiveRecord adapter](<https://devfeed.tech/articles/odbc-and-writing-your-own-activerecord-adapter-28630.md>)

Original publisher: [Read original article](<https://eng.localytics.com/odbc-and-writing-your-own-activerecord-adapter/>)

Author: Kevin Deisz

Published: 2017-03-07T22:08:02Z

Content type: article

Language: en

Sources: [Localytics](<https://devfeed.tech/sources/localytics.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [activerecord](<https://devfeed.tech/tags/activerecord.md>), [api](<https://devfeed.tech/tags/api.md>), [database](<https://devfeed.tech/tags/database.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

The article describes Localytics' open-source ODBC adapter for ActiveRecord, enabling Ruby on Rails applications to communicate with ODBC-compliant databases. It explains the adapter's role in a Rails API upgrade and recounts its development from an older fork, including support for multiple Rails branches and database environments. The supplied text ends before the account is complete.

### Source excerpt

Today we are open-sourcing our ODBC adapter for ActiveRecord, which allows Ruby on Rails applications to communicate with ODBC-compliant databases. The impetus for this work was an effort to update one of our APIs to run with the latest Rails and ruby. Along the way we released Rails

## Ruby on Rails Helpers: h, j, l and t

DevFeed: [Ruby on Rails Helpers: h, j, l and t](<https://devfeed.tech/articles/ruby-on-rails-helpers-h-j-l-and-t-20061.md>)

Original publisher: [Read original article](<http://jollygoodcode.com/blog/2015/07/23/ruby-on-rails-helpers-h-j-l-and-t.html>)

Published: 2015-07-23T03:26:04Z

Content type: tutorial

Language: en

Sources: [Jolly Good Code](<https://devfeed.tech/sources/jolly-good-code.md>)

Topics: [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>)

Tags: [rails](<https://devfeed.tech/tags/rails.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

This article explains four one-character Ruby on Rails helpers--h, j, l, and t--and highlights their simplicity and expressiveness for experienced developers.

### Source excerpt

There are four one-char Rails helpers that seasoned developers use all the time for their simplicity and expressiveness.

## Hosting different kinds of apps on nginx

DevFeed: [Hosting different kinds of apps on nginx](<https://devfeed.tech/articles/hosting-different-kinds-of-apps-on-nginx-21772.md>)

Original publisher: [Read original article](<https://enoent.fr/posts/hosting-different-kinds-of-apps-on-nginx/>)

Author: Marc Plano-Lesay

Published: 2014-10-15T08:55:00Z

Content type: tutorial

Language: en

Sources: [Marc Plano-Lesay](<https://devfeed.tech/sources/marc-plano-lesay.md>)

Topics: [nginx](<https://devfeed.tech/topics/nginx.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Ruby on Rails](<https://devfeed.tech/topics/ruby-on-rails.md>), [SSL](<https://devfeed.tech/topics/ssl.md>), [Arch Linux](<https://devfeed.tech/topics/archlinux.md>)

Tags: [hosting](<https://devfeed.tech/tags/hosting.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [php](<https://devfeed.tech/tags/php.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [ssl](<https://devfeed.tech/tags/ssl.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

A tutorial on configuring Nginx to host static HTML pages, PHP applications, Ruby on Rails or other Rack-based applications, and proxied web servers. It describes virtual-host organization and optional or required HTTPS behavior.

### Source excerpt

Engine what? Nginx (engine-x) is a web server and reverse proxy for web and mail protocols (HTTP, HTTPS, SMTP, POP3 and IMAP). It has been first released in 2004, and its usage keeps growing ever since (according to Netcraft, it was hosting 14.47% of active sites in August 2014). It's capable of hosting many kinds of applications: static HTML pages PHP, using PHP-FPM Ruby on Rails and any kind of Rack-based Ruby application, using Phusion Passenger proxying requests to another webserver (e.g. a software launching its own web server, like Kodi)

[Next page](<https://devfeed.tech/topics/ruby-on-rails.md?cursor=WyIyMDE0LTEwLTE1VDA4OjU1OjAwKzAwOjAwIiwgIjAxNWE4Yjg1LTJhMGQtNDcwZC1hMDc1LTk2OWZmMjgzNjNjYiJd>)