3
0

注意!

初めまして、駆け出し大学生エンジニアです。
この記事が初めての投稿になります。各所で見ずらい点があるかと思いますが、温かい目でご覧ください。また、技術的に不足している点があればコメントで指摘していただくと幸いです。

0. 背景

現在、大学のサークル活動でRailsを使用したWebアプリを開発しています。割と本格的な開発をしたくDockerを使用したチーム開発に挑戦しました。チームはまだ2人ですが...w。
その際、環境構築にめちゃくちゃ手こずりました。ざっと3週間ほど...。そんな3週間の苦労をここに記録しようと思います。

1.事前準備

今回は、チーム開発を目的としているので異なるPCを2台以上準備していただけると記事の内容を活かせると思います。

2. DockerでRailsの環境構築

この記事でDockerの説明は割愛させていただきます。
DockerでRailsの環境を構築するのは下記のサイトを参考にしました。この記事で「12. サーバーの起動を確認」まで行ってください。
*「8. config/database.yml」でhost:dbの下の行にport: dbのポート番号を記述すると良
い思います。私の場合はport: 3306でした。この記述をすることで正常に動きました。DockerデスクトップのContainerからポートは確認できます。

2-1. 筆者の環境

 PC① ← まずこのPCで環境構築しました
 OS : macOS sonoma 14.4.1
 CPU : M3

 PC② ← 次にこのPCにPC①の環境を共有してチーム開発する準備をします。
 OS : Windows11
 CPU : 11th intel core i7

3. チーム開発の準備

ここまで、自分のローカル(PC①)にDockerでのRails環境が構築できたと思います。筆者はrailsappで記事と同じファイルにしました。

3-1. Githubにアップロード

Githubにリポジトリを作成します。今回はqiita_testと言いうリポジトリにしました。スクリーンショット 2024-04-13 2.01.28.png
Githubにあるコマンドを実行してアプロードしてください。
git initgit addでうまくいかず下記のようなエラー出た場合は、rails7apprailsapp.gitという隠しファイルがあるために起こってい可能性が高いです。筆者はrailsappgit addファイルを削除しました。そうすることでコマンドが実行できます。

base) rails7app % git add -A
error: 'railsapp/' does not have a commit checked out
fatal: adding files failed

3-2. PC②にgit cloneする

次に、PC②にgit cloneしてチームでの開発環境を整えていきます。

3-3. PC②にもう一度DockerでRailsの環境を構築

初めは、git cloneしたら下記のコマンドを実行するだけでPC①の環境を作れると思いましたができませんでした。

ターミナル
docker compose run --rm webapp rails db:create
docker compose up -d

実行後

エラー
docker compose run --rm webapp rails db:create

Could not find sprockets-rails-3.4.2, mysql2-0.5.6, puma-6.4.2, jsbundling-rails-1.3.0, turbo-rails-2.0.5, stimulus-rails-1.3.3, cssbundling-rails-1.4.0, jbuilder-2.11.5, bootsnap-1.18.3, debug-1.9.2, web-console-4.2.1, capybara-3.40.0, selenium-webdriver-4.19.0, sprockets-4.2.1, msgpack-1.7.2, bindex-0.8.1, addressable-2.8.6, regexp_parser-2.9.0, xpath-3.2.0, rexml-3.2.6, rubyzip-2.3.2, websocket-1.2.10, public_suffix-5.0.5 in locally installed gems
Run `bundle install` to install missing gems.

上記のようにCould not findというエラーが出ます。

解決方法

まず、cloneしたrailsappのフォルダーを削除して、あたらいい空のrailsappフォルダー作成します。「7. railsプロジェクトを作る」のコマンド実行します。(*今回はいきなり削除していますが、おそらくブランチ切って作業する方がいいと思います。)

ターミナル
docker compose run --rm --no-deps webapp rails new . --force --css bootstrap --javascript esbuild --database mysql

 実行した後に、8. config/database.yml9. Procfile.devを編集することを忘れないでください。
編集を終えたら、再度docker compose run --rm webapp rails db:createdocker compose up -dを実行します。

エラー
bin/rails aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: invalid base64 (ActiveSupport::MessageEncryptor::InvalidMessage)
/railsapp/config/environment.rb:5:in `<main>'
Tasks: TOP => db:create => db:load_config => environment
(See full trace by running task with --trace)

実行して上記のようなエラーが出た場合railsapp\config\master.keyrailsapp\config\credentials.yml.encのファイルに問題あります。詳しくは下記の記事が参考になります。

2個目の記事はチームメンバーにキーを教えてもらうが参考になります。
簡単に言うと、PC②PC①の環境をcloneしています。という事はその環境に合わせてPC①のrailsapp\config\master.keyrailsapp\config\credentials.yml.encの値をPC②に与えないと接続できないという事です。
間違っていたらコメントで指摘してください

4. サーバの起動を確認

 docker compose up -dを実行してhttp://localhost:3000/にアクセスできたら完了です。

最後に

記事を書くために、新しく環境を作り直すと最後のエラーが起きませんでした。なぜなのか原因がわかりません。もし詳しい方いましたらコメントで指摘や補足よろしくお願いします。
最後まで、記事見てくださりありがとうございました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0