Running into render build error related to Tailwind
Following along with the Build a Blog lesson and currently trying to deploy on render. I can't seem to pass the below error during build - has anyone else seen this before? Locally tailwind is working as expected and I believe I have everything installed correctly.
My application.html.erb file has the following tag:
<%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
Confirmed that app > assets > stylehseets contains an application.tailwind.css file.
Build error:
I, [2025-01-05T15:51:50.961531 #134] INFO -- : [ad1d71de-b3b8-4d04-8bc1-14936e44d1f2] Rendered layout layouts/application.html.erb (Duration: 100.0ms | Allocations: 2485)
info
I, [2025-01-05T15:51:50.961929 #134] INFO -- : [ad1d71de-b3b8-4d04-8bc1-14936e44d1f2] Completed 500 Internal Server Error in 200ms (ActiveRecord: 1.0ms | Allocations: 3948)
critical
F, [2025-01-05T15:51:50.963210 #134] FATAL -- : [ad1d71de-b3b8-4d04-8bc1-14936e44d1f2]
error
[ad1d71de-b3b8-4d04-8bc1-14936e44d1f2] ActionView::Template::Error (The asset "tailwind.css" is not present in the asset pipeline.
Did the assets:precompile
step get run during deploy? That is what should compile the CSS file for production.
Yes - that step was included as a part of my build command on render.
I finally was able to get the build to succeed - the fix was to downgrade Tailwind from v3.1 to v2.0. I compared my repo to the learning-path-blog repo and noticed the version difference which did in fact fix the build.
No, nothing that specifically shouts out 3.1. Below is the error right from the log:
I, [2025-01-05T18:31:30.913718 #128] INFO -- : [827e9eb0-3ee5-42d7-adc0-f898636a047b] Rendered layout layouts/application.html.erb (Duration: 22.6ms | Allocations: 2472)
info
I, [2025-01-05T18:31:30.914011 #128] INFO -- : [827e9eb0-3ee5-42d7-adc0-f898636a047b] Completed 500 Internal Server Error in 207ms (ActiveRecord: 2.9ms | Allocations: 3984)
critical
F, [2025-01-05T18:31:30.991453 #128] FATAL -- : [827e9eb0-3ee5-42d7-adc0-f898636a047b]
error
[827e9eb0-3ee5-42d7-adc0-f898636a047b] ActionView::Template::Error (The asset "tailwind.css" is not present in the asset pipeline.
info
):
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 5: <meta name="viewport" content="width=device-width,initial-scale=1">
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 6: <%= csrf_meta_tags %>
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 7: <%= csp_meta_tag %>
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 8: <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 9: </head>
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 10:
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] 11: <body class="prose mx-auto">
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b]
info
[827e9eb0-3ee5-42d7-adc0-f898636a047b] app/views/layouts/application.html.erb:8:in '_app_views_layouts_application_html_erb___4412628334483315181_9600'
info
==> Your service is live 🎉
info
I, [2025-01-05T18:31:36.925255 #128] INFO -- : [2b98022a-3edb-472d-9344-0fd29a0c1b79] Started GET "/" for 172.68.174.94 at 2025-01-05 18:31:36 +0000
info
I, [2025-01-05T18:31:36.926286 #128] INFO -- : [2b98022a-3edb-472d-9344-0fd29a0c1b79] Processing by ExpensesController#index as HTML
info
I, [2025-01-05T18:31:36.928432 #128] INFO -- : [2b98022a-3edb-472d-9344-0fd29a0c1b79] Rendered expenses/index.html.erb within layouts/application (Duration: 0.6ms | Allocations: 68)
info
I, [2025-01-05T18:31:36.930400 #128] INFO -- : [2b98022a-3edb-472d-9344-0fd29a0c1b79] Rendered layout layouts/application.html.erb (Duration: 2.6ms | Allocations: 545)
info
I, [2025-01-05T18:31:36.930561 #128] INFO -- : [2b98022a-3edb-472d-9344-0fd29a0c1b79] Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.1ms | Allocations: 729)```
I should have clarified, specifically the deployment logs. It should show tailwindcss compiling the file at some point.
With tailwindcss-rails v3 and tailwindcss-ruby v4, I see this when it runs assets:precompile
≈ tailwindcss v4.0.0-beta.8
Done in 150ms
One culprit here might be that tailwindcss-rails v3 now depends upon tailwindcss-ruby which lets you use multiple different versions of TailwindCSS with the rails integration. It will default to the latest version for tailwindcss-rails v3, but tailwindcss-rails v2 does not use tailwindcss-ruby and will specifically use TailwindCSS v3.
Pretty confusing, but that's likely where the issue stems from.
Deciphering these logs is still pretty new to me but this may help:
Log data from successful build using tailwind v2.0:
==> Cloning from https://github.com/aburg15/expense-tracker-test
==> Checking out commit a79ce4931535febfb78710613b06ab2bdf0537bf in branch main
==> Downloading cache...
==> Transferred 114MB in 8s. Extraction took 2s.
==> Using Ruby version 3.4.1 via /opt/render/project/src/Gemfile.lock
==> Docs on specifying a Ruby version: https://render.com/docs/ruby-version
==> Running build command 'bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean; bundle exec rails db:migrate; bundle exec rails db:seed'...
Fetching gem metadata from https://rubygems.org/.........
Fetching nokogiri 1.18.1 (x86_64-linux-gnu)
Installing nokogiri 1.18.1 (x86_64-linux-gnu)
Fetching tailwindcss-rails 2.7.9 (x86_64-linux)
Installing tailwindcss-rails 2.7.9 (x86_64-linux)
Bundle complete! 21 Gemfile dependencies, 67 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Bundled gems are installed into `/opt/render/project/.gems`
Log data from failed build using tailwind v3.1
==> Cloning from https://github.com/aburg15/expense-tracker-test
==> Checking out commit c5c3c4e647facf3d5aa8d7b1993085e702b0601c in branch main
==> Downloading cache...
==> Transferred 114MB in 7s. Extraction took 2s.
==> Using Ruby version 3.4.1 via /opt/render/project/src/Gemfile.lock
==> Docs on specifying a Ruby version: https://render.com/docs/ruby-version
==> Running build command 'bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean; bundle exec rails db:migrate; bundle exec rails db:seed'...
Bundle complete! 21 Gemfile dependencies, 68 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Bundled gems are installed into `/opt/render/project/.gems`
rake aborted!
Tailwindcss::Ruby::ExecutableNotFoundException: Cannot find the tailwindcss executable for x86_64-linux in /opt/render/project/.gems/ruby/3.4.0/gems/tailwindcss-ruby-3.4.17/exe (Tailwindcss::Ruby::ExecutableNotFoundException)
Ah, that last line there.
Might have to run "bundle lock --add-platform x86_64-linux" in order to get the correct precompiled version of the gem for Linux.
Should that have been run as a render pipeline build command or as a local command? My gemfile.lock contains that particular platform
PLATFORMS
ruby
x86_64-darwin-24
x86_64-linux