Rails7アプリの新規作成方法

前提

書くこと/書かないこと

前の記事でインストールしたRuby3.1.2の環境を使ってRails7のアプリケーションを新規作成してみます。
Rubyのインストールまではこちらに記載しています。

環境

Ruby 3.1.2
rails 7.0.3.1

事前準備

Railsに必要なライブラリ等のインストール

Railsのインストールに先立ち、Railsで利用するsqlite3などをインストールしておきます。

# dnf install sqlite sqlite-devel

作業手順

アプリケーション用のルートフォルダの作成

アプリケーションをインストールしたいディレクトリに移動して任意のアプリケーション名でフォルダを作成します。

$ cd path-to-some-dir
$ mkdir rails7-app

bundleの初期化

先ほど作ったアプリケーションフォルダに入ってbundleを初期化します。

$ cd rails7-app
$ bundle init
Writing new Gemfile to /path-to-some-dir/rails7-app/Gemfile

これでアプリケーションフォルダ内にGemfileが作成されます。

Gemfileを開くと下記のように3行だけ記載された状態になっています。
今回はRailsの最新版をインストールしたいので最終行をコメントアウトして保存します。

# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"
# ↓ Railsの最新版をインストールするために変更
gem "rails"

bundle installの実行

bundle installコマンドを実行して、Railsをインストールします。
インストール前にbundle configを行ってGemをインストールするパスも指定しておきます。

$ bundle config set path 'vendor/bundle'
$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies....
Fetching rake 13.0.6
Installing rake 13.0.6
Fetching concurrent-ruby 1.1.10
Fetching minitest 5.16.3
Fetching erubi 1.11.0
Fetching builder 3.2.4
Installing erubi 1.11.0
Using racc 1.6.0
Fetching crass 1.0.6
Installing builder 3.2.4
Fetching rack 2.2.4
Installing concurrent-ruby 1.1.10
Installing minitest 5.16.3
Fetching nio4r 2.5.8
Installing crass 1.0.6
Fetching websocket-extensions 0.1.5
Fetching marcel 1.0.2
Installing rack 2.2.4
Installing websocket-extensions 0.1.5
Fetching mini_mime 1.1.2
Installing nio4r 2.5.8 with native extensions
Using digest 3.1.0
Fetching timeout 0.3.0
Installing marcel 1.0.2
Fetching strscan 3.0.4
Installing timeout 0.3.0
Installing mini_mime 1.1.2
Using bundler 2.3.7
Fetching method_source 1.0.0
Fetching thor 1.2.1
Installing strscan 3.0.4 with native extensions
Installing method_source 1.0.0
Fetching zeitwerk 2.6.0
Installing thor 1.2.1
Fetching nokogiri 1.13.8 (x86_64-linux)
Installing zeitwerk 2.6.0
Fetching i18n 1.12.0
Installing i18n 1.12.0
Fetching tzinfo 2.0.5
Installing nokogiri 1.13.8 (x86_64-linux)
Installing tzinfo 2.0.5
Fetching websocket-driver 0.7.5
Fetching rack-test 2.0.2
Installing websocket-driver 0.7.5 with native extensions
Installing rack-test 2.0.2
Fetching net-protocol 0.1.3
Fetching mail 2.7.1
Fetching activesupport 7.0.3.1
Installing net-protocol 0.1.3
Fetching loofah 2.18.0
Installing mail 2.7.1
Installing loofah 2.18.0
Fetching net-imap 0.2.3
Installing activesupport 7.0.3.1
Fetching net-pop 0.1.1
Installing net-imap 0.2.3
Fetching net-smtp 0.3.1
Fetching rails-html-sanitizer 1.4.3
Installing net-smtp 0.3.1
Fetching rails-dom-testing 2.0.3
Installing net-pop 0.1.1
Fetching globalid 1.0.0
Installing rails-html-sanitizer 1.4.3
Installing rails-dom-testing 2.0.3
Installing globalid 1.0.0
Fetching activemodel 7.0.3.1
Fetching activejob 7.0.3.1
Fetching actionview 7.0.3.1
Installing activejob 7.0.3.1
Installing activemodel 7.0.3.1
Installing actionview 7.0.3.1
Fetching activerecord 7.0.3.1
Fetching actionpack 7.0.3.1
Installing actionpack 7.0.3.1
Installing activerecord 7.0.3.1
Fetching railties 7.0.3.1
Fetching actioncable 7.0.3.1
Fetching actionmailer 7.0.3.1
Fetching activestorage 7.0.3.1
Installing railties 7.0.3.1
Installing actionmailer 7.0.3.1
Installing actioncable 7.0.3.1
Installing activestorage 7.0.3.1
Fetching actionmailbox 7.0.3.1
Fetching actiontext 7.0.3.1
Installing actionmailbox 7.0.3.1
Installing actiontext 7.0.3.1
Fetching rails 7.0.3.1
Installing rails 7.0.3.1
Bundle complete! 1 Gemfile dependency, 46 gems now installed.
Bundled gems are installed into `./vendor/bundle`

rails 7.0.3.1がインストールされました。
これでようやくRailsアプリを作る準備が完了しました。

画面の表示に従ってbash_profileの末尾に追記します。

Railsアプリケーションの作成

新規にRailsアプリを作るにはrails newします。アプリケーションフォルダは作成済みなので、カレントフォルダを指定します(長いので実行過程は適宜省略します)。

$ bundle exec rails new .
       exist  
      create  README.md
      create  Rakefile
   identical  .ruby-version
      create  config.ru
    conflict  .gitignore
Overwrite /path-to-some-dir/rails7-app/.gitignore? (enter "h" for help) [Ynaqdhm] y
       force  .gitignore
   identical  .gitattributes
    conflict  Gemfile
Overwrite /path-to-some-dir/rails7-app/Gemfile? (enter "h" for help) [Ynaqdhm] y
       force  Gemfile
         run  git init from "."
Reinitialized existing Git repository in /path-to-some-dir/rails7-app/.git/
      create  app
(中略)
Using rails 7.0.3.1
Fetching bootsnap 1.13.0
Installing bootsnap 1.13.0 with native extensions
Bundle complete! 15 Gemfile dependencies, 74 gems now installed.
Bundled gems are installed into `./vendor/bundle`
         run  bundle binstubs bundler
       rails  importmap:install
Add Importmap include tags in application layout
      insert  app/views/layouts/application.html.erb
Create application.js module as entrypoint
      create  app/javascript/application.js
Use vendor/javascript for downloaded pins
      create  vendor/javascript
      create  vendor/javascript/.keep
Ensure JavaScript files are in the Sprocket manifest
      append  app/assets/config/manifest.js
Configure importmap paths in config/importmap.rb
      create  config/importmap.rb
Copying binstub
      create  bin/importmap
       rails  turbo:install stimulus:install
Import Turbo
      append  app/javascript/application.js
Pin Turbo
      append  config/importmap.rb
/usr/bin/which: no redis-server in (/path-to-some-dir/rails7-app/vendor/bundle/ruby/3.1.0/bin:/home/alma/.rbenv/versions/3.1.2/bin:/home/alma/.rbenv/libexec:/home/alma/.rbenv/plugins/ruby-build/bin:/home/alma/.rbenv/shims:/home/alma/.rbenv/bin:/home/alma/.local/bin:/home/alma/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin)
Run turbo:install:redis to switch on Redis and use it in development for turbo streams
Create controllers directory
      create  app/javascript/controllers
      create  app/javascript/controllers/index.js
      create  app/javascript/controllers/application.js
      create  app/javascript/controllers/hello_controller.js
Import Stimulus controllers
      append  app/javascript/application.js
Pin Stimulus
Appending: pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true"
      append  config/importmap.rb
Appending: pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
      append  config/importmap.rb
Pin all controllers
Appending: pin_all_from "app/javascript/controllers", under: "controllers"
      append  config/importmap.rb

これでインストール出来ました。

起動確認

最後にRailsの起動確認を行います。

$ bundle exec rails s
=> Booting Puma
=> Rails 7.0.3.1 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 8416
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

エラーなくpumaが起動したのでブラウザを開いて"http://127.0.0.1:3000″にアクセスします。

これでOKです。