0.0
No release in over 3 years
Automatic Caddy config for Rails development.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 7.1.0, < 9.0
 Project Readme

RailsCaddyDev

Automatically configures Caddy as a local reverse proxy for Rails development. When you start rails server, it registers routes via the Caddy admin API so that <project_name>.localhost proxies to your locally running Rails server with HTTPS.

Prerequisites

  • Caddy installed and running locally
  • Ruby >= 3.1

Installation

Add it to your application's Gemfile:

gem 'rails_caddy_dev', group: :development

Then run:

bundle install

Setup

In your application's bin/rails file, replace this:

require "rails/commands"

with this:

require ENV.key?('DEVCADDY') ? "rails_caddy_dev/commands" : "rails/commands"

This will ensure your Caddy configuration is updated each time you start your Rails server in development.

Usage

Start your Rails server with the DEVCADDY and PROJECT_NAME environment variables:

DEVCADDY=1 PROJECT_NAME=myapp rails server

This will configure Caddy to proxy myapp.localhost to your Rails server, accessible over HTTPS.

Environment Variables

Variable Description Default
DEVCADDY Enables Caddy configuration (must be set)
PROJECT_NAME Used to derive the .localhost hostname (required)
PORT Rails server port to proxy to Auto-detected available port (falls back to 3000)
CADDY_HOST Caddy admin API host localhost
CADDY_PORT Caddy admin API port 2019

Dynamic Port Allocation

If PORT is not set, the gem automatically detects an available TCP port and uses it. This means you can run multiple Rails servers without port conflicts — no manual configuration needed.

You can also use the standalone executable to find an available port yourself:

export PORT=$(bundle exec rails_caddy_dev port)

Subdomains

Subdomains are also supported due to a wildcard Caddy route that will be configured. For example, if you set PROJECT_NAME=myapp, then api.myapp.localhost will also proxy to your Rails server.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bundle exec rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/joelmoss/rails_caddy_dev.

License

The gem is available as open source under the terms of the MIT License.