Ruby
Rails

Ruby on Railsで定数の指定

More than 1 year has passed since last update.

Railsで定数の指定方法は複数あります。


ApplicationControllerに書く

これだとコントローラ同士で有効になります。

ApplicationCotnroller < ActionController::Base

NUM = 1
...
end

別なコントローラでもつかえる。

BookController < ApplicationController  

def read
## ここに定数いれる
@number = NUM
end
end


config/initializers/constants.rbで宣言

module Constants

## Constants::NUMでアクセスできる
NUM = 1
end

## こっちはTITLEでアクセスできる
TITLE = 'Story Of The Ring'


ProductionとDevelopmentで分ける

自分はconstants.rbに書いたうえで、

if Rails.env == "production"

## 本番の定数
else
## 開発の定数
end


SettingsLogic

最近は主にSettingsLogicを使ってます。このGem大好き。Rails5にも対応してます。

https://github.com/binarylogic/settingslogic

class Settings < Settingslogic

source "#{Rails.root}/config/application.yml"
namespace Rails.env
end

initializeの下にこう書いてから、configの下にapplication.ymlとかを用意します。

# config/application.yml

defaults: &defaults
artist:
band: Oasis
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults

とかやるとこんな感じでアクセスできます。

Ruby

Settings.artist.band


Oasis


おためしあれん。