Configurando Seeds
No seu Gemfile no grupo de desenvolvimento e teste adicione a gema annotate:
group :development, :test do
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
gem "debug", platforms: %i[ mri mingw x64_mingw ]
gem 'annotate'
gem 'rspec-rails', '>= 5.1.2'
gem 'faker'
gem 'factory_bot_rails'
end
Autorizar arquivos para o usuário local:
sudo chown -R $USER:$USER .
Entre na bash:
docker-compose run --rm web bash
Instale as novas gemas:
bundle
Instale a o generator:
rails generate rspec:install
Após instalar irá gerar os seguintes arquivos:
.rspec
spec
spec/spec_helper.rb
spec/rails_helper.rb
No arquivo spec/rails_helper.rb, adicione o faker("require 'faker'"):
# This file is copied to spec/ when you run 'rails generate rspec:install'
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require_relative '../config/environment'
# Prevent database truncation if the environment is production
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
require 'faker'
....
Agora é hora de criar a factory "users"(spec/factories/users.rb), dentro do arquivo adicione:
FactoryBot.define do
factory :user, class: User do
name { Faker::Name.name }
email { Faker::Internet.email }
password { "super_secret_123" }
end
end
Depois crie a factory "contacts"(API/spec/factories/contacts.rb):
FactoryBot.define do
factory :contact, class: Contact do
name { Faker::Name.name }
email { Faker::Internet.email }
phone { Faker::PhoneNumber.phone_number }
description { Faker::Lorem.sentence }
association :user, factory: :user
end
end
Finalmente iremos editar o seeds(db/seeds.rb):
ActiveRecord::Base.transaction do
numero_de_contatos = 5
puts 'Criando primeiro usuário'
user_1 = FactoryBot.create(:user)
puts 'Criando lista de contato para o primeiro usuário'
FactoryBot.create_list(:contact, numero_de_contatos, user: user_1)
puts 'Criando o segundo usuário e sua lista de contatos'
FactoryBot.create_list(:contact, numero_de_contatos, user_id: FactoryBot.create(:user).id)
puts 'Gerado os novos registros'
end
Para recriar o banco e aplicar os seeds, rode:
docker-compose run --rm web rails db:drop db:create db:migrate db:seed
1° rspec-rails
2° Ruby on Rails - 6 MVC and You
3° Faker
4° Working Effectively with Data Factories Using FactoryBot
5° Migrations and Seed Data
6° Seeds: populando seu banco de dados
7° Seeding a Database in Ruby on Rails