最近,我有一个项目从rails 5.0迁移到rails 5.1,在此之前,我安装了webpacker,并将其部署在capistrano中,在rails 5.0中,一切都在工作,但是当我进行更改时,capistrano无法完成资产:预编译任务,我得到了这个错误:
**部署失败**有关详细信息,请参阅log/capstrano.log。以下是最后20行:.调试04ae7a64命令: cd /home/deploy/my/releases/20170602233846&(导出RAILS_ENV=“暂存”;~/.rvm/bin/rvm默认的DEBUG资产:预编译)
调试04ae7a64纱安装v0.24.5
调试04ae7a64解析包..。
调试04ae7a64取包..。
调试04ae7a64警告fsevents@1.1.1:平台"linux“与此模块不兼容。
DEBUG 04ae7a64 info "fsevents@1.1.1“是一个可选的依赖项,并且兼容性检查失败。把它排除在安装之外。
调试04ae7a64链接依赖项..。
调试04ae7a64构建新包..。
调试04ae7a64,在9.29s内完成。
我使用的是一台带有ubuntu的本地计算机,在服务器中也安装了ubuntu。
我不知道哪里需要fsevents@1.1.1作为依赖项,但是从2天前开始我就无法进行部署了,而且我还没有找到解决方案。
发布于 2017-06-08 20:11:27
编辑:,我想我原来的Webpacker安装一定出了什么问题。使用webpacker的主分支并重新运行bundle exec rake webpacker:install已经解决了这个问题。
的原始答案:,我今天遇到了同样的错误。我认为Rails rake任务自然运行的./bin/yarn install --no-progress必须返回一个非零的退出代码。
首先,我试图重写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捕获。这不是一个好的解决方案,但至少它使部署成功。希望合法的纱线安装错误会导致资产构建中的另一个错误。
https://stackoverflow.com/questions/44338870
复制相似问题