はじめに
今回は本番環境で行うコマンドを間違って開発環境で実行してしまいエラーが発生してしまったのでそうなってしまった理由や原因を調べていきます。
やってしまったこと
AWSでEC2のサーバーを立ち上げるために以下のコードを誤って開発環境で実行してしまった...
$ bundle install --path vendor/bundle --without test development
そこからbundle installやサーバーを立ち上げようとするとエラーが発生するようになりました。
bundle installでNokogiriがインストールできないエラー
Gem files will remain installed in
/home/vagrant/work/SMB/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9 for inspection.
Results logged to
/home/vagrant/work/SMB/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.9/gem_make.out
An error occurred while installing nokogiri (1.10.9), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.10.9' --source 'https://rubygems.org/'`
succeeds before bundling.
何が行われてしまったのか?
$ bundle install --path vendor/bundle --without test development
このコマンドでbundle installでオプションを付けている
-
--pathでインストール先をいつものパスではなくて指定したパスのディレクトリにインストールをしている(vendor/bundle)
rubyはrbenvファイルにインストールをしなければいけないのにvendor/bundleにインストールをしてしまっている -
--without(意味:除外します/抜きにする)
今回だとtest developmentを除外します
development(開発)環境なのにインストールしないのはマズい...
bundle installに一回でもオプションをつけるとbundleファイルがずっと覚えていてくれるのでずっとそのオプションになってしまう
原因!
bundle installにオプションを付けてしまったのが原因
解決策
bundleファイルの中身を修正
.bundle/configファイルの中が先ほどbundle installした際のオプションが入っているのでそこを修正。
修正前
---
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "test:development:production"
修正後
---
BUNDLE_WITHOUT: "production"
これでまたうまく動くようになりました!
最後に
エラーが出た時はかなり焦りましたがしっかりしてしまったことを理解することが大事だと思いました。
またコマンド一つ一つが何をしているのか把握していくのが大事だと改めて知る機会になりました。
