Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 &引用;“文件太短”;关于捆绑安装_Ruby On Rails 3_Rake_Rvm_Bundler - Fatal编程技术网

Ruby on rails 3 &引用;“文件太短”;关于捆绑安装

Ruby on rails 3 &引用;“文件太短”;关于捆绑安装,ruby-on-rails-3,rake,rvm,bundler,Ruby On Rails 3,Rake,Rvm,Bundler,运行bundle exec rake时,我偶尔会收到“文件太短”消息: rake aborted! /var/lib/jenkins/.rvm/gems/ruby-1.9.3-p327/bundler/gems/amatch-0f95f4ce269f/lib/amatch_ext.so: file too short - /var/lib/jenkins/.rvm/gems/ruby-1.9.3-p327/bundler/gems/amatch-0f95f4ce269f/lib/amat

运行bundle exec rake时,我偶尔会收到“文件太短”消息:

rake aborted!
/var/lib/jenkins/.rvm/gems/ruby-1.9.3-p327/bundler/gems/amatch-0f95f4ce269f/lib/amatch_ext.so:     file too short - /var/lib/jenkins/.rvm/gems/ruby-1.9.3-p327/bundler/gems/amatch-0f95f4ce269f/lib/amatch_ext.so
  • 有没有办法让bundler更具容错性,并在遇到这些虚假故障时尝试重新运行
  • 一开始为什么会发生这样的事情?多个进程可能同时执行rake任务-这会损坏rvm的gem存储库吗?如果是,如何避免该问题

  • 如果您在多个进程中使用它,则使用
    bundle--standalone
    -假设每个进程都从不同的路径运行-如果它们都使用相同的路径,那么您可以尝试
    bundle--path/path/for/gems$$$/
    $$
    替换为进程pid-但是
    --path
    是记录选项,并且不会更改帮助,因为只有最后一次运行才会在此目录中可见

    最好是限制同时执行的运行量

    另一种选择是在运行时修改
    GEM_HOME
    ,但jenkins会使这一点变得复杂,因此这很可能不起作用:

    OLD_GEM_HOME=$GEM_HOME
    GEM_HOME=$( mktemp -d )
    cp -r $OLD_GEM_HOME/ $GEM_HOME/
    bundle install
    # other commands
    rm -rf $GEM_HOME/
    GEM_HOME=$OLD_GEM_HOME
    

    是的,我尝试了你的建议和
    bundle--path
    一起使用,但无法让gems正常工作。然而,事实证明,您的回答促使我意识到,duh,我可以为每个并发进程创建一个rvm gemset。所以谢谢:-)