20140723110551_adopt_xpath_in_website_agent.rb 829B

    class AdoptXpathInWebsiteAgent < ActiveRecord::Migration class Agent < ActiveRecord::Base include JSONSerializedField json_serialize :options end def up Agent.where(type: 'Agents::WebsiteAgent').each do |agent| extract = agent.options['extract'] next unless extract.is_a?(Hash) && extract.all? { |name, detail| detail.key?('xpath') || detail.key?('css') } agent.options_will_change! agent.options['extract'].each { |name, extraction| case when extraction.delete('text') extraction['value'] = './/text()' when attr = extraction.delete('attr') extraction['value'] = "@#{attr}" end } agent.save! end end def down raise ActiveRecord::IrreversibleMigration, "Cannot revert this migration" end end