Skip to content

Instantly share code, notes, and snippets.

@acevif
Last active June 13, 2023 06:28
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acevif/c67149aaabab3bb0f6e733782619842c to your computer and use it in GitHub Desktop.
Save acevif/c67149aaabab3bb0f6e733782619842c to your computer and use it in GitHub Desktop.
Xcode の Run Script Phase で rbenv を効かせる方法

Xcode の Run Script Phase で rbenv を効かせる方法

Xcode の Run Script Phase で rbenv が効いておらず困っていたが、解決できたのでメモ

  • Run Script PhaseからPATH環境変数に~/.rbenv/shims/を追加すれば良い。
  • ただし、直接 ~/.rbenv/shims/ を参照するとrbenvに依存してしまう。rbenvは透過的であってほしいのにrbenvに依存してしまってよくない。
  • そこで dependency inversion を行う. Run Script Phase は .xcode-env というスクリプトを呼び出すようにして、.xcode-envは各システム環境で用意する. rbenvを使うべき環境では .xcode-env の中で ~/.rbenv/shims/ を参照する
  • やりたかったこと: fastlaneを(rbenv経由で) 走らせたい
  • .zshenv等でPATHを編集すれば効くかなと思ったらRun Script Phaseの中では効かなかった
  • 下記の記事を参考にした: https://gist.github.com/vyder/2386a03affba03dadb2bc7c3f0bf7b8a

スクリプト実例:

Run Script Phase:

# Make this script customizable.

XCODE_ENV=.xcode-env

# Setup your env variable overrides here
if [ -f $XCODE_ENV ]; then
    source $XCODE_ENV
fi

# Main script

.xcode-env:

export PATH=~/.rbenv/shims:$PATH

.gitignoreには以下を追記:

.xcode-env
@acevif
Copy link
Author

acevif commented Jun 13, 2023

更新が間に合っていないが:

  • $PATHを含めて、環境変数をXcodeに持ち込みたいときは、ローカルではxed で起動するのがベター。CI環境ではCIごとになんとかする方法があるはず。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment