8
9

More than 5 years have passed since last update.

springを1.3.0にしたらgit指定のgemを読み込めなくなる場合の対処法

Last updated at Posted at 2015-02-09
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を起動できるようになったことを確認した。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9