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
更新が間に合っていないが:
$PATH
を含めて、環境変数をXcodeに持ち込みたいときは、ローカルではxed で起動するのがベター。CI環境ではCIごとになんとかする方法があるはず。