2017-06-02 8 views
2

J'ai un projet que j'ai récemment migré des rails 5.0 vers les rails 5.1, avant cela j'ai installé webpacker et je l'ai déployé avec capistrano, dans les rails 5.0 tout fonctionnait, mais quand je l'ai fait le changement maintenant Capistrano est incapable de terminer les actifs: la tâche precompile et je reçois cette erreur:Webpacker, Yarn et capistrano, erreur [email protected]

** DEPLOY ECHEC ** Voir log/capistrano.log pour plus de détails. Voici les 20 dernières lignes: ..... DEBUG [04ae7a64] Commande: cd/home/deploy/mon-site/releases/20170602233846 & & (export RAILS_ENV = "staging"; ~/.rvm/bin/par défaut RVM ne liez actifs râteau exec: précompiler)

DEBUG [04ae7a64] fils installer v0.24.5

DEBUG [04ae7a64] [1/4] Résolution des paquets ...

DEBUG [04ae7a64] [ 2/4] Récupération de paquets ...

DEBUG [04ae7a64] warning [email protected]: La plateforme "linux" est incompatible avec ce module.

DEBUG [04ae7a64] info "[email protected]" est une dépendance facultative et une vérification de compatibilité échouée. À l'exclusion de l'installation.

DEBUG [04ae7a64] [3/4] Lier les dépendances ...

DEBUG [04ae7a64] [4/4] Construire des paquets frais ...

DEBUG [04ae7a64] Fait en 9.29s. J'utilise un ordinateur local avec ubuntu et ubuntu est également installé dans le serveur.

Je ne sais pas où [email protected] est requis en tant que dépendance, mais je n'ai pas activé le déploiement depuis 2 jours et je n'ai pas trouvé de solution.

Répondre

2

EDIT: Je pense que mon installation initiale de Webpacker a dû mal tourner. L'utilisation de la branche principale de webpacker et la réexécution bundle exec rake webpacker:install a résolu ce problème.


Réponse d'origine: Je suis tombé sur cette même erreur aujourd'hui. Je pense que ./bin/yarn install --no-progress qui est ce que la tâche Rake râteau exécute naturellement, doit renvoyer un code de sortie différent de zéro.

Tout d'abord, j'ai essayé de remplacer la tâche râteau yarn:install pour ajouter --ignore-optional mais cela n'a pas fonctionné.

J'ai mon déploiement pour réussir en ajoutant la tâche de râteau lib/tasks/yarn.rake contenant:

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 

Cela remplace le fil par défaut de Rails tâche d'installation de coupe à peu assurer beaucoup d'erreurs ne sont pas pris par Capistrano. Ce n'est pas une bonne solution, mais au moins, il obtient le déploiement pour réussir. Espérons qu'une erreur d'installation de fil légitime conduirait à une autre erreur plus tard dans la construction des actifs.