TOP > カテゴリ > Ruby・Ruby on Rails >

Rails6プロジェクトの各種初期設定

目次

1. プロジェクトの生成
2. データベースの設定
3. ユーザー/データベースの生成
4. モデル/コントローラー/ビューの生成
5. マイグレーション
6. Slimの導入、erbからslimファイルへ変換
7. Bootstrapの導入
8. 日本語、タイムゾーンの設定
9. 開発環境ではHTMLの改行、空白の削除を行わない
10. ransack(検索機能)の導入
11. kaminari(ページネーション)の導入
12. Productionモードの起動/設定
13. 本番環境でのrailsファイルのパーミッション
14. 本番環境のUnicorn/Pumaサーバーの設定
15. その他

1. プロジェクトの生成

次の例ではmyappプロジェクトを生成します。データベースは「MySQL」(MariaDB)を使用。Turbolinks、Action Mailer、テスト関連は未使用です。

cd ~/
mkdir myapp
cd myapp

rails new . --skip-turbolinks --skip-action-mailer --skip-test -d mysql 

--skip-turbolinks Turbolinks関連のファイルを作成しない
--skip-action-mailerAction Mailer関連のファイルを作成しない
--skip-testテスト関連のファイルを作成しない
-dデータベースを指定する
※mysql/postgresql/sqlite3/oracleなど

その他のnewコマンドの詳細は--helpで確認可能です。

rails new --help

2. データベースの設定

開発用(development)、本番用(production)の「database、username、password」を設定する。必要があればテスト用(test)も設定する。

[config/database.yml]

development:
  <<: *default
  database: myapp_development
  username: myapp_development
  password: 1234567890  

この例ではデータベース名とユーザー名を同一にしています。Gitなどのリポジトリを利用しない及びセキュリティ的に問題ないと判断できる場合は、productionのパスワードも環境変数を経由しなくて「ベタ書き」でも良いかも知れません。

データベースの設定以外にも「socket」は本番と開発環境で異なる場合がありますので注意して下さい。

次のコマンドで確認可能です。

mysql_config --socket

[例]

本番用socket: /var/lib/mysql/mysql.sock
開発用socket: /var/run/mysqld/mysqld.sock

3. ユーザー/データベースの生成

// MySQL(MariaDB)にログインする
mysql -u root -p

// ユーザーの作成
CREATE USER 'ユーザー名' IDENTIFIED BY 'パスワード';
 
// データベースの作成
CREATE DATABASE myapp_development;
 
// ユーザーにデータベース(myapp_development)の権限を付与する
GRANT ALL PRIVILEGES ON myapp_development.* TO 'ユーザー名';

4. モデル/コントローラー/ビューの生成

// モデルの作成(モデル/マイグレーションファイルの生成)
bin/rails g model Cat name:string description:text
 
// マイグレーションの実行(テーブルの生成)
bin/rails db:migrate
※catsテーブルが生成される
 
// コントローラー/ビューの作成(ファイルの生成)
bin/rails g controller cats index show new edit
 
// Pumaサーバの起動
bin/rails s
※ブラウザでhttp://localhost:3000/cats/indexにアクセスする
※ルーター(URL)の設定はconfig/routes.rbで設定する

5. マイグレーション

// マイグレーションファイルの生成
bin/rails g migration 任意の名称
// マイグレーションの実行(最新まで適用)
bin/rails db:migrate
※各テーブルの最終的な構成はdb/schema.rbで確認可能。

6. Slimの導入、erbからslimファイルへ変換

// Gemfileに以下を追加してbundleする
gem 'slim-rails'
gem 'html2slim'
  
// erbからslimへ変換
bundle exec erb2slim app/views/layouts/
bundle exec erb2slim app/views/cats/
※*.erbファイルが残りますので手動で削除します。

7. Bootstrapの導入

// Gemfileに以下を追加してbundleする
gem 'bootstrap'

// 手動で削除
app/assets/stylesheets/application.css
// 手動で作成
app/assets/stylesheets/application.scss

application.scssに
@import "bootstrap"
を記述する

8. 日本語、タイムゾーンの設定

// 次のja.ymlファイルをconfig/locales/ja.ymlに設置する
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

// config/initializersにlocale.rbを作成して次のコードを記述する
Rails.application.config.i18n.default_locale = :ja

// config/application.rbに次のコードを追記する
class Application < Rails::Application
  ・・・省略 ・・・
  
  config.time_zone = 'Asia/Tokyo'
  config.i18n.default_locale = :ja   
end

9. 開発環境ではHTMLの改行、空白の削除を行わない

// config/environments/development.rbに次の行を追記します。
Slim::Engine.options[:pretty] = true

10. ransack(検索機能)の導入

[ransackの使用例]

[ransackの導入]

// Gemfileに以下を追加してbundleする
gem 'ransack'

11. kaminari(ページネーション)の導入

[kaminariの使用例]

[kaminariの導入]

// Gemfileに以下を追加してbundleする
gem 'kaminari'

// デザインをBootstrap4にする
bin/rails g kaminari:views bootstrap4

[config/locales/kaminari.ja.yml] ※日本語対応ファイル

ja:
  views:
    pagination:
      first: "&laquo; 最初"
      last: "最後 &raquo;"
      previous: "&lsaquo; 前"
      next: "次 &rsaquo;"
      truncate: "&hellip;"
  helpers:
    page_entries_info:
      one_page:
        display_entries:
          zero: "%{entry_name}がありません。"
          one: "1件の%{entry_name}が表示されています。"
          other: "%{count}件の%{entry_name}が表示されています。"
      more_pages:
        display_entries: "全%{total}件中 %{first}&nbsp;-&nbsp;%{last}件の%{entry_name}が表示されています。"

(参考元)現場で使える Ruby on Rails 5速習実践ガイド

※その他の日本語形式は「kaminari.ja.yml」をネットで検索。

[kaminariのコード例]

// コントローラー
@q = User.all.order(updated_at: "DESC").ransack(params[:q])   
@cats = @q.result(distinct: true).page(params[:page]).per(25) 

// ビュー
.mb-3
  = paginate @cats
  = page_entries_info @cats
  
- @cats.each_with_index do |cat, i|
  p = cat.name

12. Productionモードの起動/設定

12-1. Productionモードで起動する

bin/rails s -e production

12-2. セキュアCookieを使用する

[config/environments/production.rb] 
config.force_ssl = true

12-3. ログの出力レベルを警告以上にする

[config/environments/production.rb]
config.log_level = :warn

Railsのログファイルはlog/production.logです。デフォルトの「:debug」だと全てのログが記録されます。1日30,000PVだと70MBぐらい、1か月で2.1GB、1年で25.2GBのファイルサイズになります。警告以上推奨。

12-4. CSSファイルを圧縮する

[environments/development.rb]
config.assets.css_compressor = :sass

12-5. CSS/JSファイルをプリコンパイルする

bin/rails assets:precompile

※JSファイルはwebpackerが自動的に圧縮します。

12-6. publicのファイルにアクセスできるようにする

[config/environments/production.rb]
config.action_controller.asset_host = 'http://www.example.com'
config.public_file_server.enabled = true

12-7. デプロイ前にログを削除する

log/development.log / production.logファイルの内容を空にする。

12-8. デプロイ前にキャッシュ(tmp/cache)を削除する

bin/rails tmp:clear  

13. 本番環境でのrailsファイルのパーミッション

bin/railsファイルに実行権限(X)を付与する。

14. 本番環境のUnicorn/Pumaサーバーの設定

次の記事を参照。

Nginx/Unicorn/Ruby on Railsの本番環境構築/デプロイ
Nginx + Unicornで複数のRailsプロジェクトを実行する
Nginx + Pumaで複数のRailsプロジェクトを実行する
Puma/Unicornのメモリ大量消費を回避する [Ruby + jemalloc]

15. その他

Capistrano(カピストラーノ)などは各自で調査。





掲示板

ソフトウェア、ハードウェアのプログラミング用の掲示板を作成しました。質問やわからない事は@掲示板でユーザー同士で情報を共有して下さい。

関連記事



公開日:2019年11月01日
記事NO:02799