From 39f80884db394decdb4b4a21a30bc1ecb3203944 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Sat, 15 Mar 2014 11:39:35 +0200 Subject: [PATCH] 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: Dmitriy Zaporozhets --- db/fixtures/development/01_admin.rb | 5 +- db/fixtures/development/04_project.rb | 88 ++++++++++---------- db/fixtures/development/05_users.rb | 1 + db/fixtures/development/06_teams.rb | 2 - db/fixtures/development/09_issues.rb | 8 +- db/fixtures/development/10_merge_requests.rb | 7 +- db/fixtures/development/11_keys.rb | 2 - db/fixtures/development/12_snippets.rb | 2 - db/fixtures/development/13_comments.rb | 26 +++--- lib/gitlab/seeder.rb | 19 +++++ lib/tasks/dev.rake | 6 +- 11 files changed, 88 insertions(+), 78 deletions(-) diff --git a/db/fixtures/development/01_admin.rb b/db/fixtures/development/01_admin.rb index 3e76d76e838..42d18435340 100644 --- a/db/fixtures/development/01_admin.rb +++ b/db/fixtures/development/01_admin.rb @@ -8,8 +8,7 @@ User.seed(:id, [ password_confirmation: "5iveL!fe", admin: true, projects_limit: 100, - theme_id: Gitlab::Theme::MARS + theme_id: Gitlab::Theme::MARS, + confirmed_at: DateTime.now } ]) - -User.find(1).confirm! diff --git a/db/fixtures/development/04_project.rb b/db/fixtures/development/04_project.rb index d0d0774e0c8..9303ab93300 100644 --- a/db/fixtures/development/04_project.rb +++ b/db/fixtures/development/04_project.rb @@ -1,53 +1,55 @@ -project_urls = [ - 'https://github.com/documentcloud/underscore.git', - 'https://github.com/diaspora/diaspora.git', - 'https://github.com/diaspora/diaspora-project-site.git', - 'https://github.com/diaspora/diaspora-client.git', - 'https://github.com/brightbox/brightbox-cli.git', - 'https://github.com/brightbox/puppet.git', - 'https://github.com/gitlabhq/gitlabhq.git', - 'https://github.com/gitlabhq/gitlab-ci.git', - 'https://github.com/gitlabhq/gitlab-recipes.git', - 'https://github.com/gitlabhq/gitlab-shell.git', - 'https://github.com/gitlabhq/grack.git', - 'https://github.com/gitlabhq/testme.git', - 'https://github.com/twitter/flight.git', - 'https://github.com/twitter/typeahead.js.git', - 'https://github.com/h5bp/html5-boilerplate.git', - 'https://github.com/h5bp/mobile-boilerplate.git', -] +Gitlab::Seeder.quiet do + project_urls = [ + 'https://github.com/documentcloud/underscore.git', + 'https://github.com/diaspora/diaspora.git', + 'https://github.com/diaspora/diaspora-project-site.git', + 'https://github.com/diaspora/diaspora-client.git', + 'https://github.com/brightbox/brightbox-cli.git', + 'https://github.com/brightbox/puppet.git', + 'https://github.com/gitlabhq/gitlabhq.git', + 'https://github.com/gitlabhq/gitlab-ci.git', + 'https://github.com/gitlabhq/gitlab-recipes.git', + 'https://github.com/gitlabhq/gitlab-shell.git', + 'https://github.com/gitlabhq/grack.git', + 'https://github.com/gitlabhq/testme.git', + 'https://github.com/twitter/flight.git', + 'https://github.com/twitter/typeahead.js.git', + 'https://github.com/h5bp/html5-boilerplate.git', + 'https://github.com/h5bp/mobile-boilerplate.git', + ] -project_urls.each_with_index do |url, i| - group_path, project_path = url.split('/')[-2..-1] + project_urls.each_with_index do |url, i| + group_path, project_path = url.split('/')[-2..-1] - group = Group.find_by(path: group_path) + group = Group.find_by(path: group_path) - unless group - group = Group.new( - name: group_path.titleize, - path: group_path - ) - group.description = Faker::Lorem.sentence - group.save + unless group + group = Group.new( + name: group_path.titleize, + path: group_path + ) + group.description = Faker::Lorem.sentence + group.save - group.add_owner(User.first) - end + group.add_owner(User.first) + end - project_path.gsub!(".git", "") + project_path.gsub!(".git", "") - params = { - import_url: url, - namespace_id: group.id, - name: project_path.titleize, - description: Faker::Lorem.sentence - } + params = { + import_url: url, + namespace_id: group.id, + name: project_path.titleize, + description: Faker::Lorem.sentence + } - project = Projects::CreateService.new(User.first, params).execute + project = Projects::CreateService.new(User.first, params).execute - if project.valid? - print '.' - else - puts project.errors.full_messages - print 'F' + if project.valid? + print '.' + else + puts project.errors.full_messages + print 'F' + end end end diff --git a/db/fixtures/development/05_users.rb b/db/fixtures/development/05_users.rb index 3440a645408..d736408dbf5 100644 --- a/db/fixtures/development/05_users.rb +++ b/db/fixtures/development/05_users.rb @@ -6,6 +6,7 @@ Gitlab::Seeder.quiet do username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email, + confirmed_at: DateTime.now }]) print '.' rescue ActiveRecord::RecordNotSaved diff --git a/db/fixtures/development/06_teams.rb b/db/fixtures/development/06_teams.rb index a1e01879db5..dfbe75fd20e 100644 --- a/db/fixtures/development/06_teams.rb +++ b/db/fixtures/development/06_teams.rb @@ -1,5 +1,3 @@ -ActiveRecord::Base.observers.disable :all - Gitlab::Seeder.quiet do Group.all.each do |group| User.all.sample(4).each do |user| diff --git a/db/fixtures/development/09_issues.rb b/db/fixtures/development/09_issues.rb index 2b81d7a2597..635878622d0 100644 --- a/db/fixtures/development/09_issues.rb +++ b/db/fixtures/development/09_issues.rb @@ -1,5 +1,3 @@ -ActiveRecord::Base.observers.disable :all - Gitlab::Seeder.quiet do (1..300).each do |i| # Random Project @@ -12,9 +10,7 @@ Gitlab::Seeder.quiet do user_id = user.id - begin - Thread.current[:current_user] = user - + Gitlab::Seeder.by_user(user) do Issue.seed(:id, [{ id: i, project_id: project.id, @@ -25,8 +21,6 @@ Gitlab::Seeder.quiet do title: Faker::Lorem.sentence(6), description: Faker::Lorem.sentence }]) - ensure - Thread.current[:current_user] = nil end print('.') end diff --git a/db/fixtures/development/10_merge_requests.rb b/db/fixtures/development/10_merge_requests.rb index 2b1f4160211..cb08a7c2537 100644 --- a/db/fixtures/development/10_merge_requests.rb +++ b/db/fixtures/development/10_merge_requests.rb @@ -1,5 +1,3 @@ -ActiveRecord::Base.observers.disable :all - Gitlab::Seeder.quiet do (1..100).each do |i| # Random Project @@ -17,9 +15,8 @@ Gitlab::Seeder.quiet do next if branches.uniq.size < 2 user_id = user.id - begin - Thread.current[:current_user] = user + Gitlab::Seeder.by_user(user) do MergeRequest.seed(:id, [{ id: i, source_branch: branches.first, @@ -31,8 +28,6 @@ Gitlab::Seeder.quiet do milestone: project.milestones.sample, title: Faker::Lorem.sentence(6) }]) - ensure - Thread.current[:current_user] = nil end print('.') end diff --git a/db/fixtures/development/11_keys.rb b/db/fixtures/development/11_keys.rb index 4b53ff411f2..42171393d1b 100644 --- a/db/fixtures/development/11_keys.rb +++ b/db/fixtures/development/11_keys.rb @@ -1,5 +1,3 @@ -ActiveRecord::Base.observers.enable :all - Gitlab::Seeder.quiet do User.first(30).each_with_index do |user, i| Key.seed(:id, [ diff --git a/db/fixtures/development/12_snippets.rb b/db/fixtures/development/12_snippets.rb index 4ca8afe294e..dced2706264 100644 --- a/db/fixtures/development/12_snippets.rb +++ b/db/fixtures/development/12_snippets.rb @@ -1,5 +1,3 @@ -ActiveRecord::Base.observers.disable :all - Gitlab::Seeder.quiet do contents = [ `curl https://gist.github.com/randx/4275756/raw/da2f262920c96d1a970d48bf2e99147954b1f4bd/glus1204.sh`, diff --git a/db/fixtures/development/13_comments.rb b/db/fixtures/development/13_comments.rb index b133ec3146d..626aba200d1 100644 --- a/db/fixtures/development/13_comments.rb +++ b/db/fixtures/development/13_comments.rb @@ -1,13 +1,19 @@ -ActiveRecord::Base.observers.disable :all +Gitlab::Seeder.quiet do + Issue.all.limit(10).each_with_index do |issue, i| + 5.times do + user = issue.project.team.users.sample -Issue.all.limit(10).each_with_index do |issue, i| - 5.times do - Note.seed(:id, [{ - project_id: issue.project.id, - author_id: issue.project.team.users.sample.id, - note: Faker::Lorem.sentence, - noteable_id: issue.id, - noteable_type: 'Issue' - }]) + Gitlab::Seeder.by_user(user) do + Note.seed(:id, [{ + project_id: issue.project.id, + author_id: user.id, + note: Faker::Lorem.sentence, + noteable_id: issue.id, + noteable_type: 'Issue' + }]) + + print '.' + end + end end end diff --git a/lib/gitlab/seeder.rb b/lib/gitlab/seeder.rb index 3aa3b2ba1e9..39de1223b18 100644 --- a/lib/gitlab/seeder.rb +++ b/lib/gitlab/seeder.rb @@ -1,10 +1,29 @@ module Gitlab class Seeder def self.quiet + mute_mailer SeedFu.quiet = true yield SeedFu.quiet = false puts "\nOK".green 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 diff --git a/lib/tasks/dev.rake b/lib/tasks/dev.rake index 7d3602211c1..058c7417040 100644 --- a/lib/tasks/dev.rake +++ b/lib/tasks/dev.rake @@ -1,10 +1,10 @@ +task dev: ["dev:setup"] + namespace :dev do desc "GITLAB | Setup developer environment (db, fixtures)" task :setup => :environment do ENV['force'] = 'yes' - Rake::Task["db:setup"].invoke - Rake::Task["db:seed_fu"].invoke + Rake::Task["gitlab:setup"].invoke Rake::Task["gitlab:shell:setup"].invoke end end -