Ruby谷歌云盘下载脚本本地正常,Bitrise运行报LoadError错误
Ruby脚本在Bitrise运行时无法加载google/apis/drive_v3的解决方法
本地运行从Google Drive下载资源的Ruby脚本正常,但Bitrise平台执行时出现如下错误:
ruby config_downloader.rb -f Android -p 550 -g '' /Users/vagrant/.rbenv/versions/2.6.9/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- google/apis/drive_v3 (LoadError) from /Users/vagrant/.rbenv/versions/2.6.9/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from config_downloader.rb:1:in `<main>'
对应的Gemfile内容:
# Autogenerated by fastlane # # Ensure this file is checked in to source control! source "https://rubygems.org" gem 'fastlane' gem 'google-api-client' gem 'google-apis-drive_v3' plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path)
解决步骤:
先执行bundle install确保依赖安装完全
Bitrise环境不会自动安装Gemfile里的依赖,需要在运行脚本前添加构建步骤执行bundle install,确保所有gem都安装到当前项目的bundle环境中。用bundle exec代替直接ruby命令运行脚本
直接调用ruby会使用系统全局的gem环境,而bundle exec会强制使用Gemfile.lock中锁定的依赖版本,避免环境不一致问题。修改运行命令为:bundle exec ruby config_downloader.rb -f Android -p 550 -g ''检查Bitrise的Ruby版本与本地匹配
错误日志显示Bitrise使用的是Ruby 2.6.9,确保本地开发环境的Ruby版本和这个一致,否则可能出现gem兼容性问题。可以在Bitrise的Ruby版本管理步骤中设置相同的版本。验证gem是否成功安装
在Bitrise构建流程中添加一个调试步骤,执行bundle show google-apis-drive_v3,如果输出该gem的路径则说明安装正常;如果提示找不到,检查网络是否能访问rubygems.org,或者尝试在Gemfile中指定具体版本号(比如gem 'google-apis-drive_v3', '~> 0.29.0')后重新安装。
内容的提问来源于stack exchange,提问作者Nikhil Sathawara
相关产品推荐
相关产品推荐

