Terraforming Rails

Based on the RailsConf 2019 talk “Terraforming legacy Rails applications” (slides, video).

Tools

Unreleased scripts

These scripts have been created during the development of different Rails projects at Evil Martians.

They’re not universal enough to be extracted into libraries (some depend on particular Rails version or rely on project-specific assumptions), but they could be used a starting point for building tools for your project.

  • Lint/Env: RuboCop cop (restrict the usage of ENV and Rails.env in the app)
  • FactoryLinter: lint factory definitions
  • TimecopLinter: make sure you always travel back in time when using Timecop
  • TemplatesTracker: track unused templates
  • GemTracker: track potentially unused gems.

Gems

Tests

  • TestProf: analyze and improve test suite performance

Security

Database

Dead code elimination

Configuration

  • anyway_config: transparently use multiple sources of configuration at once

Analysis

Automation Tools

  • lefthook: language-agnostic git hook manager
  • danger: code review automation helper
  • pronto: linters runner to run checks only for the relevant changes

Examples

  • CircleCI: example CircleCI configuration files
  • Docker for Dev: example Docker for development configuration
  • Lefthook + Crystalball: Git hooks for convenient development environment

Resources/Guides

  • Fight the flaky tests
Author

Further reading

In the same orbit

Explore more open source projects

Let's solve your hard problems

Martians at a glance
18
years in business

We're experts at helping developer products grow, with a proven track record in UI design, product iterations, cost-effective scaling, and much more. We'll lay out a strategy before our engineers and designers leap into action.

If you prefer email, write to us at surrender@evilmartians.com