パRails 環境構築の手順

tags: パRails(2回目)

# 環境
- Ruby 2.7.6
- Rails 6.0.3
- node 16.17.0 (2022年8月時点 最新安定版) 

Ruby 2.7.6 のインストール

  1. 自分のローカル環境に2.7.6が入っているか確認する

    ​​​​$ rbenv versions
    
  2. 1で2.7.6が入っていなければ、以下のコマンドでインストール

    ​​​​$ rbenv install 2.7.6
    
  3. バージョン切り替え

    ​​​​$ rbenv local 2.7.6
    
  4. Gemfileの書き換え
    ダウンロードしたサンプルコードのGemfileには元々、

    ​​​​# Gemfile
    ​​​​ruby '2.6.6'
    

    と記載されているため、2.7.6に書き換える。

    ​​​​# Gemfile
    ​​​​ruby '2.7.6'
    

なぜ2.7.6なのか

  • 2.6系は、公式サポートが終了しているためです。
    Ruby 2.6の公式サポートが終了
  • このため、2.7系の中で一番最新である2.7.6を使うことに決めました

Rails 6.0.3のインストール

  1. 自分の環境に入っているバージョンの確認

    ​​​​$ gem list rails
    
  2. インストール

    ​​​​$ gem i -v 6.0.3 rails
    

輪読会のモブプロで起こったエラー

bundle installすると、mimemagicのエラーが出る

  • bundle installすると以下のエラーが出る
Installing dependencies using bundler 2.2.1
Running: bundle install --jobs=4 --retry=4

Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources listed in your Gemfile. If you haven't changed sources,
that means the author of mimemagic (0.3.5) has removed it. You'll need to update
your bundle to a version other than mimemagic (0.3.5) that hasn't been removed
in order to install.
  • 原因:minemagicというgemが、ライセンスを変えたことが原因で、Railsがbuildできなくなっている (参考:RailsのGPL混入問題についてまとめ(mimemagic) - Qiita)
  • 解決策は2つ
    1. bundle updateする ←パRails輪読会ではこちらを選択しました
    2. Railsのバージョンを変える

rails sしたら、Yarnのエラーが出る

  • エラー内容
========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================
To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).
  • 原因
    • webpacker周りはバージョンがややこしく、よく予期せぬエラーが起こる。
  • 解決策
    • yarn install --check-filesを実行する
    • rails sしてみてもダメな場合、以下を実行する
    • config/webpacker.ymlを開き、check_yarn_integrity2ヶ所をfalseに書き換える
    ​​​​​default: &default
    ​​​​​ source_path: app/javascript
    ​​​​​ source_entry_path: packs
    ​​​​​ public_root_path: public
    ​​​​​ public_output_path: packs
    ​​​​​ cache_path: tmp/cache/webpacker
    ​​​​​ check_yarn_integrity: false #ここをfalseにする
    ​​​​​ webpack_compile_output: true
    ​​​​​ 
    ​​​​​(...省略...)
    ​​​​
    ​​​​​development:
    ​​​​​ <<: *default
    ​​​​​ compile: true
    
    ​​​​​ # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
    ​​​​​ check_yarn_integrity: false #ここをfalseにする
    
    • 再度rails sしたら起動できる

※各ディレクトリで同じエラーがまた出るので、覚えている内にまとめて環境構築してしまうことを推奨します🙏

  • サンプルコードで、1つのRailsアプリで環境構築が完了しても、別のサンプルコードのRailsアプリで起動時、また同じエラーが出てしまいます。
  • お手数ですが、 全部まとめて環境構築してしまうと楽だと思います。

Paruさんのリポジトリをcloneして動かす手順

  • PC内の都合の良い場所で下記のコマンドをターミナルから入力、ファイルをクローンしてコードをダウンロードする
$ git clone https://github.com/Paru871/book_admin.git
  • ダウンロードできたら、ディレクトリbook_adminを VSCode などで開いて、ターミナルから下記のコマンドを1つずつ入力、これによりDBが初期状態となり、seedに入れたデータが入る(現在Publisherが1件)
$ bundle
$ yarn
$ bin/setup
$ rails db:reset
  • その後、rails sしてRailsを起動する。

2回目以降

$ git pull origin main

「Webpacker::Manifest::MissingEntryError in コントローラー名#アクション名」のエラー解消

👉 エラー解消のためにやったこと

  1. nodeのバージョンを「12.22.12」に下げる
  2. webpackerのインストール
  3. webpackerのコンパイル

👉 nodeのバージョンを自動で切り替えられるようにするため、 .nvmrcと.node-versionの2つのファイルを設置しました。

  • 「JavaScript環境の設定」プラクティスでは上記ファイルに対応する設定の指示が今年に入ってから更新されていますので、.nvmrcの設定ができている方は特に何もしなくてOKです。

  • 昨年までに「JavaScript環境の設定」プラクティスが修了している方は下記のリンクから.nvmrcの対応をお願いします。

👉 BootcampアプリのWikiにもnodeの切り替えの方法の説明があります。

nodeのバージョン切り替え · fjordllc/bootcamp Wiki

👉 nodeのインストール用コマンド(nvm使用の場合)

  • インストールされているnodeのバージョンのリストを表示
    • $ nvm ls
  • 指定したバージョンのnodeをインストール
    • $ nvm install 12.22.12

elasticksearchだけdockerで起動する手順

  • ディレクトリ直下に以下2つのファイルを作成
  1. Dockerfile
FROM elasticsearch:7.17.4

RUN elasticsearch-plugin install analysis-kuromoji
  1. docker-compose.yml
services:
  elasticsearch:
    build: .
    environment:
      discovery.type: single-node
    ports:
      - "9200:9200"
      - "9300:9300"
$ docker compose build
$ docker compose up
  • docker compose upelasticsearchが起動するので、起動したままの状態でrails sする。
    →これでealsticsearchだけをdockerで起動することができる。
Select a repo