2017-06-02 95 views
2

我有一個項目,我最近從rails 5.0遷移到rails 5.1之前,我有webpacker安裝,我用capistrano在rails 5.0中部署它,一切正常,但是當我做了改變現在capistrano無法完成資產:預編譯任務,我得到這個錯誤:Webpacker,Yarn和capistrano,[email protected]錯誤

** DEPLOY FAILED **詳情請參閱log/capistrano.log。以下是最後20行: ..... DEBUG [04ae7a64]命令:cd/home/deploy/my-site/releases/20170602233846 & &(export RAILS_ENV =「staging」;〜/ .rvm/bin/RVM默認捆綁做高管耙資產:預編譯)

DEBUG [04ae7a64]紗安裝v0.24.5

DEBUG [04ae7a64] [1/4]解析包...

DEBUG [04ae7a64] [ 2/4]提取包...

DEBUG [04ae7a64] warning [email protected]:平臺「linux」與此模塊不兼容。

DEBUG [04ae7a64] info「[email protected]」是一個可選的依賴項和失敗的兼容性檢查。從安裝中排除它。

DEBUG [04ae7a64] [3/4]鏈接的依賴......

DEBUG [04ae7a64] [4/4]建立新的包......

調試完成在9.29s [04ae7a64。

我使用本地計算機與Ubuntu和Ubuntu也安裝在服務器中。

我不知道[email protected]作爲依賴項需要在哪裏,但我無法在2天前進行部署,但我還沒有找到解決方案。

回答

2

編輯:我想我的原始Webpacker安裝肯定出錯了。使用webpacker的主分支並重新運行bundle exec rake webpacker:install已修復此問題。


原來的答案: 我遇到同樣的錯誤今天就來了。我認爲./bin/yarn install --no-progress這是Rails rake任務自然運行的內容,必須返回一個非零的退出代碼。

首先,我嘗試覆蓋yarn:install rake任務添加--ignore-optional但這不起作用。

我已經得到了我的部署通過添加含rake任務lib/tasks/yarn.rake成功:

namespace :yarn do 
    desc "Install all JavaScript dependencies as specified via Yarn" 
    task :install do 
    puts "Ignoring yarn install failure" 

    begin 
     system "./bin/yarn install --no-progress --ignore-optional; true" 
    rescue 
     exit(true) 
    end 

    exit(true) 
    end 
end 

task(:default).clear.enhance(['yarn:install']) 

# Run Yarn prior to Sprockets assets precompilation, so dependencies are available for use. 
if Rake::Task.task_defined?("assets:precompile") 
    Rake::Task["assets:precompile"].enhance [ "yarn:install" ] 
end 

這取代了Rails的默認安裝紗rake任務到幾乎任何保證誤差沒有被抓到Capistrano的。這不是一個好的解決方案,但至少它可以使部署成功。希望合理的紗線安裝錯誤會在資產構建後期導致另一個錯誤。

相關問題