toshizou-Rails

--skip-yarnしたRailsアプリ(プロジェクト)に後からyarnを追加する

TD;TR;

  • yarnをスキップするオプションを付加したことを後悔した
  • オプションはある程度わかった上でつけるのがbetter(分からないならつけない)
  • ggりかたも大事

開発環境

経緯

  1. admin-lte3なる管理画面を使いたくなった - AdminLTE2をRails5.1/yarnで動かす - Qiita
  2. この記事(【Rails入門】YarnでjQueryとBootstrapを使うには!? | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイトを)参考に実現しようとしたが全くできなかった

ので備忘録。

Railsアプリを作るときに--skip-yarnオプションを付加した

下記の2つの理由からオプションを付加しました。

  1. 4.2で使った機能があれば十分だと思った
  2. アプリのパフォーマンスが下がるかもしれない(勝手な憶測)

他にもcoffeescript, turbolinks関連のオプションを付加しています。

後からどうしても欲しくなった

アプリをある程度作っていると管理画面が欲しくなりましたが

  • 管理画面を作るのがとても時間がかかりそう
  • カスタマイズしやすい管理画面をつくるためのいい感じのgemがなかった
  • Rails5.1から追加されたyarnを使えば工数の短縮につながる

という結論に至り後から導入することに決めました。

解決するために

1.完全にハマった

導入しやすそうな記事があったので参考に進めてみたが、全くうまくいかないので色々ggりました - 【Rails入門】YarnでjQueryとBootstrapを使うには!? | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

2.とりあえずyarnをインストールする

  1. yarnは必須なのでDockerfileにリンクを参考にコードを追記して - docker for macでrails × yarn × webpackerのfront環境を整える - Qiita
  2. docker-compose buildを実行しても
  3. ERROR: Service 'web' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder922711295/package.json: no such file or directoryと怒られるので
  4. package.jsonを作成してあげる
  5. docker-compose buildを実行 -> yarnをインストールできた!!

3.yarnコマンドでモジュールを追加しても反映されない

これが一番辛かった...

  • yarnコマンドで追加してもcssにbootstrapのデザインが反映されない

その他いろいろエラーが出たのですがほぼ覚えていません(m m)

3.ggりかたを変える

反映されない理由が分からずとにかくdokcer rails yarn ~~~ みたいな感じでggってましたが、dockerを外してggってみみると良さげな記事が出てきたので

  1. guguru1 - rails yarn 追加 - Google 検索
  2. すると良さげな記事がでてきた - rails に yarn で jquery を導入 | office-aship
  3. 内容を見てみると下記のような内容だった
  4. 通常はnode_modulesの中にパッケージが反映される
  5. --skip-yarnオプションをつけると
    • 作成するための設定ファイルbin/yarnファイルが追加されない
    • config/initializers/assets.rbに必要な記述がされない

無事解決!!

...とすぐにはならなかった。

  • 原因はbin/yarnファイルにあった
    • 最初はbin/yarnファイルを作成、仮で作ったrails5.1からコピペしてきた -> node_modulesフォルダが追加されなかった
    • 最初はbin/yarnファイルを仮で作ったrails5.1からドラッグ&ドロップしたら動作するようになった