SPA開発 7. Userモデル開発 #01
2019年10月03日に更新

本番環境と開発環境でRailsのSeedデータを切り替える

今回達成すること

モデル開発を行う下準備として、Railsのseedデータ周りのセッティングを行います。

この設定により、本場環境と開発環境で流し込むseedデータを簡単に切り替えることができます。

最終的なディレクトリ構成

最終的にディレクトリは以下のようになります。

Railsプロジェクト名
 L db
  L migrate
  L seeds				<< ここ以下、今回作成するディレクトリ
   L csv_files
   L development
   L production

各ディレクトリの作成

まず、各ディレクトリを作成します。

Atomエディタの場合、「shift」 + 「a」キーボードでディレクトリの新規作成ができます。

seedsディレクトリの作成

Railsプロジェクトルートディレクトリの直下の「db」ディレクトリに、「seeds」ディレクトリを作成します。

seeds.rbと同じ階層になります。

開発環境用のseedファイルを格納するディレクトリの作成

先ほど作成した「seeds」ディレクトリ内に「development」ディレクトリを作成します。

本番環境用のseedファイルを格納するディレクトリの作成

先ほど作成した「seeds」ディレクトリ内に「production」ディレクトリを作成します。

CSVファイルを格納するディレクトリの作成

先ほど作成した「seeds」ディレクトリ内に「csv_files」ディレクトリを作成します。

seeds.rbを編集する

Railsが読み込むseedファイルを、環境ごとにディレクトリ単位で切り替えを行う設定をしていきます。

「db」ディレクトリ直下にあるseeds.rbを以下の様に編集します。

seeds.rb
table_names = %w(
  
)

table_names.each do |table_name|
  environment = (Rails.env == "test") ? "development" : Rails.env

  path = Rails.root.join("db/seeds", environment, table_name + ".rb")
  if File.exist?(path)
    puts "#{table_name}..."
    require path
  end
end

コードのポイント

  • table_names

    %wは、空白で区切った文字列を配列に変換するrubyのコードです。

    作成した配列をeachでループしています。

  • Rails.env

    現在の環境を読み取りtestdevelopmentproductionの3つの文字列のいずれかを返します。

  • path

    Rails.envの文字列とtable_nameの文字列を結合し、ファイルpathとして渡します。

    上記の場合、environmentという変数の中に、Rails.envの値が格納されています。

まとめ

このseeds.rbのコードにより

  • テスト環境、開発環境の時には、developmentディレクトリ内のファイルが、
  • 本番環境の時には、productionディレクトリ内のファイルが

読み込まれるようになります。

これでディレクトリ単位でseedデータを切り替えることができるようになりました。

gitにpushしておきましょう。

$ git add -A
$ git commit -m "seed_data_settings"
$ git push

次回予告

やっとモデル開発の準備が整いました。

次回はuserモデルの開発をしていきます。

参考

↓この本まじで良きです。

改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES) | 黒田 努

現在、カテゴリー「Rails apiとNuxt.jsでSPA開発」のデモアプリを構築中です。記事になるまでもう少々のお時間が必要です。ブログの更新が止まって申し訳ありません。デモアプリの進捗状況は こちらの記事 で随時お伝えしてまいります。
スポンサー広告
次の記事はこちらです
SPA開発
今日のTweet
スポンサー広告