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
※
xed .で起動して環境変数をCLIからXcodeに持ち込むには、UseSanitizedBuildSystemEnvironmentをNOにセットしておく必要があります。