rails-logo

[ Rails ]seeds.rbの流し込みで、開発環境によって条件分岐したい

 

こんにちは、たなかです。
普段はRails使って開発したりしなかったりします。

rails db:seedでダミーデータを流し込む時、自身の開発環境に合わせて振り分けたいなと思い、方法を調査したので備忘録的に残しておきます。

 

自分の開発環境を確認

ターミナルから”rails c”でコンソールを立ち上げます。

コンソールモードで”Rails.env”を入力

[1] pry(main)> Rails.env
 => "development"

開発環境がちゃんとdevelopmentになってることを確認できました。

seeds.rbで条件分岐する

developmentで決め打ちの場合

特に開発環境を細分化せず、productionとdevelopmentのみということであれば、seedファイルの頭に以下をつけて、if文の中に内容を記載していくのみです。

if Rails.env == 'development'

 

複数の開発モードの場合

例えば開発モードが細かく別れていて、development以外にもlocal, testなど複数環境がある場合、それはそれでseed出し分けたかったりします。

そんな時は以下で条件つけるとよいかもです。

if Rails.env.in?(['development', 'local', 'test'])

in?メソッドは配列の中に該当する要素が入っているかを調べることができます。

if Rails.env == 'development' || 'local' || 'test'
と、かつ(||)で繋いでもよいですが、in?の方が可読性高い気がしますね。
ここは多分お好みで大丈夫です。

まとめ

ということでseedファイル流し込み時の条件分岐についてでした。
初学時にはあんまり開発モードって意識できてなかったよなーと思い出したので、railsビギナーの参考になったら嬉しいです。

スポンサードリンク