Rails で設定情報を保存する場合、ソースコード上に直に書いていく方法くらいしか知らなかったのですが、
YAML で設定情報を定義できることを知りました。
実現するためにconfiggem を使うようです。
こちらを使ってみます。
それでは本編です。
目次
参考
実行環境
- macOS Mojave 10.14.4
導入
前提条件
Rails アプリの作成をMacbook 上で rbenv を使って、Rails 環境を準備したら詰まったの手順に倣って進めておく。
config をインストール
Gemfile に config gem を書き足す。
1 | gem 'config' |
書き足したら、以下の通りコマンド実行。
1 | # パッケージインストール |
settings ディレクトリ以下は、実行環境に基づいて定義を読み込む設定ファイル。
設定してみる。
yaml に設定するような config ってなんだろうかと考えていたら、このブログの作成に使っている Hexo を思い出しました。
Web サイトのタイトルを yaml で設定してみます。
yaml を編集
config/settings.yml を以下のように編集します。
1 | title: Blogのタイトル(仮) |
view を編集
views/layouts/application.html.erb を編集します。<h1><%= Settings.blogtitle %></h1>
を追加します。
1 |
|
これらを準備してbundle exec rails s
で実行し、確認すると以下の表示が確認できます。
yaml に記述したBlogのタイトル(仮)
が、表示できていることが確認できました。
実行環境で値を変えてみる
今度は実行モードで、値を変えてみます。
まずは、yaml を編集。
yaml を編集
config/settings/development.yml と config/settings/test.yml を編集します。
1 | execmode: 現在developmentです |
1 | execmode: 現在productionです |
view を編集
views/layouts/application.html.erb を編集します。<h1><%= Settings.blogtitle %></h1>
を追加します。
1 |
|
動作確認
bundle exec rails s
で実行すると、表示は以下のようになります。
今度は、RAILS_SERVE_STATIC_FILES=true bundle exec rails s -e production
で実行します。
今回は nginx などの Web サーバーは用意しないのでRAILS_SERVE_STATIC_FILES=true
を与えて puma に CSS などを配信させます。
(production 用の DB の作成などは先にしておく)
Settings.execmode
で与えた部分の表示を実行モードで変えることができました。
開発環境でのパラメータ、本番でのパラメータというような切り替えが簡単にできます。
今回は、configを使って yaml で定義した値を扱ってみました。
データベースに持つほどではないけど、ある程度定数値を管理したいとか、今回みたいなブログのタイトルを view に直接書きたくない。
といった場合に活躍してくれそうです。
ではでは。