🍅

Ruby on Railsを使った開発環境の構築(プロジェクト作成〜サーバー起動)

2024/06/19に公開

Rubyがインストールされていることを確認

MacOSではRubyは標準でインストールされています。そのため今すぐにRubyを使うことが可能です。
Rubyがインストールされていることを確認してみましょう。

ruby -v

公式サイトで最新版を確認することができます。
https://www.ruby-lang.org/ja/downloads/

RubyGemsとは

RubyGemsとは、Rubyのパッケージ管理システムであり、Rubyのライブラリやアプリケーションを管理・インストールするためのツールです。macOSにはRubyGemsが最初からインストールされています。
https://rubygems.org/gems/rubygems-update/versions?locale=ja

https://github.com/rbenv/ruby-build/wiki#suggested-build-environment

RubyGemsのバージョンを確認する

gem -v

Gemfileの作成

Railsをシステムにインストールしていない場合:初期化コマンドを実施すると、ディレクトリに下にGemfileというプロジェクトで必要なGemを管理するためのファイルが自動生成されます。

bundle init

Gemfileの編集

すでに記述されている内容を下記に変更してください。

Gemfile
source 'https://rubygems.org'

gem 'rails', '~> 6.1.7'

Railsとは

Rubyで開発されたフレームワークでモデルビューコントローラー(MVC)アーキテクチャを採用しています。
https://rubyonrails.org/

ライブラリのインストール

Bundlerの設定を変更して、Gem(Rubyのライブラリ)を特定のディレクトリにインストールするためには、次のコマンドを使用します。

bundle config set path 'vendor/bundle'

このコマンドを実行すると、.bundleディレクトリがプロジェクト内に作成され、Bundlerの設定が保存されます。

設定後は下記のコマンドを使ってGemをインストールすると、指定したvendor/bundleディレクトリにGemが保存されます。これにより、プロジェクトごとに依存するGemをローカルディレクトリで管理することが可能になります。

正常に設定が行われたかどうかを確認してください。

cat .bundle/config

下記が表示されると、設定が正常に反映されていることを示しています。

実行せずにbundle installを行った場合、BundlerはGemをRubyGemsがデフォルトで指定する場所(システム全体のGemのインストールディレクトリ)にインストールします。

プロジェクトの依存関係をインストールしてください。

bundle install

ちなみに、下記の--path vendor/bundleを使用する方法は非推奨になりました。

bundle install --path vendor/bundle

実行すると非推奨の表示が出ると思います。

[DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag

プロジェクトの新規作成

bundle execを使って、Bundler経由でrailsコマンドを実行します。

bundle exec rails new .

下記のように直接rails newコマンドを実行した場合は、システムにインストールされたRailsを探して実行しています。

rails new .

Gemfileが既に存在しており、上書きするかどうかを確認されると思うので、Enterを押してください。

Overwrite /Users/ユーザー名/.../Gemfile? (enter "h"Overwrite /Users/ユーザー名/.../Gemfile?  (enter "h"
 for help) [Ynaqdhm]

bundle execコマンド

bundle execコマンドを実行すると、BundlerはプロジェクトのGemfile.lockを基に正確なgemのバージョンを利用してコマンドを実行します。これにより、プロジェクト内の依存関係が適切に管理され、一貫した環境でコマンドが実行されることが保証されます。

bundle execを使用しない場合、Rubyが誤ってシステムのグローバルgemを使用してしまう可能性があります。これにより、非互換性や実行時エラーが発生するリスクがあります。

[Ynaqdhm]

コマンドを実行した際に既存のファイルをどのように扱うかを選択するためのオプションの略です。

.gitignore

プロジェクト作成後、.gitignoreに下記を追加してください。

BundlerがインストールしたGem(ライブラリ)のファイルやディレクトリがこの場所に格納されるため、これらをGitの管理外に置くことで、プロジェクトのリポジトリを軽量化し、不必要なファイルを含まないようにします。

.gitignore
# Ignore bundler gems.
/vendor/bundle

# Ignore the specific database config file.
/config/database.yml

# Ignore application's specific configuration file
/config/credentials.yml.enc

Railsサーバーの起動

Railsサーバーを起動し、ブラウザで確認します。

bundle exec rails server

無事にサーバーが起動しました。

http://127.0.0.1:3000http://localhost:3000/)
にアクセスして、デフォルトのRailsページが表示されるか確認してください。

Railsサーバーが起動できない場合

Railsサーバーを起動し、ブラウザで確認しようとすると、

bundle exec rails server

下記が表示され、サーバーが起動できませんでした。

Webpacker configuration file not found /Users/ユーザー名/.../config/webpacker.yml. Please run rails webpacker
Error: No such file or directory @ rb_sysopen - /Users/ユーザー名/.../config/webpacker.yml (RuntimeError)

この問題を解決するには、Webpackerのインストールを行う必要があります。
https://railsguides.jp/webpacker.html

以下のコマンドを実行して、Webpackerをインストールしてください。

bundle exec rails webpacker:install

yarnがインストールされてない下記のように表示されました。

Yarn not installed. Please download and install

yarnをインストールします。

brew install yarn

yarnのインストールが完了したら、再度Webpackerをインストールしてみてください。

bundle exec rails webpacker:install

無事にWebpackerをインストールすることができました。

サーバーが起動するか確認してください。

bundle exec rails server

https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0

bundler: failed to load command: rails

bundle exec rails newでrailsのプロジェクトを作成しようとした際に表示されました。
https://qiita.com/chabudai/items/4051c21ca9161a301bfb

bundle install実行時にtzinfo-dataの警告が表示される

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.

https://qiita.com/tatama/items/3f0f5e42cb5f75b53817

bunldle updateでもうまくいくようです。
https://zenn.dev/isaka102/scraps/eb33258a55eeb4

終わりに

何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉

Discussion