Ruby on Railsを使った開発環境の構築(プロジェクト作成〜サーバー起動)
Rubyがインストールされていることを確認
MacOSではRubyは標準でインストールされています。そのため今すぐにRubyを使うことが可能です。
Rubyがインストールされていることを確認してみましょう。
ruby -v
公式サイトで最新版を確認することができます。
RubyGemsとは
RubyGemsとは、Rubyのパッケージ管理システムであり、Rubyのライブラリやアプリケーションを管理・インストールするためのツールです。macOSにはRubyGemsが最初からインストールされています。
RubyGemsのバージョンを確認する
gem -v
Gemfileの作成
Railsをシステムにインストールしていない場合:初期化コマンドを実施すると、ディレクトリに下にGemfile
というプロジェクトで必要なGemを管理するためのファイルが自動生成されます。
bundle init
Gemfileの編集
すでに記述されている内容を下記に変更してください。
source 'https://rubygems.org'
gem 'rails', '~> 6.1.7'
Railsとは
Rubyで開発されたフレームワークでモデルビューコントローラー(MVC)アーキテクチャを採用しています。
ライブラリのインストール
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の管理外に置くことで、プロジェクトのリポジトリを軽量化し、不必要なファイルを含まないようにします。
# 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:3000 (http://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のインストールを行う必要があります。
以下のコマンドを実行して、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
bundler: failed to load command: rails
bundle exec rails new
でrailsのプロジェクトを作成しようとした際に表示されました。
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`.
bunldle update
でもうまくいくようです。
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion