マジックナンバーをSettingsLogicを使ってまとめて定数化する
技術系YouTuberの勝又さんのサロンに私も入っているのですが、 そこで初学者向けに「マジックナンバーは定数化した方がいいよ!」という話が出ていたので、 調べてみて、実装してみました。
マジックナンバーとは
「マジックナンバー」とはまずなんなのかと思い、ググったところ、 以下の記事が勉強になりました。
まとめると
「実装した本人以外がソースをみたときに、 その数値がなんの為に使われているのかが分からない数字」
がマジックナンバーとなるようですね。
enumとかでやっていることが、マジックナンバーの定数化というところでしょうか。
SettingLogic
configというgemもあるようですが、環境ごとにファイルを作成するみたいで、 今回の実装では、マジックナンバーをただ定数化したいだけで (なら直書きで定数を定義した方がいい気もしますが、) そんなに多くもないので、 SettingsLoigicを使って管理したいと思います。
# Gemfile gem 'settingslogic'
bundle install
公式に設定ファイルはapp/models/settings.rb
に書くべしとあったので、
# app/models/settings.rb class Settings < Settingslogic config_source = Rails.root / 'config' / 'application.yml' source config_source.to_path namespace Rails.env end
あとはconfig/application.yml
に定数を定義していきます。
# config/application.yml defaults: &defaults page: 10 post: long_name: 8 long_description: 12 ogp: base_image_path: './app/assets/images/base.png' gravity: 'center' text_position: '0,0' font: './app/assets/fonts/ipag.ttf' font_size: 30 idention_count: 8 row_limit: 8 development: <<: *defaults test: <<: *defaults production: <<: *defaults
マジックナンバー以外にも定数として使用していたものをまとめて定義しておきました。
以上でマジックナンバー等をまとめて定数化することができました。