Connecting Ruby on Rails to Salesforce
Salesforce is getting popular with SME and Enterprise markets and companies would love to integrate their custom-built apps with their Salesforce CRM database. You can synchronize data from your database to Salesforce using Salesforce API. Usually organizations are allocated 10,000 API calls per day. If you need more API calls, you can purchase an API calls pack from your Salesforce reseller.
Getting Started
It is a good idea to use a dedicated Salesforce user account to connect to your app and set up appropriate security measures. Databasedotcom gem will parse all fields every time when it connects to Salesforce. If you are using a dedicated user to access the API you can hide the fields that are not in use to reduce bandwidth and sync faster.
Requirements
- Ruby on Rails 3+
- Salesforce Profession, Ultimate, or Enterprise edition or Salesforce Developer account (available for free).
- Databasedotcom gem
Install and configure the gem
Add gem 'databasedotcom'
to your Gemfile and then run bundle install
.
Enable API Access
- Log in to Salesforce
- Go to the Remote Access setting
- Click New
- Fill in your application details, callback URL can be any URL.
- Save a copy of your Consumer Key and Consumer Secret
Get a security token
You will need to use your security token to access Salesforce API.
If you don't have your Salesforce security token, go to Reset My Security Token in Salesforce setting and press Reset Security Token. Your new security token should be in your email inbox within a minute.
Authentication
We will set up one YAML files that will store all Salesforce setting. Create a file called app/config/salesforce.yml
and add your Salesforce credentials and Salesforce objects that you want to use in your app. I this example I am using two main objects - Contact and Account. Feel free to add more objects to the list.
client_id: copy and paste your Salesforce Consumer Key
client_secret: copy and paste your Salesforce Consumer Secret
username: user@email.com
password: password
security_token: Jdkra7ZNpJcYEmOaJPvPqBJRW
objects: [Contact, Account]
Now create a Salesforce class in lib/Salesfoce.rb
file that will initialize Salesforce connection, authenticate your app and cache your Salesforce objects schema.
Create an initializer file config/initializers/sfdc_init.rb
that will authenticate Salesforce when your app starts:
Usage Examples
Now when you start your Rails app or console, you have access to your Salesforce database. Some usage examples: