学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails

Ruby on Rails 6.0によるWebアプリケーション開発08 Webサーバ(Puma)の起動

<<前  [TOP]  次>>


まずはサンプルのアプリケーションを作成してみます。
コマンドプロンプトで作業フォルダ「C:\Rails6\work」に移動し、「rails new sample -d mysql」と入力します。
「-d」オプションを指定することで使用するデータベースを選択できます。

「sample」アプリケーションの作成
「sample」アプリケーションの作成


「Webpacker successfully installed」とでたら成功です。
「sample」アプリケーション作成成功
「sample」アプリケーション作成成功


コマンドプロンプトで作業フォルダ「work」に作成された「sample」フォルダに移動し、「dir」コマンドで中身を見てみましょう。
「sample」フォルダの内容確認
「sample」フォルダの内容確認


全部で12個のファイルと14個のディレクトリが出来ているのを確認できます。
「sample」フォルダの内容確認
「sample」フォルダの内容確認


コマンドプロンプトで「bin」フォルダに移動し、「rails about」と入力してみましょう。
Ruby、RubyGems、Rails、Railsののバージョン、Railsアプリケーションのフォルダ名、現在のRailsの環境名とデータベースアダプター、スキーマのバージョンが表示されます。
「rails about」
「rails about」


Railsのバージョンは「6.0.1」をインストールしたはずなのですが、なぜか「6.0.2.2」とバージョンが上がっています。
どのタイミングでアップデートされたのか謎ですが、問題なさそうなのでこのまま進めていきます。
バージョン「6.0.2.2」
バージョン「6.0.2.2」


次にサンプル用のデータベースを作成します。
今回はサンプルのアプリケーションなので開発用データベース「sample_development」のみを作成します。
詳しくは実際にアプリケーションを開発していく段階で説明します。


コマンドプロンプトで「sample」フォルダに入って「mysql -u root -p」と入力します。
そうするとMySQLのインストール時に入力したルート(root)パスワードを聞いてきますので入力して下さい。
これでMySQLにログイン出来ます。
MySQLにログイン
MySQLにログイン


データベースの作成には「create database」を使用します。
例えば「create database sample_development;」とすると、「sample_development」データベースがMySQLに作成されます。
最後のセミコロン(;)を忘れないようにして下さい。
同時に「default character set utf8」として日本語文字コードの指定を行います。
このようにデータベース作成時に文字コードを指定しないと文字化けが起こります。


以下のコマンドで「sample_development」データベースを作成します。
create database sample_development default character set utf8;
「sample_development」データベースの作成
「sample_development」データベースの作成


ユーザを作成します。
ユーザの作成には「create user」コマンドを使います。
create user rails@'localhost' identified by 'rails';


ここで「localhost」の部分を「%」にすると、別のネットワークPCからのデータベースアクセスが可能になります。
「identified by」ではパスワードを設定できます。
例えば「create user rails@'localhost' identified by 'administrator';」とするとユーザ名が「rails」、パスワードが「administrator」で「localhost」からのアクセス権限を与えています。


では「create user rails@'localhost' identified by 'rails';」と入力して「rails」ユーザーを作成してみます。
ユーザ名が「rails」、パスワードも「rails」となります。
ユーザーの作成
ユーザーの作成


データベースにユーザ権限を与えます。
権限を与えるには「grant all」を使用します。
例えば「grant all on sample_development.* to 'rails'@'localhost';」としたら、ユーザ名がrails、ホストがlocalhostでアクセスしてきたものにすべての権限を与えるという意味になります。
ここでlocalhostの部分を「%」にすると、別のネットワークPCからのデータベースアクセスが可能になります。
今回は1台のPCのみで開発することを想定して「localhost」とします。
以下のコマンドを実行します。
grant all on sample_development.* to 'rails'@'localhost';
ユーザー権限の付与
ユーザー権限の付与


「exit;」と入力してMySQLを抜けます。
MySQLの終了
MySQLの終了


Railsとデータベースを接続するためには、データベースの権限を設定した情報をRailsに知らせる必要があります。
データベースの接続情報は「sample」フォルダの「config」フォルダにある「database.yml」に記述します。


デフォルトの「database.yml」ファイルは以下のようになっています(コメント以外を抜粋)。
【sample/config/database.yml】

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: 
  host: localhost

development:
  <<: *default
  database: sample_development

test:
  <<: *default
  database: sample_test

production:
  <<: *default
  database: sample_production
  username: sample
  password: <%= ENV['SAMPLE_DATABASE_PASSWORD'] %>



大きく「開発」「テスト」「本番」の3つに分かれています。
それぞれの項目について説明します。

  • adapter: 使用しているデータベースドライバ名。今回はmysql2。
  • encoding: 使用する文字コード。今回は「utf8」
  • pool: 同時接続数(デフォルトは5)
  • database: 使用するデータベース名。
  • username: 接続するユーザ名。
  • password: 接続するために必要なパスワード。
  • host: データベースのホスト。


    これを以下のように書き換えます。
    「default」の「username」を「rails」、「 password」も「rails」にしています。

    default: &default
      adapter: mysql2
      encoding: utf8mb4
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: rails
      password: rails
      host: localhost
    
    development:
      <<: *default
      database: sample_development
    
    test:
      <<: *default
      database: sample_test
    
    production:
      <<: *default
      database: sample_production
      username: sample
      password: <%= ENV['SAMPLE_DATABASE_PASSWORD'] %>



    ではWebサーバ「Puma」を起動します。
    Pumaを起動するにはコマンドプロンプトで「bin」フォルダに移動し、「rails server」と入力します。

    Webサーバ「Puma」の起動
    Webサーバ「Puma」の起動


    ブラウザのアドレスバーに「http://localhost:3000/」と入力してください。
    下のような画像が表示されれば成功です。
    Puma起動成功
    Puma起動成功


    <<前  [TOP]  次>>