概要
Docker + Rails環境でSprocketsからWebpackerに移行作業時にWebpackerをインストールするまでのエラーにハマってしまったため、解決方法を紹介します。
暫定的対応のため、本来のエラー解決方法をご存知の方はコメント下さると幸いです。
環境
- ruby 2.6.3
- Rails 5.2.3
- docker
エラーが起こるまで
- Dockerfileにyarnを使用するための記述追加
- Gemfileに
gem 'webpacker'
追加 - docker-compose run web bundleにてgemインストール
\ エラー発生 /
webpack binstubs not found.
Have you run rails webpacker:install ?
Make sure the bin directory or binstubs are not included in .gitignore
Exiting!
ERROR: 1
```
エラー文にある
```rails webpacker:install``` は```webpacker```のインストール完了後に実行するつもりだったし、
```.gitignore``` にbin/以下を無視するような記述を加えてないし。。。という感じでハマりました。
# 解決方法
① ```bin/``` に```webpack```という名前で空のファイルを生成後に```docker-compose run --rm web bundle```実行。(webpack binstubs not found.と言われているので)
**\ エラー文が変わった! /**
```
Configuration config/webpacker.yml file not found.
Make sure webpacker:install is run successfully before running dependent tasks
ERROR: 1
```
②エラー文に従い、``config/webpacker.yml``作成
- ファイルの中身は[github](https://github.com/rails/webpacker/blob/master/lib/install/config/webpacker.yml)からコピペで。
③ ```docker-compose run --rm web bundle```実行。
- gemインストール完了!
④```docker-compose run --rm web bundle exec rails webpacker:install```実行にて、Webpackerをインストール。
- ①、②で作成したファイルを上書き出来ます。
以上が解決手順です。
# 終わりに
本来```bin/webpack```も```webpacker.yml```もwebpackerインストール時に自動生成されるもののため、何故手動生成する必要があったかモヤモヤしています。
もしわかる方いらっしゃいましたら教えてください!!
# 参考情報
https://qiita.com/junara/items/28fbc5e4d2ba6a162d24
[Rails5.2 + Docker環境にVue.js (Webpacker) を導入する](https://remonote.jp/rails-docker-vuejs-construction)