Mac下通過RubyMine除錯Cocoapods

語言: CN / TW / HK

Ruby

首先檢視本地Ruby環境,系統自帶的版本可能有些老,建議安裝ruby新版本,這裡使用的是2.7.2

對於只是簡單使用ruby,不做版本相容的使用者來說。建議使用brew安裝ruby

➜  ~ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
複製程式碼
  • 通過homebrew安裝ruby

    brew install [email protected]
    複製程式碼

    安裝成功之後,通過 ruby -v 檢視版本資訊,若還是老版本,則需要新增系統環境變數

    根據自己的情況,選擇 .zshrc 或者 .bash_profile,加入下面一行

    export PATH="/usr/local/Cellar/[email protected]/2.7.2/bin:$PATH"
    複製程式碼

    生效

    source ~/.zhsrc
    或
    source ~/.bash_profile
    複製程式碼
  • 通過rvm安裝ruby

    • 安裝rv'm

      curl -sSL https://get.rvm.io | bash -s stable
      複製程式碼
    • 安裝ruby

      rvm install ruby-2.7.2
      複製程式碼
    • 切換版本

      rvm 2.7.2 -- current && default
      複製程式碼

Cocoapods原始碼

  • 新建資料夾,這裡以 rubyDebug 為例

  • 下載cocoapods原始碼

    git clone https://github.com/CocoaPods/CocoaPods.git
    複製程式碼

    由於我這裡需要除錯的是1.9.3版本的。所以在下載完成之後切換到對應tag

    git checkout 1.9.3
    複製程式碼
  • 進入cocoapods資料夾,執行 bundle install,安裝gem元件

    bundle install
    複製程式碼

    這一步可能會耗時較長,也可能會出現一些元件下載失敗的情況,有兩種解決方案:

    1. 重試bundle install

    2. 針對失敗的元件,選擇對應的版本自行從github下載,並修改Gemfile的依賴關係,改為本地庫。

      舉例:

      比如在下載 cocoapods-core 失敗了,此時通過cocoapods資料夾下的Gemfile.lock看到依賴的版本為1.9.3

      cocoapods-core (= 1.9.3)
      複製程式碼

      所以我去github下載對應的庫到本地,放在同一目錄下。此時目錄結構如下,Core-1.9.3為剛下載的core庫

      然後修改Cocoapods檔案下的Gemfile檔案

      group :development do
        cp_gem 'claide',                'CLAide'
        cp_gem 'cocoapods-core',        'Core-1.9.3', path: true
        cp_gem 'cocoapods-deintegrate', 'cocoapods-deintegrate'
        cp_gem 'cocoapods-downloader',  'cocoapods-downloader', path: true
        cp_gem 'cocoapods-plugins',     'cocoapods-plugins'
        cp_gem 'cocoapods-search',      'cocoapods-search'
        cp_gem 'cocoapods-stats',       'cocoapods-stats'
        cp_gem 'cocoapods-trunk',       'cocoapods-trunk'
        cp_gem 'cocoapods-try',         'cocoapods-try'
        cp_gem 'molinillo',             'Molinillo'
        cp_gem 'nanaimo',               'Nanaimo'
        cp_gem 'xcodeproj',             'Xcodeproj-1.16.0', path: true
      複製程式碼

      把第二個引數repo_name修改為自己下載的資料夾名稱,比如我的為Core-1.9.3,後面新增引數 path: true,意思為從本地查詢檔案。

      完成之後繼續執行 bundle install,看到例如以下資訊就成功了

    在這個步驟可能會遇到的問題比較多,哪個庫有問題實在不行就嘗試自己下載到本地重試。需有耐心!

    若需要除錯其他元件,則建議直接下載到本地,修改Gemfile的引用。方便斷點。

RubyMine配置

  1. 從RubyMine開啟rubyDebug資料夾

  2. 配置debug資訊,點選右上角 Add Configuration -> 新增 -> Ruby

    • Run script

      指令碼路徑,由於是本地除錯,所以選擇自己的Cocoapods/bin下的pod命令

    • Script arguments

      指令碼的引數。這裡填寫 install,編譯器就會找到上一步填寫的pod,然後執行 pod install。若需要除錯其他執行,修改這裡即可

    • Working directory

      命令在何處執行。這裡選擇Cocoapods預設給的example,選擇afn。執行時會在此目錄下執行 pod install

    • Ruby SDK

      這裡選擇我們自己安裝的 ruby-2.7.2。

      若這裡沒有我們下載的ruby。開啟 Preferences,搜尋 Ruby SDK and Gems,新增自己下載的ruby路徑

  3. 最後應用配置Apply,點選ok,完成配置

除錯

  1. 完成上述配置之後,按上圖的位置,在install.rb中打上斷點

  2. 點選右上角debug按鈕,會自動在上述配置的工作目錄下執行命令 xxxx/Cocoapods/bin/pod install。斷點執行,成功