class MetadataInitializer
MetadataInitializer
exposes functionality to automatically add an external Synchronization ID to your Salesforce models.
Public Class Methods
new(config_file, *models)
click to toggle source
Public: Initialize a new MetadataInitializer
.
config_file - The path to a configuration file. models - An Array of String Salesforce model names.
# File lib/generators/templates/script, line 18 def initialize(config_file, *models) @models = models @config = YAML.load_file(config_file) end
Public Instance Methods
client()
click to toggle source
Internal: Get a Metaforce client to process the custom field CRUD requests.
Returns a Metaforce::Metadata:Client.
# File lib/generators/templates/script, line 53 def client @client ||= begin Metaforce.configure do |configuration| configuration.host = @config["client"]["host"] configuration.log = false end options = { username: @config["client"]["username"], password: @config["client"]["password"], security_token: @config["client"]["security_token"], } # Verify the login credentials Metaforce.login(options) Metaforce.new(options) end end
setup()
click to toggle source
Public: Set up an external Synchronization ID for each specified Salesforce model.
Returns nothing.
# File lib/generators/templates/script, line 27 def setup @models.each do |model| print "ADDING SynchronizationId__c to #{model}... " job = client.create( :custom_field, full_name: "#{model}.SynchronizationId__c", description: "External Synchronization ID", label: "Synchronization ID", type: "Text", external_id: true, unique: true, length: ENV["UUID_LENGTH"] || 255, ) begin job.on_complete { |_| puts "DONE" }.on_error { |_| puts "FAILED" }.perform rescue Savon::SOAP::Fault => e puts "\n(#{e.class}) #{e.message}\n#{e.backtrace.join("\n")}" end end end