RubyからSalesforce REST APIを実行する (restforceを使用してSalesforceカスタムオブジェクトへレコードを追加する)

はじめに
===

Salesforceに対して、様々な操作を行えるSalesforce REST APIというものがあります。

Salesforce REST APIを使用する事で、RubyからSalesforceカスタムオブジェクトにレコードを追加したり、レコードを取得したりといった操作が可能です。

RubyからSalesforce REST APIを実行する事で、Salesforceカスタムオブジェクトにレコードを追加するサンプルプログラムを記します。

また、Salesforceカスタムオブジェクトに登録したレコード一覧を表示するサンプルプログラムも合わせて記します。

実行環境
===

RubyからSalesforce REST APIを呼び出す環境については、以下の手順を参考にして、AWS EC2インスタンス(Amazon Linux)に作成しました。
http://qiita.com/na0AaooQ/items/d7f814b184c6c1bd9d9c

レコード追加対象のSalesforceカスタムオブジェクト(カスタムオブジェクト名: QuickStart__c)については、以下の手順で作成したものを使用します。また、EC2インスタンスからSalesforce REST APIを呼び出す為のSalesforce OAuth設定も以下をご参照下さい。
http://qiita.com/na0AaooQ/items/157c28a80948c4b97bed

Salesforce REST API接続に使用したRubyのGem
===

今回の手順では「databasedotcom」ではなく「restforce」というGemを使用して、RubyからSalesforce REST APIを実行します。
https://github.com/ejholmes/restforce


Gem「databasedotcom」を使用したSalesforce REST APIの実行方法については、以下をご参照下さい。
http://qiita.com/na0AaooQ/items/1ac53c3899755f935c7b

EC2インスタンス(Amazon Linux)へのRubyインストール
===

## (1) EC2インスタンス(Amazon Linux)にRubyをインストールします。

以下の手順でEC2インスタンス(Amazon Linux)にRubyをインストールします。

http://qiita.com/na0AaooQ/items/d7f814b184c6c1bd9d9c

EC2インスタンス(Amazon Linux)へのrestforce(Gem)インストール

## (2) .bashrcにSalesforce REST API接続用の設定を追加します。

```
[ec2-user@example-ruby-sinatra-server ~]$ cp -p /home/ec2-user/.bashrc /home/ec2-user/.bashrc.ORG
[ec2-user@example-ruby-sinatra-server ~]$ diff /home/ec2-user/.bashrc /home/ec2-user/.bashrc.ORG
[ec2-user@example-ruby-sinatra-server ~]$ 
```

```
[ec2-user@example-ruby-sinatra-server ~]$ vi /home/ec2-user/.bashrc
　(末尾に以下を追加する)

### Sandbox環境へ接続する場合のAPIエンドポイント
##export DATABASEDOTCOM_HOST="test.salesforce.com"
### 本番環境へ接続する場合のAPIエンドポイント
export DATABASEDOTCOM_HOST="login.salesforce.com"

export DATABASEDOTCOM_CLIENT_ID="前述の「コンシューマ鍵」(OAuthコンシューマキー)を記載します。"
export DATABASEDOTCOM_CLIENT_SECRET="前述の「コンシューマの秘密」(OAuthコンシューマシークレット)を記載します。"
export DATABASEDOTCOM_CLIENT_USERNAME="salesforce_api_testuser@**********.salesforce.example.com"
export DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD="APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
```

## (3) .bashrcに追加した環境変数を読み込みます。

```
[ec2-user@example-ruby-sinatra-server ~]$ source /home/ec2-user/.bashrc
[ec2-user@example-ruby-sinatra-server ~]$ 
```


## (4) EC2インスタンス(Amazon Linux)に/home/ec2-user/select_salesforce_restforce_api_testディレクトリを作成し、restforce(Gem)をインストールします。

今回の例では、レコード追加とレコード表示プログラムを各ディレクトリに作成していく事にします。

| プログラム内容 | 作成するディレクトリ名 |
|--------------|--------------------|
| カスタムオブジェクトにレコードを追加するプログラム | /home/ec2-user/insert_salesforce_restforce_api_test |
| カスタムオブジェクトのレコードを表示するプログラム | /home/ec2-user/select_salesforce_restforce_api_test |



```
[ec2-user@example-ruby-sinatra-server ~]$ hostname
example-ruby-sinatra-server
[ec2-user@example-ruby-sinatra-server ~]$ id
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
[ec2-user@example-ruby-sinatra-server ~]$ mkdir /home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server ~]$ cd /home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/select_salesforce_restforce_api_test/
合計 8
drwx------ 8 ec2-user ec2-user 4096  3月 11 13:02 ..
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:02 .
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

Gemfileを作成します。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ bundle init
Writing new Gemfile to /home/ec2-user/select_salesforce_restforce_api_test/Gemfile
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/select_salesforce_restforce_api_test/
合計 12
drwx------ 8 ec2-user ec2-user 4096  3月 11 13:02 ..
-rw-r--r-- 1 ec2-user ec2-user   75  3月 11 13:03 Gemfile
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:03 .
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

念の為、作業開始前のGemfileをバックアップしておきます。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ cp -p /home/ec2-user/select_salesforce_restforce_api_test/Gemfile /home/ec2-user/select_salesforce_restforce_api_test/Gemfile.ORG
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ diff /home/ec2-user/select_salesforce_restforce_api_test/Gemfile /home/ec2-user/select_salesforce_restforce_api_test/Gemfile.ORG
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 

[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ cat /home/ec2-user/select_salesforce_restforce_api_test/Gemfile
# frozen_string_literal: true
source "https://rubygems.org"

# gem "rails"
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

Gemfileにrestforce ( https://github.com/ejholmes/restforce )を追記します。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ echo 'gem "restforce"' >> /home/ec2-user/select_salesforce_restforce_api_test/Gemfile
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ cat /home/ec2-user/select_salesforce_restforce_api_test/Gemfile
# frozen_string_literal: true
source "https://rubygems.org"

# gem "rails"
gem "restforce"
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ diff /home/ec2-user/select_salesforce_restforce_api_test/Gemfile /home/ec2-user/select_salesforce_restforce_api_test/Gemfile.ORG
5d4
< gem "restforce"
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

restforce(Gem)がまだインストールされていない事を確認します。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ bundle list
Could not find gem 'restforce' in any of the gem sources listed in your Gemfile or available on this machine.
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

restforce(Gem)をインストールします。

```
2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/select_salesforce_restforce_api_test/
合計 16
drwx------ 8 ec2-user ec2-user 4096  3月 11 13:02 ..
-rw-r--r-- 1 ec2-user ec2-user   75  3月 11 13:03 Gemfile.ORG
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:06 .
-rw-r--r-- 1 ec2-user ec2-user   91  3月 11 13:06 Gemfile
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Installing multipart-post 2.0.0
Installing hashie 3.5.5
Installing json 2.0.3 with native extensions
Using bundler 1.13.2
Installing faraday 0.9.2
Installing faraday_middleware 0.11.0.1
Installing restforce 2.5.0
Bundle complete! 1 Gemfile dependency, 7 gems now installed.
Bundled gems are installed into ./vendor/bundle.
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

restforce(Gem)がインストールされた事を確認します。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ bundle list | grep restforce
  * restforce (2.5.0)
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ bundle list
Gems included by the bundle:
  * bundler (1.13.2)
  * faraday (0.9.2)
  * faraday_middleware (0.11.0.1)
  * hashie (3.5.5)
  * json (2.0.3)
  * multipart-post (2.0.0)
  * restforce (2.5.0)
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/select_salesforce_restforce_api_test/
合計 28
drwx------ 8 ec2-user ec2-user 4096  3月 11 13:02 ..
-rw-r--r-- 1 ec2-user ec2-user   75  3月 11 13:03 Gemfile.ORG
-rw-r--r-- 1 ec2-user ec2-user   91  3月 11 13:06 Gemfile
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:08 .bundle
drwxrwxr-x 3 ec2-user ec2-user 4096  3月 11 13:08 vendor
-rw-rw-r-- 1 ec2-user ec2-user  433  3月 11 13:08 Gemfile.lock
drwxrwxr-x 4 ec2-user ec2-user 4096  3月 11 13:08 .
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

## (5) EC2インスタンス(Amazon Linux)に/home/ec2-user/insert_salesforce_restforce_api_testディレクトリを作成し、restforce(Gem)をインストールします。

```
[ec2-user@example-ruby-sinatra-server ~]$ hostname
example-ruby-sinatra-server
[ec2-user@example-ruby-sinatra-server ~]$ mkdir /home/ec2-user/insert_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server ~]$ cd /home/ec2-user/insert_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ pwd
/home/ec2-user/insert_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/insert_salesforce_restforce_api_test
合計 8
drwx------ 9 ec2-user ec2-user 4096  3月 11 13:13 ..
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:13 .
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
```

前述の手順(4)を参考にして、restforce(Gem)をインストールします。

```
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/insert_salesforce_restforce_api_test
合計 28
drwx------ 9 ec2-user ec2-user 4096  3月 11 13:13 ..
-rw-r--r-- 1 ec2-user ec2-user   75  3月 11 13:14 Gemfile.ORG
-rw-r--r-- 1 ec2-user ec2-user   91  3月 11 13:15 Gemfile
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:15 .bundle
drwxrwxr-x 3 ec2-user ec2-user 4096  3月 11 13:15 vendor
-rw-rw-r-- 1 ec2-user ec2-user  433  3月 11 13:15 Gemfile.lock
drwxrwxr-x 4 ec2-user ec2-user 4096  3月 11 13:15 .
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ bundle list | grep restforce
  * restforce (2.5.0)
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ bundle list
Gems included by the bundle:
  * bundler (1.13.2)
  * faraday (0.9.2)
  * faraday_middleware (0.11.0.1)
  * hashie (3.5.5)
  * json (2.0.3)
  * multipart-post (2.0.0)
  * restforce (2.5.0)
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
```

RubyからSalesforce REST APIを実行してSalesforceカスタムオブジェクトのレコードを表示する
===

Rubyからrestforce(Gem)経由でSalesforce REST APIを呼び出し、Salesforceカスタムオブジェクトのレコードを表示します。

Salesforceカスタムオブジェクト「テストオブジェクト」(例としてオブジェクト名が QuickStart__c であるとします)のレコードを表示するRubyプログラムを作成します。

SOQL(Salesforce Object Query Language)のWHERE句により、以下の条件に一致するレコードのみ表示しています。

　**[WHERE句の条件]
　　本日登録したレコード ( create_date__c >= TODAY )**

SOQLの日付形式と日付リテラルの詳細については [Force.com SOQL および SOSL リファレンス](https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm "Force.com SOQL および SOSL リファレンス") をご参照下さい。




これを実行すると、Salesforceカスタムオブジェクトに登録されているレコードを表示出来ます。


```
[ec2-user@example-ruby-sinatra-server ~]$ cd /home/ec2-user/select_salesforce_restforce_api_test/
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ls -lrta /home/ec2-user/select_salesforce_restforce_api_test/
合計 32
-rw-r--r-- 1 ec2-user ec2-user   75  3月 11 13:03 Gemfile.ORG
-rw-r--r-- 1 ec2-user ec2-user   91  3月 11 13:06 Gemfile
drwxrwxr-x 2 ec2-user ec2-user 4096  3月 11 13:08 .bundle
drwxrwxr-x 3 ec2-user ec2-user 4096  3月 11 13:08 vendor
-rw-rw-r-- 1 ec2-user ec2-user  433  3月 11 13:08 Gemfile.lock
drwx------ 9 ec2-user ec2-user 4096  3月 11 13:24 ..
drwxrwxr-x 4 ec2-user ec2-user 4096  3月 11 13:24 .
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ vi /home/ec2-user/select_salesforce_restforce_api_test/select_salesforce_api_test.rb
```

```rb:/home/ec2-user/select_salesforce_restforce_api_test/select_salesforce_api_test.rb
#!/bin/env ruby
#
require 'bundler/setup'
require 'restforce'

# Salesforce接続用インスタンス作成とSalesforce API認証
client = Restforce.new(
     host: ENV['DATABASEDOTCOM_HOST'],
     username: ENV['DATABASEDOTCOM_CLIENT_USERNAME'],
     password: ENV['DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD'],
     client_id: ENV['DATABASEDOTCOM_CLIENT_ID'],
     client_secret: ENV['DATABASEDOTCOM_CLIENT_SECRET']
)

# Salesforceカスタムオブジェクトに登録されているレコード一覧を表示
client.query("SELECT user_name__c, user_email__c, create_date__c FROM QuickStart__c WHERE create_date__c >= TODAY").each do|record|
  p "#{record.user_name__c} : #{record.user_email__c} #{record.create_date__c}"
end
```

Rubyプログラムを実行すると、Salesforceカスタムオブジェクトに登録されているレコードを表示出来ます。

```
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ pwd
/home/ec2-user/select_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ ruby /home/ec2-user/select_salesforce_restforce_api_test/select_salesforce_api_test.rb
"testname_Ruby_20170311_133426 : testname_Ruby_20170311_133426@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_134741 : testname_Ruby_20170311_134741@hoge.example.com 2017-03-11"
"testname_Node_20170311_114548 : testname_Node_20170311_114548@hoge.example.com 2017-03-11"
"testname_Node_20170311_122544 : testname_Node_20170311_122544@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114515 : testname_Ruby_20170311_114515@hoge.example.com 2017-03-11"
"testname_Node_20170311_122603 : testname_Node_20170311_122603@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114654 : testname_Ruby_20170311_114654@hoge.example.com 2017-03-11"
"testname_Node_20170311_121201 : testname_Node_20170311_121201@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_134744 : testname_Ruby_20170311_134744@hoge.example.com 2017-03-11"
"testname_Node_20170311_123050 : testname_Node_20170311_123050@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114637 : testname_Ruby_20170311_114637@hoge.example.com 2017-03-11"
"testname_Ruby120170311_134632 : testname_Ruby120170311_134632@hoge.example.com 2017-03-11"
"testname_Ruby1_20170311_134643 : testname_Ruby1_20170311_134643@hoge.example.com 2017-03-11"
"testname_Node_20170311_114546 : testname_Node_20170311_114546@hoge.example.com 2017-03-11"
"testname_Node_20170311_122616 : testname_Node_20170311_122616@hoge.example.com 2017-03-11"
[ec2-user@example-ruby-sinatra-server select_salesforce_restforce_api_test]$ 
```

RubyからSalesforce REST APIを実行してSalesforceカスタムオブジェクトにレコードを追加する
===

Rubyからrestforce(Gem)経由でSalesforce REST APIを呼び出し、Salesforceカスタムオブジェクトにレコードを追加します。

Salesforceカスタムオブジェクトへのレコード追加後、合わせてSOQL(Salesforce Object Query Language)のWHERE句により、以下の条件にANDで一致するレコードのみ表示しています。

　**[WHERE句の条件1]
　　Salesforceカスタムオブジェクトのuser_email__c項目に'Ruby'という文字列が含まれる ( user_email__c LIKE '%Ruby%' )**
　　　**AND**
　**[WHERE句の条件2]
　　本日登録したレコード ( create_date__c >= TODAY )**

Salesforceカスタムオブジェクト「テストオブジェクト」(例としてオブジェクト名が QuickStart__c であるとします)にレコードを追加するRubyプログラムを作成します。

```
[ec2-user@example-ruby-sinatra-server ~]$ cd /home/ec2-user/insert_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 

[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ vi /home/ec2-user/insert_salesforce_restforce_api_test/insert_salesforce_api_test.rb
```

```rb:/home/ec2-user/insert_salesforce_restforce_api_test/insert_salesforce_api_test.rb
#!/bin/env ruby
#
require 'bundler/setup'
require 'restforce'
require 'date'

# Salesforce接続用インスタンス作成とSalesforce API認証
client = Restforce.new(
     host: ENV['DATABASEDOTCOM_HOST'],
     username: ENV['DATABASEDOTCOM_CLIENT_USERNAME'],
     password: ENV['DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD'],
     client_id: ENV['DATABASEDOTCOM_CLIENT_ID'],
     client_secret: ENV['DATABASEDOTCOM_CLIENT_SECRET']
)

now = Time.now
create_date = now.strftime("%Y-%m-%d")
insert_time = now.strftime("%Y%m%d_%H%M%S")
insert_name = "testname_Ruby_" + insert_time
insert_email = insert_name + "@hoge.example.com"

# Salesforceカスタムオブジェクトにレコードを登録する
client.create(
  'QuickStart__c',
  user_name__c: insert_name,
  user_email__c: insert_email,
  create_date__c: create_date
)

# Salesforceカスタムオブジェクトに登録されているレコード一覧を表示
client.query("SELECT user_name__c, user_email__c, create_date__c FROM QuickStart__c WHERE user_email__c LIKE '%Ruby%' AND create_date__c >= TODAY").each do|record|
  p "#{record.user_name__c} : #{record.user_email__c} #{record.create_date__c}"
end
```

これを実行すると、Salesforceカスタムオブジェクトへレコードを追加出来ます。

```
[ec2-user@example-ruby-sinatra-server ~]$ cd /home/ec2-user/insert_salesforce_restforce_api_test/
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ pwd
/home/ec2-user/insert_salesforce_restforce_api_test
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ ruby /home/ec2-user/insert_salesforce_restforce_api_test/insert_salesforce_api_test.rb
"testname_Ruby_20170311_133426 : testname_Ruby_20170311_133426@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_134741 : testname_Ruby_20170311_134741@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114515 : testname_Ruby_20170311_114515@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114654 : testname_Ruby_20170311_114654@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_134744 : testname_Ruby_20170311_134744@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_114637 : testname_Ruby_20170311_114637@hoge.example.com 2017-03-11"
"testname_Ruby120170311_134632 : testname_Ruby120170311_134632@hoge.example.com 2017-03-11"
"testname_Ruby1_20170311_134643 : testname_Ruby1_20170311_134643@hoge.example.com 2017-03-11"
"testname_Ruby_20170311_135450 : testname_Ruby_20170311_135450@hoge.example.com 2017-03-11"
[ec2-user@example-ruby-sinatra-server insert_salesforce_restforce_api_test]$ 
```

Salesforceカスタムオブジェクトに追加されたレコード
===

前述のRubyプログラムを実行する事で、Salesforceカスタムオブジェクト(QuickStart__c = テストオブジェクト)に以下のようにレコードが追加されました。

<img width="1263" alt="スクリーンショット 2017-03-11 13.57.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/63647/de52fbd7-17c8-a3fc-aec4-eed90772f37d.png">

<img width="1270" alt="スクリーンショット 2017-03-11 13.58.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/63647/89cdbc0d-cc50-087c-203e-867d4000af41.png">

<img width="1268" alt="スクリーンショット 2017-03-11 13.58.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/63647/501e26ac-51d4-6dd5-f4b6-51c62f7e29e9.png">

***

以上になります。