inuinu blog(開発用)

BOT @wagagun の開発ノウハウや、IT向け?の雑記ブログです。

【Ruby on Rails7】Rails7を導入する

この記事では、Ruby on Rails7を導入します。
デフォルトではgemは共通領域にインストールされますが、他の環境を汚すリスクがあるので、プロジェクトにあるvendorフォルダ内にgemをインストールするようにします。

バージョン3.0以上のRubyを導入する

Rails7での推奨バージョンを確認する

Ruby 2.7.0以上が必須、Ruby 3.0以上が望ましい

7_0_release_notes

とあるので、最新バージョンに近いバーションをrbenvを通じてインストールします。

rbenvはMacでは使用できますが、Windows環境ですと異なるインストール手段になると思います。

結果3.2.2をインストールしました。

バージョン7.0以上のRubyを導入する

共通のgemエリアにインストールしたくない場合はどうするか?

下記サイトが参考になりました。ありがとうございます!

utano.jp

こちらのサイトの手順に近い方法でインストールしていきます。

ベースディレクトリを作成し、一時ディレクトリ(.bundle)内インストールする

まず、ベースとなるフォルダを作成します。
(このフォルダはプロジェクト名ではないことに注意してください。)

以下のコマンドを実行します。

bundle init

作成されたGemfileを変更します。

gem "rails", '=7.0.8'

7.0.8は執筆段階での最新バージョンになります。
(こちらは適宜変更してください。)

以下のコマンドを実行します。

bundle install --path .bundle/

これで、.bundleというフォルダにRailsその他がインストールされます。

Macの場合はデフォルトでは「.」で始まるファイルやフォルダは表示されません。
「command」+「shift」+「.」で表示させてください。
(Githubで使用する.giticnoreなども表示されるようになります。)

バンドル無しで、Railsのプロジェクトを開始する

以下のコマンドを実行してください。

SQLiteを使用する場合、

bundle exec rails new プロジェクト名 --skip-bundle

MySQLを使用する場合(事前にインストールする必要があります)、

bundle exec rails new プロジェクト名 -d mysql --skip-bundle

Gemfileだけを作成するようなイメージでしょうか。

Gemfileを追記する

プロジェクト名フォルダ内に作られたGemfileに必要なものを追記していきます。
一例として私の評価用のプロジェクトを上げておきます。

追記は必要となった都度でも全然問題はありませんが、erbかhaml でいくかは、先に決めておいたほうが良いかもしれません。

●Gemfile

# Bootstrap5
gem "bootstrap", "~> 5.2.0"
gem "mini_racer", "~> 0.6.2"

# テストプログラム
group :development do
  gem 'rspec-rails'
end
# テストプログラム(簡易書式化)
gem "shoulda-matchers"

# haml
gem 'haml-rails'

# 日本語化
gem "rails-i18n", "~> 7.0.0"

# ページネーション
gem "kaminari"
gem 'bootstrap5-kaminari-views'

# 検索機能
gem "ransack"

# cocoon
gem 'cocoon'

Bootstrap5については、gem以外にもいくつかの手順があります。下記を参照してください。

inuinu-tech.hatenablog.jp

テストプログラムでRSpecを使用したい場合は追記します。
shoulda-matchersは、RSpecの簡略記法となります。

hamlはgemのみでインストールは完結しますが、導入時点では、Rilas7でのレイアウトがerbとは異なっています。
詳細はこちらを参考にしてください。

inuinu-tech.hatenablog.jp

国際化パッケージ(=日本語化パッケージ)のi18nは、gemインストール以後も導入作業があります。下記を参照してください。

inuinu-tech.hatenablog.jp

ページネーションおよび検索機能(ソート機能含む)については、下記をご参照ください。
(両者は相性がいいので一括して導入したいということもあるかと思います。)

inuinu-tech.hatenablog.jp

inuinu-tech.hatenablog.jp

親子関係にあるテーブルを一括で入力する場合、明細追加や削除等のアクションを簡略化できるパッケージcocoonの導入および問題解決、関連する機能の追加については、下記のコラムシリーズをチェックしてみてください(関連するコラムは10以上あります)。

inuinu-tech.hatenablog.jp

ベースフォルダのgemを削除する

次に、ベースフォルダー直下にある.bundleフォルダとGemfileを削除します。

プロジェクト内のgemをvender内にインストールする

以下のコマンドを実行してください。

bundle install --path vendor/bundle/

(MySQLのみ)データベースを作成する

SQLiteの場合は、すでにデータベースファイルが作成されていると思いますが、MySQLの場合はデータベースに接続するためconfig/database.ymlを変更します。

  password: (パスワードを入力)

さらに、以下のコマンドを実行します。

rake db:create

MySQL Workbench等のユーティリティソフトで、データベースの作成を確認してください。

プロジェクト名_developmentプロジェクト名testの2つのデータベースが作成されているはずです。

Ruby on Railsでは、このようにDB・テーブル操作もRails上で行います。

動作確認

以下のコマンド実行してください。

bundle exec rails s

さらに、下記のURLをクリックしてください。

http://localhost:3000/

Railsのトップページが表示されたら、動作確認の完了です!