Xcode ruby ​​runcript не может найти драгоценный камень - PullRequest
0 голосов
/ 22 мая 2018

Xcode: 9.3.1

ОС: macOS High Sierra 10.13.4

Я разработчик для iOS и совсем не знаком с ruby.

Я использую скрипт запуска в моем проекте XCode, который использует гем ruby ​​с именем 'xcodeproj'.Прежде чем все работало, но я обновил свою macOS, и теперь этот скрипт не может найти gem 'xcodeproj'

. Когда я пытаюсь построить свой проект, он показывает следующую ошибку

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- xcodeproj (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

Iпошел по пути, указанному в приведенной выше ошибке, и там не было xcodeproj gem-файлов, даже после того, как я установил gem install xcodeproj, он устанавливается где-то еще.Это вывод на моем терминале

xxx-MacBook-Pro:~ user$ gem list

*** LOCAL GEMS ***

atomos (0.1.2)
bigdecimal (default: 1.3.4)
bundler (default: 1.16.1)
CFPropertyList (3.0.0)
claide (1.0.2)
cmath (default: 1.0.0)
colored2 (3.1.2)
csv (default: 1.0.0)
date (default: 1.0.0)
dbm (default: 1.0.0)
etc (default: 1.0.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
nanaimo (0.2.5)
openssl (default: 2.1.0)
psych (default: 3.0.2)
rdoc (default: 6.0.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
webrick (default: 1.4.2)
xcodeproj (1.5.9)
zlib (default: 1.0.0)

Более того, когда я пытаюсь выполнить свой скрипт выполнения ruby ​​через терминал, он не выдает ошибки (а через xcode он не работает).

Очевидно, gem xcodeproj была установлена ​​в моей macOS, но она не включена в Ruby.framwork, и я думаю, именно поэтому сценарий выполнения моего xcode не работает во время сборки.Вот мой RunScript enter image description here

Скриншот ошибки в Xcode enter image description here

Любая помощь высоко ценится, ребята :)

1 Ответ

0 голосов
/ 22 мая 2018

Хорошо, я нашел ошибку в своем коде.

Было две версии ruby, одна для системы, т.е. /System/Library/Frameworks/Ruby.framework/Versions/2.3 (это для корневой системы, которая поставляется с macOS), а другая была /usr/local/Cellar/ruby/2.5.1/lib/ruby(Не уверен, для чего это нужно, я предполагаю, что это отдельная среда ruby ​​для новой версии 2.5.1, я мог бы установить ее в прошлом)

В оболочке моего runcript у меня было /usr/bin/ruby, которое имеетисполняемый файл ruby ​​для системного ruby ​​/System/Library/Frameworks/Ruby.framework

Я проверил среду ruby ​​с помощью команды gem environment, и он выдал вывод

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /Users/xxx/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /Users/xxx/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.5.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-17

Здесь EXECUTABLE DIRECTORY: /usr/local/bin, и у меня был другой путьдля моего исполняемого файла ruby, который я указал в оболочке моего скрипта (/usr/bin/ruby), поэтому я изменил /usr/bin/ruby на /usr/local/bin/ruby, и он работает.

Поскольку мой гем устанавливался в обновленной версии ruby ​​(2.5) /usr/local/Cellar/ruby/2.5.1/lib/ruby вместо ruby ​​старой системы (2.3) /System/Library/Frameworks/Ruby.framework, так что теперь, когда я указал путь к исполняемому рубину последней версии ruby, вкакой драгоценный камень был установлен, он работает нормально.

...