【Rails】定数とは? 定数を扱うgemの紹介まで【初学者向け】

Ruby on Rails

はじめに

こんにちは、株式会社TOKOSのツキヤです!
今回は、経験者にとっては当たり前ですが、初学者は最初は戸惑う「定数」について解説します!
また、Railsで定数を扱う際のgem “config” の解説もします😎

定数って何?

定数とは?

「定数」とは読んで字のごとく、変わらない(定まった) 数(値) のことです!
例えば、「円周率」は約3.14159という数値で、これは変わることがありません。このような値のことです😎

定数の使い方

このような値を実際のコードで書くと以下のような感じになります!

PI = 3.14159
# 半径10の円の円周
puts 2 * 10 * PI 

ポイントしては、全て大文字にすることです。また、変数名を複数単語で表すならそれぞれの単語の間をアンダースコアでつなげます! (ex: CIRCLE_NAME)

変数として用意しておく理由は、他の箇所で使い回せるからですね。
例えば上記の PI は、他の色々な箇所で使いそうですよね。なので予め変数にしておいて使い回せるようにします。

ただ、Railsで同じ定数を色々なファイルで扱うには少々工夫が要ります🙄
そこで、以下で解説する”config”を使っていきます!

gem “config” の使い方

それでは、config の使い方を解説していきます!
まずはGemfileです!

gem "config"

からの $ bundle install でインストール完了です💪

次に、設定ファイルを $ rails g config:install コマンドで生成します!
これで、config/settings.yml, config/settings/development.yml, config/settings/test.yml, config/settings/production.yml の4ファイルができているはずです😎
一旦 config/settings.yml のみにフォーカスします!

ツキヤ
ツキヤ

他の3ファイルはRailsの環境ごとに上書きされるようの定数です!

それではいよいよ定数を記述していきます!

math:
  pi: 3.14159

この記述で準備OKです!
.ymlなので、YAMLファイルの書き方に合わせて下さい。書き方は下記サイトを参考にしてみてください!

あとは使いたい箇所、例えばcontrollerに下記のように書くことで定数を呼び出すことができます💪

class HogeController < ApplicationController
# ...
  # 受け取ったパラメータに円周率をかける
  def calc
    @answer = params[:radius].to_i * Settings.math.pi
  end
# ...
end

Settings.math.pi のように、 Settings からはじめて、あとはsettings.ymlファイルのネストの順にドットつなぎにするだけです!

先程は、定数は大文字とアンダースコアで書いて欲しいと言ったのですが、このgemを使う時は慣例的に全て小文字でOKです!

このように定数を1つのファイルで宣言することで、定数一覧を見たい時はそのファイルを確認するだけで良くなり、管理がラクになります✨
また、定数の変更が合った時も1箇所を修正するだけで良くなるので、変更にも強くなりますね😎

終わりに

今回は、定数の簡単な説明と、Railsでよく使うgemの紹介をしました。
個人的にはこの”config”はアプリケーションを使う上でほぼ必須だと思っているので、ぜひ取り入れてみて下さい!