diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-08-24 18:58:31 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-08-24 18:58:31 +0800 |
commit | 932d32515a72bc80e021474100f677d954f3822e (patch) | |
tree | 61d8d1dec448a46ce6487c4d8f00b7aea823cab3 | |
parent | 5c31c72048d418d88d59abbdb117ec5413eb5f83 (diff) | |
download | gitlab-ce-932d32515a72bc80e021474100f677d954f3822e.tar.gz |
Move to Projects::HousecleaningService
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | app/services/projects/housecleaning_service.rb | 40 | ||||
-rw-r--r-- | app/services/projects/import_export/cleanup_service.rb | 42 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 10 | ||||
-rw-r--r-- | spec/services/projects/housecleaning_service_spec.rb (renamed from spec/services/projects/import_export/cleanup_service_spec.rb) | 2 |
5 files changed, 47 insertions, 49 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 72da4e8eb2e..c0060504d74 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -372,7 +372,7 @@ class Project < ActiveRecord::Base if Gitlab::ImportSources.importer_names.include?(project.import_type) && project.repo_exists? project.run_after_commit do begin - Projects::ImportExport::CleanupService.new(project).execute + Projects::HousecleaningService.new(project).execute rescue Projects::HousekeepingService::LeaseTaken => e Rails.logger.info("Could not perform housekeeping for project #{project.full_path} (#{project.id}): #{e}") end diff --git a/app/services/projects/housecleaning_service.rb b/app/services/projects/housecleaning_service.rb new file mode 100644 index 00000000000..d5cf8478e13 --- /dev/null +++ b/app/services/projects/housecleaning_service.rb @@ -0,0 +1,40 @@ +module Projects + class HousecleaningService + def self.reserved_refs_names + %w[heads tags merge-requests keep-around environments] + end + + def self.reserved_refs_regexp + names = reserved_refs_names.map(&Regexp.method(:escape)).join('|') + + %r{\Arefs/(?:#{names})/} + end + + def initialize(project) + @project = project + end + + # This could raise Projects::HousekeepingService::LeaseTaken + def execute + Projects::HousekeepingService.new(@project).execute do + garbage_refs.each(&rugged.references.method(:delete)) + end + end + + private + + def garbage_refs + @garbage_refs ||= begin + reserved_refs_regexp = self.class.reserved_refs_regexp + + rugged.references.reject do |ref| + ref.name =~ reserved_refs_regexp + end + end + end + + def rugged + @rugged ||= @project.repository.rugged + end + end +end diff --git a/app/services/projects/import_export/cleanup_service.rb b/app/services/projects/import_export/cleanup_service.rb deleted file mode 100644 index 25bff3468a9..00000000000 --- a/app/services/projects/import_export/cleanup_service.rb +++ /dev/null @@ -1,42 +0,0 @@ -module Projects - module ImportExport - class CleanupService - def self.reserved_refs_names - %w[heads tags merge-requests keep-around environments] - end - - def self.reserved_refs_regexp - names = reserved_refs_names.map(&Regexp.method(:escape)).join('|') - - %r{\Arefs/(?:#{names})/} - end - - def initialize(project) - @project = project - end - - # This could raise Projects::HousekeepingService::LeaseTaken - def execute - Projects::HousekeepingService.new(@project).execute do - garbage_refs.each(&rugged.references.method(:delete)) - end - end - - private - - def garbage_refs - @garbage_refs ||= begin - reserved_refs_regexp = self.class.reserved_refs_regexp - - rugged.references.reject do |ref| - ref.name =~ reserved_refs_regexp - end - end - end - - def rugged - @rugged ||= @project.repository.rugged - end - end - end -end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 130c0739033..7631207b1d0 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1563,14 +1563,14 @@ describe Project do describe 'project import state transitions' do context 'state transition: [:started] => [:finished]' do - let(:cleanup_service) { spy(:cleanup_service) } + let(:housecleaning_service) { spy(:housecleaning_service) } let(:housekeeping_service) { spy(:housekeeping_service) } before do - allow(Projects::ImportExport::CleanupService) - .to receive(:new) { cleanup_service } + allow(Projects::HousecleaningService) + .to receive(:new) { housecleaning_service } - allow(cleanup_service) + allow(housecleaning_service) .to receive(:execute) { housekeeping_service.execute } allow(Projects::HousekeepingService) @@ -1589,7 +1589,7 @@ describe Project do project.import_finish - expect(cleanup_service).to have_received(:execute) + expect(housecleaning_service).to have_received(:execute) expect(housekeeping_service).to have_received(:execute) end diff --git a/spec/services/projects/import_export/cleanup_service_spec.rb b/spec/services/projects/housecleaning_service_spec.rb index 108d0ea2ecc..3dd7906dc9a 100644 --- a/spec/services/projects/import_export/cleanup_service_spec.rb +++ b/spec/services/projects/housecleaning_service_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Projects::ImportExport::CleanupService do +describe Projects::HousecleaningService do subject { described_class.new(project) } let(:project) { create(:project, :repository) } |