RAILS_SERVE_STATIC_FILES=truein front of precompile, like so:
RAILS_SERVE_STATIC_FILES=true SECRET_KEY_BASE=dummyvalue rails assets:precompile --traceto prevent the error during precompilation when the application environment is not yet available
While converting an existing rails app from buildpack-based deployments to a docker-based approach, I ran into the following error:
No such middleware to insert before: ActionDispatch::Static
The error ocurred during the rails assets:precompile step while the container was being built. A google search of the error pointed in various directions with different resolution steps that finally did not directly resolve the error for me.
However, this comment points out that it depends on
config.public_file_server.enabled, which I configure through environment variables in the application (
That explain the issue: the problem lies in the fact that this config is part of the application environment, which is made available when running the app, which occurs only after the build has completed. So during the build step, this config was not yet available.
You can solve this by adding a build environment argument, or simply hard coding the variable into the command. I chose the latter as it is more explicit. So in my Dockerfile I simply added:
RUN RAILS_SERVE_STATIC_FILES=true SECRET_KEY_BASE=dummyvalue rails assets:precompile --trace