Capistrano 在预编译资产时找不到操作文本 css 文件

问题描述 投票:0回答:1

我正在使用 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
时,操作文本工作正常。如何修复此错误并正确编译我的资源?

ruby-on-rails yarnpkg capistrano actiontext
1个回答
2
投票

这发生在我身上,这就是幕后发生的事情。 升级到 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 的预期行为。

© www.soinside.com 2019 - 2024. All rights reserved.