8784: Fix test for latest firefox.
[arvados.git] / services / api / db / migrate / 20140129184311_normalize_collection_uuids_in_script_parameters.rb
1 class NormalizeCollectionUuidsInScriptParameters < ActiveRecord::Migration
2   include CurrentApiClient
3   def up
4     act_as_system_user do
5       PipelineInstance.all.each do |pi|
6         pi.save! if fix_values_recursively(pi.components)
7       end
8       Job.all.each do |j|
9         changed = false
10         j.script_parameters.each do |p, v|
11           if v.is_a? String and v.match /\+K/
12             v.gsub! /\+K\@\w+/, ''
13             changed = true
14           end
15         end
16         j.save! if changed
17       end
18     end
19   end
20
21   def down
22   end
23
24   protected
25   def fix_values_recursively fixme
26     changed = false
27     if fixme.is_a? String
28       if fixme.match /\+K/
29         fixme.gsub! /\+K\@\w+/, ''
30         return true
31       else
32         return false
33       end
34     elsif fixme.is_a? Array
35       fixme.each do |v|
36         changed = fix_values_recursively(v) || changed
37       end
38     elsif fixme.is_a? Hash
39       fixme.each do |p, v|
40         changed = fix_values_recursively(v) || changed
41       end
42     end
43     changed
44   end
45 end