[Ruby on Rails 3, Ruby on Rails 4] gems: faker, gimei, romankana
実際にありそうなユーザー名とメールアドレスを持つサンプルユーザーを自動的に作成する。
[markdown]
> * [9.3.2サンプルのユーザー](http://railstutorial-ja.herokuapp.com/chapters/updating-showing-and-deleting-users#sec-sample_users)
> * [stympy/faker · GitHub](https://github.com/stympy/faker)
> * [File: README — Documentation for stympy/faker (master)](http://rubydoc.info/github/stympy/faker/master/frames)
## gemfile
“`
gem ‘faker’
“`
## データベースにサンプルユーザーを追加するRakeタスク
### lib/tasks/sample_data.rake
“`
namespace :db do
desc “Fill database with sample data”
task populate: :environment do
User.create!(name: “Example User”,
email: “example@railstutorial.jp”,
password: “foobar”,
password_confirmation: “foobar”)
99.times do |n|
name = Faker::Name.name
email = “example-#{n+1}@railstutorial.jp”
password = “password”
User.create!(name: name,
email: email,
password: password,
password_confirmation: password)
end
end
end
“`
“`
$ bundle exec rake db:reset
$ bundle exec rake db:populate
$ bundle exec rake db:test:prepare
“`
### locale 対応
locale に対応している。
config/locales/ja.yml に設定が必要。
> * [faker/lib/locales/ja.yml at master · stympy/faker · GitHub](https://github.com/stympy/faker/blob/master/lib/locales/ja.yml)
> * [Ruby – Faker を i18n locale :ja で使うときは Faker::Config.locale を :en にセットしなおすべし – Qiita [キータ]](http://qiita.com/kyanny/items/00ef3727c7738f2cc26c)
“`
% bundle exec rails c
Loading development environment (Rails 3.2.14)
[3] pry(main)> name = Faker::Name.name
=> “林 美咲”
[8] pry(main)> Faker::PhoneNumber.phone_number
=> “02-1144-0153”
[9] pry(main)> Faker::Address.city
=> “蒼空区”
[10] pry(main)> Faker::Address.state
=> “宮城県”
[12] pry(main)> Faker::Address.postcode
=> “921-1677”
[13] pry(main)> Faker::Internet.email
=> “@.net”
[14] pry(main)> Faker::Internet.user_name
=> “_”
“`
## 日本人名を扱う
日本人の名前をフリガナ付きでランダムに返す。
> * [willnet/gimei · GitHub](https://github.com/willnet/gimei)
ひらがな・カタカナ・ローマ字変換
> * [ymrl/romankana · GitHub](https://github.com/ymrl/romankana)
どちらもMITライセンス。
“`
gem ‘gimei’
gem ‘romankana’
“`
“`
% bundle exec rails c
Loading development environment (Rails 3.2.14)
[1] pry(main)> require ‘gimei’
=> true
[2] pry(main)> require ‘romankana’
=> true
[4] pry(main)> name1 = Gimei.new
=> #
@gender=:male,
@last=#
[5] pry(main)> name1.male?
=> true
[6] pry(main)> name1.kanji
=> “竹下 仁希”
[7] pry(main)> name1.katakana
=> “タケシタ ニキ”
[8] pry(main)> name1.katakana.to_roman
=> “takeshita niki”
[11] pry(main)> name1.katakana.to_roman.split.map{|s| s.capitalize}.join(” “)
=> “Takeshita Niki”
“`
## 補遺
> * [camelmasa/faker-locale-ja · GitHub](https://github.com/camelmasa/faker-locale-ja)
> * [faker-locale-ja/config/locales/ja.yml at master · camelmasa/faker-locale-ja · GitHub](https://github.com/camelmasa/faker-locale-ja/blob/master/config/locales/ja.yml)
### faker-japanese
> * [tily/ruby-faker-japanese · GitHub](https://github.com/tily/ruby-faker-japanese)
> * [Ruby – Fakerでダミーデータを作成 – Qiita [キータ]](http://qiita.com/torshinor/items/ef2141d6f3828cf0054f)
> * [Rails3+Ruby1.9.2でFaker::Japanese+RomanKanaで日本語名を生成 | tomotaka-itoの日記](http://tmtk.org/blog/2011/04/171)
“`
% bundle exec rails c
Loading development environment (Rails 3.2.14)
[1] pry(main)> require ‘faker/japanese’
=> true
[2] pry(main)> p Faker::Japanese::Name.name
“宅間 燕一”
=> “宅間 燕一”
[5] pry(main)> require ‘faker’
=> true
[8] pry(main)> p Faker::Internet.email
“@.net”
=> “@.net”
[9] pry(main)> Faker::Internet.user_name
=> “”
[10] pry(main)> Faker::Config.locale = :en
=> :en
[11] pry(main)> Faker::Internet.user_name
=> “arnoldo_ziemann”
[12] pry(main)> p Faker::Internet.email
“stevie@murray.biz”
=> “stevie@murray.biz”
[16] pry(main)> name = Faker::Japanese::Name.name
=> “辻井 喜次郎”
[17] pry(main)> name.yomi
=> “ツジイ キジロウ”
“`
[/markdown]