Ruby on rails 3 &引用;“文件太短”;关于捆绑安装
运行bundle exec rake时,我偶尔会收到“文件太短”消息: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
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
如果您在多个进程中使用它,则使用
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。所以谢谢:-)