【问题标题】:Travis CI Build Failure: The command "bundle exec rake" exited with 1Travis CI 构建失败:命令“bundle exec rake”以 1 退出
【发布时间】:2018-08-31 00:04:20
【问题描述】:

对 Travis CI 非常陌生。构建失败,The command "bundle exec rake" exited with 1.

构建是在我最新的更改之前通过的,其中涉及使用 Fileutils 写入 gem 目录,所以我假设这是罪魁祸首。

我找到了这个:https://stackoverflow.com/a/40643667/9526393 但仍然没有运气

有什么想法吗?

构建:https://travis-ci.org/AlphaDaniel/ruby_doc/builds/356485701?utm_source=github_status&utm_medium=notification

回购:https://github.com/AlphaDaniel/ruby_doc

    rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /home/travis/build/AlphaDaniel/ruby_doc/vendor/bundle/ruby/2.2.0/gems/ruby_doc-2.2.0/favs.txt
/home/travis/build/AlphaDaniel/ruby_doc/config/environment.rb:23:in `<top (required)>'
/home/travis/build/AlphaDaniel/ruby_doc/Rakefile:5:in `require_relative'
/home/travis/build/AlphaDaniel/ruby_doc/Rakefile:5:in `<top (required)>'
/home/travis/.rvm/rubies/ruby-2.2.3/bin/bundle:30:in `block in <main>'
/home/travis/.rvm/rubies/ruby-2.2.3/bin/bundle:22:in `<main>'
Errno::ENOENT: No such file or directory @ utime_internal - /home/travis/build/AlphaDaniel/ruby_doc/vendor/bundle/ruby/2.2.0/gems/ruby_doc-2.2.0/favs.txt
/home/travis/build/AlphaDaniel/ruby_doc/config/environment.rb:23:in `<top (required)>'
/home/travis/build/AlphaDaniel/ruby_doc/Rakefile:5:in `require_relative'
/home/travis/build/AlphaDaniel/ruby_doc/Rakefile:5:in `<top (required)>'
/home/travis/.rvm/rubies/ruby-2.2.3/bin/bundle:30:in `block in <main>'
/home/travis/.rvm/rubies/ruby-2.2.3/bin/bundle:22:in `<main>'
(See full trace by running task with --trace)

【问题讨论】:

    标签: ruby build rubygems rake travis-ci


    【解决方案1】:

    如果您阅读错误消息和堆栈跟踪,这里的问题会变得更加清楚。 Errno::ENOENT: No such file or directory 基本上意味着 Ruby 找不到特定的文件或目录,在你的情况下是 /home/travis/build/AlphaDaniel/ruby_doc/vendor/bundle/ruby/2.2.0/gems/ruby_doc-2.2.0/favs.txt。运行的最后一行代码是对FileUtils.touch(在config/environment.rb:23 中)的调用。

    您可能会问自己“但如果该文件尚不存在,难道不应该创建它吗?”。答案是:是的,然而只有当父目录也存在时。当您 gem install 您的 gem 时,将为您创建这些目录。当您克隆存储库并运行 rake 时,情况并非如此(这也是 Travis 在看到 Ruby 项目时自动为您执行的操作)。

    为了解决这个问题,我建议您将 fav_dir 方法的主体更改为如下内容:

    File.expand_path("../favs.txt", __dir__)
    

    乍一看有点神奇,但实际上并非如此:__dir__ 是一个 Ruby 方法,它返回调用该方法的文件目录的绝对路径。在这种情况下,这将是例如/usr/home/foo/dev/ruby_doc/config。最后,File.expand_path 允许我们解析相对路径,在这种情况下,最终结果将是 /usr/home/foo/dev/ruby_doc/favs.txt
    这样您就不需要指定任何绝对路径或对目录布局做出假设,并且还需要确保路径存在(因为源文件的目录及其父目录始终存在)。

    【讨论】:

    • 抱歉回复晚了,非常感谢您的帮助!我们会把这件武器放在我的后兜里。无论如何,在无关的笔记上堆叠lol也是新的,以便在此处设置有关问题活动的电子邮件通知?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2012-05-28
    相关资源
    最近更新 更多