5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'app/workers/workarea/build_release_undo_changesets.rb', line 5
def perform(undo_release_id, release_id)
release = Release.find(release_id)
undo_release = Release.find(undo_release_id)
existing_changesets = undo_release.changesets.to_a
matching_changeset = ->(changeset, existing_changesets) do
existing_changesets.any? do |cs|
changeset.releasable_type == cs.releasable_type &&
changeset.releasable_id == cs.releasable_id
end
end
release.changesets.each_by(500) do |changeset|
next if matching_changeset.call(changeset, existing_changesets)
changeset.build_undo(release: undo_release).save!
end
end
|