旧ブログ(ISSEN)から移行しました

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

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

西原月熙
西原月熙3分で読めます

はじめに

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

定数って何?

定数とは?

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

定数の使い方

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

定数の使い方
PI = 3.14159
# 半径10の円の円周
puts 2 * 10 * PI

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

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

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

gem「config」の使い方

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

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の環境ごとに上書きするための定数です!

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

config/settings.yml
math:
  pi: 3.14159

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

yamlファイルの書き方やと特徴 - Qiita

はじめに 現在Railsを勉強中です。 アプリケーションを作成する上で、モデルやカラム、その他メッセージ等を日本語で出力したり扱いたい場面が必ずあると思います。自分の場合、すぐに忘れてしまうためその都度ググって、書き方合ってたかを確認しています。 ぶっちゃけYAMLファイ...

qiita.com

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

app/controllers/hoge_controller.rb
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」はアプリケーションを使う上でほぼ必須だと思っているので、ぜひ取り入れてみてください!

GitHub - rubyconfig/config: Easiest way to add multi-environment yaml settings to Rails, Sinatra, Padrino and other Ruby projects.

Easiest way to add multi-environment yaml settings to Rails, Sinatra, Padrino and other Ruby projects. - rubyconfig/config

github.com

この記事を書いた人

西原月熙
西原月熙

TOKOSのテックリード。上流工程からコーディング、インフラ系まで色々やっている器用貧乏です。最近は特にフロントエンドのキャッチアップに力を入れています💪 好きな音楽はボーカロイドです🤖