capistrano-local-precompile icon indicating copy to clipboard operation
capistrano-local-precompile copied to clipboard

rake failed when server and local use different rvm path

Open xiaohui-zhangxh opened this issue 5 years ago • 4 comments

On my server, it uses system-wide rvm, however on my mac it's user-wide. Gem capistrano-rvm will append rvm prefix to rake, then local assets precompile will get failed.

This is my solution:

namespace :load do
  task :defaults do
    before "deploy:assets:prepare", "remove_rvm_prefix"
    after "deploy:assets:prepare", "restore_rvm_prefix"
  end
end

task "remove_rvm_prefix" do
  i = SSHKit.config.command_map.prefix[:rake].index { |x| x =~ /rvm/ }
  $removed_rvm_prefix = [i, SSHKit.config.command_map.prefix[:rake].delete_at(i)] if i
end

task "restore_rvm_prefix" do
  if $removed_rvm_prefix
    SSHKit.config.command_map.prefix[:rake].insert(*$removed_rvm_prefix)
  end
end

xiaohui-zhangxh avatar Mar 27 '19 07:03 xiaohui-zhangxh

Thanks @xiaohui-zhangxh this did the trick! Maybe this can be added to the readme?

mlabarca avatar Apr 18 '19 01:04 mlabarca

Had the same issue. Applied your fix, now I have

LoadError: cannot load such file -- uglifier /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in block in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in load_dependency' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/sprockets-3.7.2/lib/sprockets/autoload/uglifier.rb:1:in `

'

dncastilho avatar May 17 '19 02:05 dncastilho

xiaohui's solution was giving me an error about modifying load:defaults after it had run, so I changed it to the below and that worked for me

namespace :load do
  before "deploy:assets:prepare", "remove_rvm_prefix"
  after "deploy:assets:prepare", "restore_rvm_prefix"
end

JSRossiter avatar May 19 '19 18:05 JSRossiter

Had the same issue. Applied your fix, now I have

LoadError: cannot load such file -- uglifier /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in block in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in load_dependency' /home/developer/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in require' /home/developer/.rvm/gems/ruby-2.6.3/gems/sprockets-3.7.2/lib/sprockets/autoload/uglifier.rb:1:in `

'

@dncastilho, move uglifier gem outside the assets group.

willianveiga avatar May 22 '19 09:05 willianveiga