I know it’s only partly an issue of Rails but I wish for a documentation and convention regarding the use of Docker and docker-compose. Every project has an ever slightly different setup for this. I really love it when I reach a new Rails project, run a docker-compose up and it installs and runs everything needed. All is there, rails, postgres, redis, memcached, mysql, sidekiq, sqlite3, clockwork, rspec, rubocop, bundle-audit, all the new yarn webpacker nodejs stuff (which I barely can follow), everything. To do it on my own is usually already quite complicated. Then I need to start to pass down ENV variables into everything. Which ones do I need, which ones does rails use? Then hell freezes up, when I try to create the docker images for production too and need to set (or not) various environment variables for production. Suddenly I also need asset compilation, db migrations and more. Also for me, docker was the only way to tame the javascript webpacker monster across multiple environments and OS. It is really a pain to setup your OS for a new rails project and docker was the best thing for me since a while.
There are just to many ways to do all of this and I wish for a sane default. I do not want prebuild docker images, since the combination possibilities are to big. (It’s probably the reason why there is no rails image available). I wish for some nicely prepared and thoroughly commented docker and docker-compose files to get most apps running in development, test and production.
Also, code reloading seems to break regularly in docker. This seems to be a docker issue.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
# => fix it with
config.file_watcher = ActiveSupport::FileUpdateChecker
And for the beginners, my current favorite way to onboard people on rails is docker. The development setup is just too complicated already.
(edit) Where is the WTF? The WTF is, that I can’t seem to be able to get this homogeneous across all the projects I touch.