rails / webpacker

Use Webpack to manage app-like JavaScript modules in Rails
MIT License
5.31k stars 1.47k forks source link

deployment failed at assets:precompile using capistrano gem #3254

Closed NehaPeer closed 2 years ago

NehaPeer commented 2 years ago

Hello

We are using ruby 2.7.3 and Rails 6.1.3.2 while deploying the application using Capistrano gem it throws below error -

INFO [4158d929] Running ~/.rvm/bin/rvm ruby-2.7.3@app-6 do bundle exec rake assets:precompile on carbonite DEBUG [4158d929] Command: cd /export/app/app_production/releases/20220103125501 && ( export RAILS_ENV="production" RAILS_GROUPS="" ; ~/.rvm/bin/rvm ruby-2.7.3@app-6 do bundle exec rake assets:precompile ) DEBUG [4158d929] Yarn executable was not detected in the system Download Yarn at https://yarnpkg.com/en/docs/install DEBUG [4158d929] Yarn executable was not detected in the system Download Yarn at https://yarnpkg.com/en/docs/install DEBUG [4158d929] /export/app/app_production/shared/bundle/ruby/2.7.0/gems/sassc-2.4.0/lib/sassc/engine.rb:43: [BUG] Segmentation fault at 0x0000000000000000

Here are the versions of yarn, node, and npm on server:

yarn -v 1.22.17
npm -v 6.14.15
node -v v14.18.2

Even yarn is installed globally.

yarn global list
yarn global v1.22.17
Done in 0.05s.
guillaumebriday commented 2 years ago

Did you setup your PATH correctly?

NehaPeer commented 2 years ago

Did you setup your PATH correctly?

How to set that PATH variable?

frullah commented 2 years ago

Hello, you can add directory of yarn executable into :default_env config in config/deploy.rb file. e.g:

# config/deploy.rb

...
set :default_env, {
  path: "$HOME/nodejs/bin:$PATH" # this will add "$HOME/nodejs/bin" into PATH environment variable during Capistrano command execution
}
...

You can read the docs here

NehaPeer commented 2 years ago

Hello,

On our deployment device, we have a yarn path as per below so we have added it into config/deploy.rb

Deployment device -

which yarn /export/app/.nvm/versions/node/v14.18.2/bin/yarn

Development device -

config/deploy.rb

set :default_env, { PATH: '$HOME/.nvm/versions/node/v14.18.2/bin/:$PATH' }

but it throws the same error -

/export/user/app/shared/bundle/ruby/2.7.0/gems/sassc-2.4.0/lib/sassc/engine.rb:43: [BUG] Segmentation fault at 0x0000000000000000

DEBUG [d123fc23] bash: line 1: 456266 Aborted (core dumped) ~/.rvm/bin/rvm ruby-2.7.3@app do bundle exec rake assets:precompile

frullah commented 2 years ago

I think the problem comes from sassc gem, i found the same error in https://github.com/sass/sassc-ruby/issues/197.

I found the workaround at https://github.com/sass/sassc-ruby/issues/197#issuecomment-735359755 by adding the code below into config/initializers/assets.rb

Rails.application.config.assets.configure do |env|
  env.export_concurrent = false
end
NehaPeer commented 2 years ago

@frullah Thank you so much above solution is work for me.

frullah commented 2 years ago

@NehaPeer It was my pleasure :)