Yeah, put those hostnames (or a wildcard subdomain) as the site address in your Caddyfile. It may be long, but that’s okay. Caddy can serve tens of thousands of sites (or more) per instance.
Depends. If they’re subdomains, not necessarily (wildcards). Second-level domains, probably (you can but don’t want to use *.com, for example).
*.example.com {
proxy / 127.0.0.1:9000 # or whatever your rails backend is
}