本番環境と開発環境でRailsのSeedデータを切り替える
  • 2019.08.19に公開
  • 2019.10.03に更新
  • SPA開発
  • 7. Userモデル開発
  • No.1 / 6
「SPA開発」では、Nuxt.js v2.14未満が使用されています。 Nuxt.jsはv2.13~14で大きなバージョンアップがありました。それに伴い、書き方も大きく変化しています。 v2.14以上で書かれた「SPA開発」の続編は、カテゴリー「 Udemy 」 で公開しています。

今回達成すること

モデル開発を行う下準備として、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) | 黒田 努

あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
SPA開発の投稿
1
  • 更新情報
  • /
  • #01
「Rails apiとNuxt.jsでSPA開発」のデモアプリを開発中...。【2020/05/19追記: このカテゴリーの更新を一旦終了といたします】
1
  • 今回作るアプリケーション
  • /
  • #01
Railsアプリの完成イメージ画像と作ろうと思った経緯
2
  • 今回作るアプリケーション
  • /
  • #02
今回作るRailsアプリの全体像と機能の整理
1
  • 開発環境を整える
  • /
  • #01
macにRailsをゼロからインストールする
2
  • 開発環境を整える
  • /
  • #02
Rails apiモードのプロジェクトを作成し、Gitにコミットする
3
  • 開発環境を整える
  • /
  • #03
Bitbucketに公開鍵を追加し、Railsプロジェクトをpushする
4
  • 開発環境を整える
  • /
  • #04
HerokuCLIのインストールとherokuアプリケーションの作成
1
  • RailsをHerokuにデプロイする
  • /
  • #01
Herokuのデータベース設定と開発に便利なgemを導入する
2
  • RailsをHerokuにデプロイする
  • /
  • #02
HerokuにPumaを導入するためのRailsセットアップ
3
  • RailsをHerokuにデプロイする
  • /
  • #03
Railsに"Hello"を表示してHerokuへデプロイする
1
  • RailsとNuxt.jsを共存させる
  • /
  • #01
【RailsとNuxt.jsの共存】Rails上にNuxt.jsのプロジェクトを構築しよう
2
  • RailsとNuxt.jsを共存させる
  • /
  • #02
Nuxt.jsからRailsへ、初めてのapi通信でHelloを表示しよう
3
  • RailsとNuxt.jsを共存させる
  • /
  • #03
Nuxt.jsにVuetify2.0を導入してFont Awesomeもインストールするぜ
4
  • RailsとNuxt.jsを共存させる
  • /
  • #04
初めてのRailsApiアプリの公開。Herokuにデプロイする準備と実際のデプロイまで
1
  • データベース設計
  • /
  • #01
データベースを正規化する前に、会計システムの勘定科目データを整理する
2
  • データベース設計
  • /
  • #02
会計システムのデータベース設計に挑む
1
  • バージョンアップ情報
  • /
  • #01
【ご報告】Nuxt.jsを2.10.2にバージョンアップしました
2
  • バージョンアップ情報
  • /
  • #02
【ご報告】Railsを6.0.0にバージョンアップしました
1
  • Userモデル開発
  • /
  • #01
本番環境と開発環境でRailsのSeedデータを切り替える
2
  • Userモデル開発
  • /
  • #02
Railsにユーザーテーブルを作成する【テーブル確認コマンド】
3
  • Userモデル開発
  • /
  • #03
【Rails】EachValidatorクラスを使ったEmailカスタムバリデーション【lib以下読み込み】
4
  • Userモデル開発
  • /
  • #04
【Rails】エラーメッセージの日本語化【i18nとja.ymlのセッティング】
5
  • Userモデル開発
  • /
  • #05
【Rails】開発・テスト・本番環境の全てにユーザーSeedデータ投入する
6
  • Userモデル開発
  • /
  • #06
【Rails】ユーザーモデルのバリデーションをテストする
1
  • ログイン周りのレイアウト設計
  • /
  • #01
【Nuxt.js】ログインフラグでレイアウトを切り替えるテクニック【2019/12/07追記あり】
2
  • ログイン周りのレイアウト設計
  • /
  • #02
【Nuxt.js】ウェルカムページのレイアウト構築【sassの導入】
3
  • ログイン周りのレイアウト設計
  • /
  • #03
【Nuxt.js】ログイン周りの入力フォームコンポーネント設計【2019/12/07追記あり】
4
  • ログイン周りのレイアウト設計
  • /
  • #04
【Nuxt.js】会員登録フォームを構築してサインアップページを完成させる
独学プログラマ
独学でも、ここまでできるってよ。
CONTACT
Nuxt.js制作のご依頼は下記メールアドレスまでお送りください。