关于如何使用rubyMine调试cocoapods插件

3,634 阅读3分钟

虽然很早就接触到了ruby,但是以前的调试都是通过rubyputs输出来调试ruby代码。puts输出的方式很难满足最近由于工作需要,因此希望能够通过断点的方式来调试ruby代码。虽然Google到一些RubyMine配置的文章,但是在配置过程中还是碰到一些问题,把这些坑记下来,希望能够方便遇到类似问题的后者。

一、环境信息
  1. 系统 ruby版本:

    ruby --version
    ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
    
  2. Mac的系统版本

     macOS Catalina  10.15.5
    
  3. 安装 rvm工具

     1. curl -sSL https://get.rvm.io | bash -s stable
     2. rvm 安装完毕信息如下:
     	Ruby enVironment Manager 1.29.10 (latest) (c) 2009-2017 Michal Papis, Piotr Kuczynski, Wayne E. Seguin
     	For additional documentation please visit https://rvm.io
    
  4. 通过 rvm 安装ruby

     rvm install "ruby-2.7.2"
    
  5. 设置ruby 2.7.2 版本的ruby 为默认的ruby

     rvm 2.7.2 -- current && default
    
  6. 安装ruby的调试工具RubyMine-2020.3(30天试用期)

二、源码准备

  1. 准备源码

     1. 创建文件目录: rubyDebug
     2. clone CocoaPods 对应的源码仓库:git clone https://github.com/CocoaPods/CocoaPods.git  
     3. clone cocoapods-bin 对应的源码仓库:git clone https://github.com/tripleCC/cocoapods-bin.git
    
  2. 配置Gem

    新建Gemfile 文件,内容如下

     source 'https://rubygems.org'
     
     gem 'cocoapods', path: './CocoaPods/'
     gem 'cocoapods-bin', path: './cocoapods-bin/'
     
     group :debug do
     	gem 'ruby-debug-ide'
     	gem 'debase'
     end
    
  3. 执行bundle install命令

  4. 执行完毕之后的目录结构如下:

三、RubyMine 配置

  1. 使用RubyMine 打开rubyDebug目录

  2. 在开始调试cocoapods插件之前建议看下rubyMine能否调试正常的ruby文件:

     1. 新建一个ruby文件,在ruby文件内部定义简单的方法用以调试
     2. 双击control键,输入对应名的命令:ruby xx.ry
     3. 点击右上角的小虫子,开始调试简单的ruby
     4. 如果能够正常调试如下下图所示表示可以正常调试ruby
    

    配置如下:

  3. 配置CocoaPods 插件的调试

    • 点击右上角的Editor Configurations 添加配置,配置页面如下:

      在 Run the script in context of the bundle(bundle exec) 打钩

    • 配置工程对ruby 版本的依赖

    • 验证配置的结果,配置成功则可以进行调试

  4. 参数解释

     选择 Gem Command
     1. Gem name: 输入cocoapods-bin(插件的gem名字)
     2. Excutable name: 输入 pod(这个可以固定,因为这是宿主程序)
     3. Arguments: pod命令执行需要的参数,以cocoapods-bin为例 执行命令为pod bin archive,则可以填写 bin archive
     4. Working directory: 选择测试pod的工程目录,也就是podspec文件存在的目录。
     5. Ruby SDK 建议选择 use project SDK,只有选择工程的SDK,才可以正常调试 cocoapods-bin 插件
    

四、其他

  1. 在首次点击调试的时候RubyMine 会根据对应选择的ruby 版本安装对应的debase及 ruby-debug-ide 。

  2. 关于ruby 版本的问题

     强烈建议使用ruby 2.7.2 及以上版本。使用系统自带的2.6.3版本的ruby RubyMine 的Debug的调试通能会报如下的错误:
    
    
     Error running 'install'
     	Failed to Install Gems. Following gems were not installed:
     	/Applications/RubyMine.app/Contents/plugins/ruby/rb/gems/debase-2.3.2.gem:  Error installing debase-2.3.2.gem:
     	ERROR: Failed to build gem native extension.      current directory: /Users/lhs7248/.gem/ruby/2.6.0/gems/debase-2.3.2/exto /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20201209-44039-nco38b.rb extconf.rb checking for vm_core.h... no checking for vm_core.h... no ************************************************************************** No source for ruby-2.6.3-p62 (revision 67580) provided with debase-ruby_core_source gem. Falling back to ruby-2.6.0-p0. ************************************************************************** checking for vm_core.h... yes checking for iseq.h... no checking for iseq.h... yes checking for method.h... no Makefile creation failed ***********************************************... (show balloon)
    

·