我正在使用 capistrano 部署 Rails 7.0.4.3 应用程序。当我跑步时
cap production deploy
服务在这一步停止:
deploy:assets:precompile 01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
产生此错误
01 rake aborted!
01 Sprockets::FileNotFound: couldn't find file 'trix/dist/trix' with type 'text/css'
01 Checked in these paths:
01 /home/deploy/dynamic_performance/releases/20230530181802/app/assets/config
01 /home/deploy/dynamic_performance/releases/20230530181802/app/assets/images
01 /home/deploy/dynamic_performance/releases/20230530181802/app/assets/stylesheets
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/tailwindcss-rails-0.3.3/app/assets/fonts
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/tailwindcss-rails-0.3.3/app/assets/stylesheets
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/actiontext-7.0.4.3/app/assets/javascripts
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/actiontext-7.0.4.3/app/assets/stylesheets
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/actioncable-7.0.4.3/app/assets/javascripts
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/activestorage-7.0.4.3/app/assets/javascripts
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/actionview-7.0.4.3/lib/assets/compiled
01 /home/deploy/dynamic_performance/shared/bundle/ruby/3.2.0/gems/turbolinks-source-5.2.0/lib/assets/javascripts
.... truncated for brevity
我读过其他帖子,说运行
yarn install --check-files
和 rails action_text:install
但这没有帮助。当我在本地运行 rails s
时,操作文本工作正常。如何修复此错误并正确编译我的资源?
这发生在我身上,这就是幕后发生的事情。 升级到 Rails 7.0 后,任务
rake assets:precompile
不执行 yarn install
。这就是为什么 Sprockets 在 node_modules
文件夹中找不到依赖项。您可以使用以下代码解决此问题。
before "deploy:assets:precompile", "deploy:yarn_install"
namespace :deploy do
desc "Run rake yarn install"
task :yarn_install do
on roles(:web) do
within release_path do
execute("cd #{release_path} && yarn install --silent --no-progress --no-audit --no-optional")
end
end
end
end
我猜这是 Rails 7 的预期行为。