ターミナル上で実行する分には問題なく動く。
Atom-runnerで実行すると
`require': cannot load such file -- xxxxxxxxx
となり、Gemが見つからないようなので調べてみた。
ちなみにrubyはrbenvで入れています。
【原因】rbenvにPATHが通ってない
普段はzsh使いなので、rbenvの設定はbashには入れていない。
そのため、OSX標準のrubyが読み込まれていると思われる。
確認には下記のスクリプトをAtom-runnerで実行してみた。
test.sh
rbenv version
ruby -v
which ruby
echo $PATH
/Users/dancho/.homesick/repos/dotfiles/home/.atom/packages/atom-runner/examples/test-bash.sh: line 1: rbenv: command not found
ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
/usr/bin/ruby
/usr/bin:/bin:/usr/sbin:/sbin
試行錯誤
1. .bashrcにrbenvの設定を入れてみる
~/.bashrc
eval "$(rbenv init -)"
ネットで調べると、Atom-runnerはbashで動いているらしいので、.bash_profileに設定をしてみた。
2.1.5 (set by /Users/dancho/.rbenv/version)
ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
/usr/bin/ruby
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
一歩前進。rbenvのPATHは通ったが、rubyは相変わらずOSX標準。
2. Atomの設定ファイルを書き換えてみる
init.coffee
process.env.PATH = "#{process.env.HOME}/.rbenv/shims:#{process.env.HOME}/.rbenv/bin:#{process.env.PATH}"
ここで不思議な事態に。
Atom再起動直後はrbenvのPATHは通らなかったが、rubyはrbenvのものを向いている。
/Users/dancho/.homesick/repos/dotfiles/home/.atom/packages/atom-runner/examples/test-bash.sh: line 1: rbenv: command not found
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
/Users/dancho/.rbenv/shims/ruby
/Users/dancho/.rbenv/shims:/Users/dancho/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin
何度か繰り返しているとrbenvのPATHが通ったが、PATHの順番が入れ替わってしまった。
2.1.5 (set by /Users/dancho/.rbenv/version)
ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
/usr/bin/ruby
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/dancho/.rbenv/shims:/Users/dancho/.rbenv/bin
継続調査中。。。
もう少しAtom-Runnerのソースを追ってみたい。
暫定回避策
#! /Users/xxxxx/.rbenv/shims/ruby
シバンで逃げた(汗
ちょっとしたスクリプトならこれでなんとかなるかも。