No release in over 3 years
Low commit activity in last 3 years
There's a lot of open issues
This gem provides a super simple interface for the Salesforce Bulk API. It provides support for insert, update, upsert, delete, and query.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

salesforce-bulk¶ ↑

Overview¶ ↑

Salesforce bulk is a simple ruby gem for connecting to and using the Salesforce Bulk API (www.salesforce.com/us/developer/docs/api_asynch/index.htm). There are already some gems out there that provide connectivity to the Salesforce SOAP and Rest APIs, if your needs are simple, I recommend using those, specifically raygao’s asf-rest-adapter (github.com/raygao/asf-rest-adapter) or databasedotcom (rubygems.org/gems/databasedotcom).

Installation¶ ↑

sudo gem install salesforce_bulk

How to use¶ ↑

Using this gem is simple and straight forward.

To initialize:

require 'salesforce_bulk'
salesforce = SalesforceBulk::Api.new("YOUR_SALESFORCE_USERNAME", "YOUR_SALESFORCE_PASSWORD+YOUR_SALESFORCE_TOKEN")

To use sandbox:

salesforce = SalesforceBulk::Api.new("YOUR_SALESFORCE_SANDBOX_USERNAME", "YOUR_SALESFORCE_PASSWORD+YOUR_SALESFORCE_SANDBOX_TOKEN", true)

Note: the second parameter is a combination of your Salesforce token and password. So if your password is xxxx and your token is yyyy, the second parameter will be xxxxyyyy

Sample operations:

# Insert/Create
new_account = Hash["name" => "Test Account", "type" => "Other"] # Add as many fields per record as needed.
records_to_insert = Array.new
records_to_insert.push(new_account) # You can add as many records as you want here, just keep in mind that Salesforce has governor limits.
result = salesforce.create("Account", records_to_insert)
puts "result is: #{result.inspect}"

# Update
updated_account = Hash["name" => "Test Account -- Updated", "id" => "a00A0001009zA2m"] # Nearly identical to an insert, but we need to pass the salesforce id.
records_to_update = Array.new
records_to_update.push(updated_account)
salesforce.update("Account", records_to_update)

# Upsert
upserted_account = Hash["name" => "Test Account -- Upserted", "External_Field_Name" => "123456"] # Fields to be updated. External field must be included
records_to_upsert = Array.new
records_to_upsert.push(upserted_account)
salesforce.upsert("Account", records_to_upsert, "External_Field_Name") # Note that upsert accepts an extra parameter for the external field name

OR

salesforce.upsert("Account", records_to_upsert, "External_Field_Name", true) # last parameter indicates whether to wait until the batch finishes

# Delete
deleted_account = Hash["id" => "a00A0001009zA2m"] # We only specify the id of the records to delete
records_to_delete = Array.new
records_to_delete.push(deleted_account)
salesforce.delete("Account", records_to_delete)

# Query
res = salesforce.query("Account", "select id, name, createddate from Account limit 3") # We just need to pass the sobject name and the query string
puts res.result.records.inspect

Result reporting:

new_account = Hash["type" => "Other"] # Missing required field "name."
records_to_insert = Array.new
records_to_insert.push(new_account) # You can add as many records as you want here, just keep in mind that Salesforce has governor limits.
result = salesforce.create("Account", records_to_insert, true) # Result reporting can only be used if wait is set to true
puts result.success? # false
puts result.has_errors? # true
puts result.result.errors # An indexed hash detailing the errors

Copyright © 2012 Jorge Valdivia.

end¶ ↑