bin/spring
@@ -9,7 +9,7 @@ unless defined?(Spring)
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
- ENV["GEM_HOME"] = ""
+ ENV["GEM_HOME"] = nil
Gem.paths = ENV
gem "spring", match[1]
のようにbin/springで ENV["GEM_HOME"]
に nil
を代入するように変更するとspringを起動できるようになる。
詳細
まとまっていないが、問題発生から調査過程などを適当にメモとして残す。
rails/springのバージョンを1.3.0にあげたら、突然railsを起動できなくなった。
$ rails c
git://github.com/activeadmin/activeadmin.git (at 9fac110) is not yet checked out. Run `bundle install` first.
activeadminは直接github上のリポジトリを指定していて、どうやらrubygemsを経由せずにgitリポジトリを直接参照している場合に問題が発生するっぽい。
Gemfile
gem 'activeadmin', github: 'activeadmin', ref: '9fac1106ca'
bundlerの中でエラー文字列を出力している箇所から深堀りしていくと、非常に気が付きにくいが、環境変数の GEM_HOME
が突然切り替わりbundlerの読み込みパスが変わり、その結果デフォルトで指定されている正しいパスが上書きされておかしくなっていた。
そこでなんとなく git grep GEM_HOME
したところbin/springだけがヒットした。そこでふと今日springのバージョンを1.2.0から1.3.0に上げたことを思い出したので、再度差分を確認したところ、怪しいコミットを発見し、試しに本記事の先頭にあるように変更してみたところ、railsを起動できるようになったことを確認した。