はじめに
今回は本番環境で行うコマンドを間違って開発環境で実行してしまいエラーが発生してしまったのでそうなってしまった理由や原因を調べていきます。
やってしまったこと
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"
これでまたうまく動くようになりました!
最後に
エラーが出た時はかなり焦りましたがしっかりしてしまったことを理解することが大事だと思いました。
またコマンド一つ一つが何をしているのか把握していくのが大事だと改めて知る機会になりました。