Rails Ambassador

Railsアプリの作成

railsアプリの作成を学習します。 基本コマンドと作成されるフォルダ、オプションを理解しておきましょう。

[rails new] 新規Railsプロジェクト作成

rails アプリの作成を学習します。 以下が最も基本的なアプリ作成コマンドになります。 コマンドを実行すると規約に沿って沢山のファイルが自動生成され、アプリケーションのひな形が作成されます。 この時に作成されるGemfileの内容を元にGemとよばれるライブラリも同時にインストールされます。

 
$ rails new アプリ名  [オプション]
 

様々なオプションがありますが、以下コマンドでrails newのオプション一覧を確認できます。

 
$ rails new -h 
 

では今回使う代表的なオプションを見てみましょう。

オプション 仕様例 役割
-d --database=DATABASE名 データベースを指定
-B --skip-bundle bundle installを行わない
-T --skip-test testファイルを作成しない
-O --skip-active-storage active storageの機能を使用しない
-C --skip-action-cable action cableの機能を使用しない

今回はtest環境を作成しない、Gemのインストールを行わない、active storageの機能を使用せずデータベースはPostgreSQLを使用するオプションをつけてアプリケーションのひな形を作成します。「--database」は「-d」と省略することが可能です。 testAというアプリ名で作成してみましょう。

  
$ rails new testA -d=postgresql -BTCO
  

これでインストールされている最新版のRailsバージョンでアプリのひな形が作成されます。 testAというフォルダが作成されていることを確認してください。 もしバージョンを指定したい場合は以下のようにします。今回は5.2.1を指定した場合の例です。 最初に指定のバージョンのRailsがインストールされているかを確認してください。

  
$ gem list rails
  

指定バージョンのRailsが入っていない場合は以下コマンドでインストールします。

  
$ gem install rails-v 5.2.1 
  

インストールが完了したら指定のバージョンでアプリを作成してみましょう。

  
$ rails _5.2.1_ new testB -d=postgresql -BTCO
  

指定バージョンでインストールが出来ているかを確認してみてください。

  
$ cd testB
$ rails -v

Rails 5.2.xと表示されたら成功です。
  

尚、5.2.1と5.2.4がインストールされている場合、5.2系の最新版である5.2.4がインストールされます。

誰でも投稿アプリの作成

それでは誰でも気軽に投稿できるアプリケーションを作って学習していきましょう。 bordという名前で新しいアプリを作成しますが、PostgreSQLデータベースを使っていきますので必ずオプション「--database=postgresql」をつけて作成してください。

RailsはSQLを意識しないで開発ができるように設計されているため、SQLの知識がほとんどなくても作ることができてしまいます。しかしSQLの知識は必須になりますのでSQLに自信のある方以外は面倒に思わず同じように進めてみてください。

$ rails new board  -d=postgresql -BTC

アプリが作成できましたらこのアプリのディレクトリに移動し。カレントディレクトリ(現在自分がいるフォルダ)も確認しましょう。
$ cd board
$ pwd
/xxx/xxxx/xxx/board

きちんとboardのディレクトリに移動できていれば問題ありません。

Tips!アプリ名は大文字小文字どちらでも良い

これから学習していく際に大文字と小文字は常に意識するようにしてください。 アプリ名の場合はどちらを使っても構いません。
また、アプリ名は予約語として登録されます。アプリ上で同じ名称のクラスなどは作成できなくなりますのでご注意ください。

[bundle install] ライブラリの追加

Railsアプリケーションの新規作成で 「--skip bundle」のオプションをつけたのを覚えていますか?こちらは「bundle install」コマンドを行わずアプリを作成するオプションです。 では「bundle install」とは何を行っているか理解しておきましょう。 まずプロジェクト直下にある「Gemfile」というファイルを開いてください。

  
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby "3.1.3"

# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 7.0.4"

# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
gem "sprockets-rails"

# Use the Puma web server [https://github.com/puma/puma]
gem "puma", "~> 5.0"

# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
gem "importmap-rails"

# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem "turbo-rails"

# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
gem "stimulus-rails"

# Build JSON APIs with ease [https://github.com/rails/jbuilder]
gem "jbuilder"

# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
# gem "kredis"

# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
# gem "bcrypt", "~> 3.1.7"

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]

# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", require: false

# Use Sass to process CSS
# gem "sassc-rails"

group :development, :test do
  # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
  gem "debug", platforms: %i[ mri mingw x64_mingw ]
end

group :development do
  # Use console on exceptions pages [https://github.com/rails/web-console]
  gem "web-console"

  # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
  # gem "rack-mini-profiler"

  # Speed up commands on slow machines / big apps [https://github.com/rails/spring]
  # gem "spring"
end
  

Gemというのはライブラリの事です。Rubyでは宝石(Gem)という名前で呼ばれています。 railsのバージョンによってデフォルトのgemが違う場合もありますが、こちらに書いてある内容がこのアプリケーションで使うものです。 作成するアプリケーションによって使うライブラリを追加しましょう。 記載されているGemをアプリにインストールするにはコマンドを実行します。

 
$ bundle install
 

このコマンドを実行するとGemfileに書いてあるGemがアプリにインストールされ使用できるようになります。 さらにGemfile.lockファイルの内容も書き換わります。このファイルを見ればどのバージョンのgemがインストールされているかを知ることができます。 尚、bundle installを実行するのは作成したrailsアプリケーションのディレクトリで行ってください。もし間違ったディレクトリで行った場合はエラーとなります。

  $ cd ..
$ bundle install
Could not locate Gemfile
  

Gemfileが見つからない旨のメッセージが出るはずです。 正しく実行されれば記載された各Gemがインストールされるでしょう。

  $ bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using rake 13.0.6
Using concurrent-ruby 1.1.10
Using mini_mime 1.1.2
Using builder 3.2.4
Using erubi 1.11.0
Using io-console 0.5.11
Using crass 1.0.6
Using rack 2.2.4
Using zeitwerk 2.6.6
Using websocket-extensions 0.1.5
Using i18n 1.12.0
Using reline 0.3.1
Using timeout 0.3.1
Using rack-test 2.0.2
Using msgpack 1.6.0
Using irb 1.5.1
Using net-protocol 0.2.0
Using method_source 1.0.0
Using nio4r 2.5.8
Using thor 1.2.1
Using marcel 1.0.2
Using tzinfo 2.0.5
Using minitest 5.16.3
Using bindex 0.8.1
Using sprockets 4.1.1
Using websocket-driver 0.7.5
Using bundler 2.3.26
Using racc 1.6.1
Using bootsnap 1.15.0
Using debug 1.7.0
Using net-imap 0.3.1
Using net-pop 0.1.2
Using net-smtp 0.3.3
Using puma 5.6.5
Using activesupport 7.0.4
Using mail 2.8.0
Using nokogiri 1.13.9 (x86_64-linux)
Using globalid 1.0.0
Using activemodel 7.0.4
Using rails-dom-testing 2.0.3
Using loofah 2.19.0
Using activejob 7.0.4
Using rails-html-sanitizer 1.4.3
Using activerecord 7.0.4
Using actionview 7.0.4
Using jbuilder 2.11.5
Using actionpack 7.0.4
Using actioncable 7.0.4
Using railties 7.0.4
Using actionmailer 7.0.4
Using sprockets-rails 3.4.2
Using stimulus-rails 1.2.1
Using web-console 4.2.0
Using importmap-rails 1.1.5
Using turbo-rails 1.3.2
Using activestorage 7.0.4
Using actionmailbox 7.0.4
Using actiontext 7.0.4
Using rails 7.0.4
Bundle complete! 11 Gemfile dependencies, 59 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

環境によって若干の違いがある可能性がありますが、このようにインストールが進み、確実にbundle installが行われたことを確認しておきましょう。 開発途中でGemを追加しようと思った場合はGemfileに記載し、都度bundle installを実行してください。