Follow

でも でも、rbenv version-nameがsystemでgemを--no-user-installするときは/usr/local/lib/ruby/gems/2.x.0にインストールするようにしたい。

(つづく)

· · Web · 1 · 0 · 0

(つづき)
そこで${RBENV_ROOT}/rbenv.d/exec/reset-gem_home.bashをこんなふうにしてみたのだけど、3行目はもうちょっと短く書けないか。
教えてRubyist !

(つづく)

(つづき)
```
1 if [[ ${RBENV_VERSION} == system ]] ; then
2 ## avoid install gems into the protected part
3 unset GEM_HOME ; export GEM_HOME="/usr/local/lib/ruby/gems/$(${RBENV_BIN_PATH}/ruby -r rbconfig -e 'puts RbConfig::CONFIG["MAJOR"] + "." + RbConfig::CONFIG["MINOR"] + ".0"')"
4 else
5 unset GEM_HOME ; export GEM_HOME="$(${RBENV_BIN_PATH}/ruby -r rubygems -e 'puts Gem.default_dir')"
6 fi
```

docs.ruby-lang.org/ja/latest/l
では、`Gem.default_dir`の値としてパス中に`RbConfig::CONFIG["MAJOR"] + "." + RbConfig::CONFIG["MINOR"] + ".0"'`に相当するサブディレクトリがあるのだけど、ほしいのはこのbasenameなんだよ…

と思ったところで、
`export GEM_HOME="/usr/local/lib/ruby/gems/$(${RBENV_BIN_PATH}/ruby -r rubygems -e 'puts File.basename(Gem.default_dir)')"`
と書けることに気づいた。
最初のよりはまし。

多少はましになった ${RBENV_ROOT}/rbenv.d/exec/reset-gem_home.bash はこちら。

```
1 if [[ ${RBENV_VERSION} == system ]] ; then
2 ## avoid install gems into the protected part
3 unset GEM_HOME
4 export GEM_HOME="/usr/local/lib/ruby/gems/$(${RBENV_BIN_PATH}/ruby -r rubygems -e 'puts File.basename(Gem.default_dir)')"
5 else
6 unset GEM_HOME
7 export GEM_HOME="$(${RBENV_BIN_PATH}/ruby -r rubygems -e 'puts Gem.default_dir')"
8 fi
```

お風呂入って考え直したら、これbundlerとbundleのことをちゃんと考えていなかった。

Sign in to participate in the conversation
BlessedGeeks.Org

@h12oのおひとりさまMastodon、Google Cloud Platformで運用