LoginSignup
0
0

Docker使ってrails newしたい時にすぐできるtemplateを作った

Posted at

はじめに

こんにちは!
まるべいじです!

個人開発でちょっと作りたくなった時に、どのような構成で構築していますか?
私は、Rails+Docker+その他必要なものにしています。
Dockerがあると環境差分が減って開発しやすくなりますし、デプロイ先の選択肢も増えるので、この構成は外せません。

ただ。。。Docker経由でrails newするのが地味にめんどくさい。。。
rails new用のDockerにrubynodeのインストール、railsだけはいったGemfileなど、細かい調整がいろいろ必要です。

すぐに開発したいのに、ここでモチベーションがちょっと下がる。これは良くない!と思ったので、今回はRailsのセットアップをするTemplate Repositoryを作りました✨

Template Repository とは???
この機能を使うと、あらかじめ設定されたリポジトリをベースにして新しいプロジェクトを簡単に始められます。
つまり、Template Repositoryは「繰り返しの労力を減らす」ためのスマートなツール。簡単に言うと、「スタートキット」のようなものです!!!

リポジトリの説明

各種ツールやバージョン

以下はデフォルトの設定です。
Dockerfileとセットアップスクリプトを変更することで変えることができます。

  • Ruby
    • 3.2.2
  • Node.js
    • 20系
  • Database
    • PostgreSQL
  • docker-compose
    • 開発環境でdocker-composeを使ってRailsを起動することを前提に作られています

使い方

  1. https://github.com/salvage0707/rails-new-template このテンプレートを使ってリポジトリを新規作成します
  2. 作成したリポジトリをcloneします
  3. リポジトリのルートディレクトリで$ scripts/setuprailsを実行します
  4. 指示に従ってセットアップする
    1. バージョンやデフォルトのオプションが問題なければ、yesと回答してください
      以下でRailsをインストールします。
      Rubyのバージョン: 3.2.2
      Nodeのバージョン: 20
      デフォルトオプション: --force --database=postgresql
      この内容で次に進みますか? (yes/no): yes
      
    2. 追加で必要なオプションがあれば入力してください
      他に必要なオプションがあれば入力してください > -j esbuild
      
    3. 実行するrailsコマンドが問題なければyesと回答してください
      以下のコマンドでRailsをインストールします。
      rails new . --force --database=postgresql -j esbuild
      この内容で次に進みますか? (yes/no): yes
      
    4. rails newが実行され、スクリプトが終了したらOKです
  5. railsの初期作成が完了したら、$ docker compose buildでdockerをビルドします
  6. $ docker compose run --rm web rails db:createでDBの作成をします
  7. $ docker compose upで起動します
  8. http://localhost:3000 にアクセスして初期画面が表示されることを確認します
  9. $ rm -rf Dockerfile.tmp && rm -rf scriptsで、rails newに使用した不要ファイルを削除します
  10. 完了!!!!!!!

さいごに

これでrails newしやすくなるはず...!
まぁ、これだけだとrails newまでしかテンプレートになっていないので、開発始めるとなるとrubocopとか細かい設定は必要なんですよね。
なので、このテンプレートからさらに派生して、Rails+vite+React構成のテンプレートも作ります!

0
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
0
0