Rails で、環境によって分岐するコードの書き方です。 環境によって出力を変更できれば開発環境のときのみ画面に説明を表示することも可能です。
環境を判別する方法
Rails.env.development?
, Rails.env.production?
が true
/false
を返すので、それで判定します。
1 2 3 |
if Rails.env.development? // what you want to do end |
Rails.env
とはなんなのか
Rails.env
は String
ではなく、 String
を継承したActiveSupport::StringInquirer
です。 StringInquirer
は次のように使えます。
1 2 3 |
vehicle = ActiveSupport::StringInquirer.new('car') vehicle.car? # => true vehicle.bike? # => false |
ところでこの StringInquirer
のメソッドはどのように実装されているのでしょうか。
こちらが 時点での ActiveSupport::StringInquirer
(master branch) です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# frozen_string_literal: true module ActiveSupport class StringInquirer < String private def respond_to_missing?(method_name, include_private = false) (method_name[-1] == "?") || super end def method_missing(method_name, *arguments) if method_name[-1] == "?" self == method_name[0..-2] else super end end end end |
ActiveSupport::StringInquirer
はString
に細工をしたものだということがわかります。 ここから、 String
のもつメソッドはすべて使えることもわかります。