Commit 39f80884 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Improve developer seeds

Return execution of observers in seeds.
Mute email sending to letter opening in you browser.
Added `rake dev` task to reset db and add seeds.
Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 6e73b208
...@@ -8,8 +8,7 @@ User.seed(:id, [ ...@@ -8,8 +8,7 @@ User.seed(:id, [
password_confirmation: "5iveL!fe", password_confirmation: "5iveL!fe",
admin: true, admin: true,
projects_limit: 100, projects_limit: 100,
theme_id: Gitlab::Theme::MARS theme_id: Gitlab::Theme::MARS,
confirmed_at: DateTime.now
} }
]) ])
User.find(1).confirm!
project_urls = [ Gitlab::Seeder.quiet do
project_urls = [
'https://github.com/documentcloud/underscore.git', 'https://github.com/documentcloud/underscore.git',
'https://github.com/diaspora/diaspora.git', 'https://github.com/diaspora/diaspora.git',
'https://github.com/diaspora/diaspora-project-site.git', 'https://github.com/diaspora/diaspora-project-site.git',
...@@ -15,9 +16,9 @@ project_urls = [ ...@@ -15,9 +16,9 @@ project_urls = [
'https://github.com/twitter/typeahead.js.git', 'https://github.com/twitter/typeahead.js.git',
'https://github.com/h5bp/html5-boilerplate.git', 'https://github.com/h5bp/html5-boilerplate.git',
'https://github.com/h5bp/mobile-boilerplate.git', 'https://github.com/h5bp/mobile-boilerplate.git',
] ]
project_urls.each_with_index do |url, i| project_urls.each_with_index do |url, i|
group_path, project_path = url.split('/')[-2..-1] group_path, project_path = url.split('/')[-2..-1]
group = Group.find_by(path: group_path) group = Group.find_by(path: group_path)
...@@ -50,4 +51,5 @@ project_urls.each_with_index do |url, i| ...@@ -50,4 +51,5 @@ project_urls.each_with_index do |url, i|
puts project.errors.full_messages puts project.errors.full_messages
print 'F' print 'F'
end end
end
end end
...@@ -6,6 +6,7 @@ Gitlab::Seeder.quiet do ...@@ -6,6 +6,7 @@ Gitlab::Seeder.quiet do
username: Faker::Internet.user_name, username: Faker::Internet.user_name,
name: Faker::Name.name, name: Faker::Name.name,
email: Faker::Internet.email, email: Faker::Internet.email,
confirmed_at: DateTime.now
}]) }])
print '.' print '.'
rescue ActiveRecord::RecordNotSaved rescue ActiveRecord::RecordNotSaved
......
ActiveRecord::Base.observers.disable :all
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
Group.all.each do |group| Group.all.each do |group|
User.all.sample(4).each do |user| User.all.sample(4).each do |user|
......
ActiveRecord::Base.observers.disable :all
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
(1..300).each do |i| (1..300).each do |i|
# Random Project # Random Project
...@@ -12,9 +10,7 @@ Gitlab::Seeder.quiet do ...@@ -12,9 +10,7 @@ Gitlab::Seeder.quiet do
user_id = user.id user_id = user.id
begin Gitlab::Seeder.by_user(user) do
Thread.current[:current_user] = user
Issue.seed(:id, [{ Issue.seed(:id, [{
id: i, id: i,
project_id: project.id, project_id: project.id,
...@@ -25,8 +21,6 @@ Gitlab::Seeder.quiet do ...@@ -25,8 +21,6 @@ Gitlab::Seeder.quiet do
title: Faker::Lorem.sentence(6), title: Faker::Lorem.sentence(6),
description: Faker::Lorem.sentence description: Faker::Lorem.sentence
}]) }])
ensure
Thread.current[:current_user] = nil
end end
print('.') print('.')
end end
......
ActiveRecord::Base.observers.disable :all
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
(1..100).each do |i| (1..100).each do |i|
# Random Project # Random Project
...@@ -17,9 +15,8 @@ Gitlab::Seeder.quiet do ...@@ -17,9 +15,8 @@ Gitlab::Seeder.quiet do
next if branches.uniq.size < 2 next if branches.uniq.size < 2
user_id = user.id user_id = user.id
begin
Thread.current[:current_user] = user
Gitlab::Seeder.by_user(user) do
MergeRequest.seed(:id, [{ MergeRequest.seed(:id, [{
id: i, id: i,
source_branch: branches.first, source_branch: branches.first,
...@@ -31,8 +28,6 @@ Gitlab::Seeder.quiet do ...@@ -31,8 +28,6 @@ Gitlab::Seeder.quiet do
milestone: project.milestones.sample, milestone: project.milestones.sample,
title: Faker::Lorem.sentence(6) title: Faker::Lorem.sentence(6)
}]) }])
ensure
Thread.current[:current_user] = nil
end end
print('.') print('.')
end end
......
ActiveRecord::Base.observers.enable :all
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
User.first(30).each_with_index do |user, i| User.first(30).each_with_index do |user, i|
Key.seed(:id, [ Key.seed(:id, [
......
ActiveRecord::Base.observers.disable :all
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
contents = [ contents = [
`curl https://gist.github.com/randx/4275756/raw/da2f262920c96d1a970d48bf2e99147954b1f4bd/glus1204.sh`, `curl https://gist.github.com/randx/4275756/raw/da2f262920c96d1a970d48bf2e99147954b1f4bd/glus1204.sh`,
......
ActiveRecord::Base.observers.disable :all Gitlab::Seeder.quiet do
Issue.all.limit(10).each_with_index do |issue, i|
Issue.all.limit(10).each_with_index do |issue, i|
5.times do 5.times do
user = issue.project.team.users.sample
Gitlab::Seeder.by_user(user) do
Note.seed(:id, [{ Note.seed(:id, [{
project_id: issue.project.id, project_id: issue.project.id,
author_id: issue.project.team.users.sample.id, author_id: user.id,
note: Faker::Lorem.sentence, note: Faker::Lorem.sentence,
noteable_id: issue.id, noteable_id: issue.id,
noteable_type: 'Issue' noteable_type: 'Issue'
}]) }])
print '.'
end
end
end end
end end
module Gitlab module Gitlab
class Seeder class Seeder
def self.quiet def self.quiet
mute_mailer
SeedFu.quiet = true SeedFu.quiet = true
yield yield
SeedFu.quiet = false SeedFu.quiet = false
puts "\nOK".green puts "\nOK".green
end end
def self.by_user(user)
begin
Thread.current[:current_user] = user
yield
ensure
Thread.current[:current_user] = nil
end
end
def self.mute_mailer
code = <<-eos
def Notify.delay
self
end
eos
eval(code)
end
end end
end end
task dev: ["dev:setup"]
namespace :dev do namespace :dev do
desc "GITLAB | Setup developer environment (db, fixtures)" desc "GITLAB | Setup developer environment (db, fixtures)"
task :setup => :environment do task :setup => :environment do
ENV['force'] = 'yes' ENV['force'] = 'yes'
Rake::Task["db:setup"].invoke Rake::Task["gitlab:setup"].invoke
Rake::Task["db:seed_fu"].invoke
Rake::Task["gitlab:shell:setup"].invoke Rake::Task["gitlab:shell:setup"].invoke
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment