プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】「seedデータ」、「faker」
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「seedデータ」、「faker」

12.08

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

seedデータとは

初期データやテストデータのことで動作確認用データを登録する目的で行います。投入したいデータの件数が増えた場合にもこれさえあれば迅速に投入できる環境を構築することができます。

seedデータの投入方法

Railsには投入用機能があります。一度ソースコードを記述してしまえばdb/seeds.rbやrails db:seedコマンドにより投入することができます。下記のような感じで記述します。

1
2
3
モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX')
モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX')
モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX')

例:User.create(id: 1,name: 'tanaka',age: 23)

大量データを用意する場合

大量データを用意する場合は下記のように記述して記述の効率化を測ったりもします。(例では100件のデータを用意する場合)

1
2
3
  (1..100).each do |i|
    Board.create(name: "名前#{i}",age: "年齢#{i}")
  end

環境ごとに投入するデータを変えたい場合

例えば開発環境のみという形で環境ごとに投入するデータをフィルタしたい場合は下記の記述をします。誤ったデータの投入を防ぐことができたりします。

1
2
if Rails.env == 'development'
end

現実的には、「db/seeds」の下に「development」、「test」、「production」などとフォルダを切って分けると良いでしょう。

seedデータの投入

下記コマンドを実行します。

1
rake db:seed

dockerを使用している場合は下記になります。

1
docker-compose exec web bundle exec rake db:seed

それ以外にもデータを用意する方法

Railsにはseed以外にもSQLやマイグレーション、Factory Botや代替するGem等、様々なテストデータを準備するための仕組みが用意されているので状況に合わせて使いやすいものを利用するようにしましょう。

注意点

テストデータ自体は一度最初に用意してしまったら必要がなくなるためプロジェクトの中では放置されやすい分野になります。DB構造が変わることもあれば、データの持ち方が変わる可能性もあり後のメンバーのためにメンテナンスをしっかりしていくようにしましょう。

faker

ダミーデータを作れるGemです。

インストール

1
2
3
group :development do
  gem 'faker'
end

構文

1
Faker::[ジャンル].[タイトルなど]

どんなジャンルがあるか調べるには?

githubの以下のページに行けば一覧で使えるジャンルのクラスが記載してあります。

1
https://github.com/faker-ruby/faker

例

Movie

1
2
3
4
5
6
irb(main):003:0> Faker::Movie.title
=> "Star Wars: Episode II – Attack of the Clones"
irb(main):004:0> Faker::Movie.title
=> "The Intouchables"
irb(main):005:0> Faker::Movie.title
=> "Hotel Rwanda"

Pokemon

1
2
3
4
irb(main):017:0> Faker::Games::Pokemon.name
=> "Graveler"
irb(main):018:0> Faker::Games::Pokemon.name
=> "Nidorina"

Book

1
2
3
4
irb(main):027:0> Faker::Book.title
=> "Mother Night"
irb(main):028:0> Faker::Book.title
=> "All the King's Men"

日本語化

1
2
3
4
5
Faker::Config.locale = :ja
irb(main):044:0> Faker::Address.city
=> "新井郡"
irb(main):045:0> Faker::Address.city
=> "陸町"

実務を意識するなら

実務で実際に使うなら以下のようなデータが使えるでしょう。

  • 住所
  • 名前
  • メールアドレス
スポンサーリンク
  • 2019 12.08
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.30

    【Ruby on Rails】パーシャルを使ったビューの共通化、ロジックの共通化、HtmlBuilder

  2. 2021 01.30

    【Ruby on Rails】「Enumrize」について

  3. 2020 11.11

    【Ruby on Rails】「Capistrano」について

  4. 2020 09.16

    【Ruby on Rails】ビューヘルパー(エスケープ関連、タグ関連など)

  5. 2020 07.26

    【Ruby on Rails】空文字、nilチェックの種類(present?、empty?、blank?、nil?)、ActiveSupport

  6. 2019 12.07

    【Ruby on Rails】CSVインポートやエクスポート機能について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Git】「プルリクエスト」時にmasterブランチと…

【Ruby on Rails】バージョンアップ対策

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー