activesalesforce 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -60,7 +60,7 @@ module ActiveRecord
60
60
  def create_sobject()
61
61
  fields = @attributes.changed_fields
62
62
 
63
- sobj = [ 'type { :xmlns => "urn:sobject.partner.soap.sforce.com" }', self.class.name ]
63
+ sobj = [ 'type { :xmlns => "urn:sobject.partner.soap.sforce.com" }', self.class.table_name ]
64
64
  sobj << 'Id { :xmlns => "urn:sobject.partner.soap.sforce.com" }' << self.Id if self.Id
65
65
 
66
66
  # now add any changed fields
@@ -106,7 +106,9 @@ module ActiveRecord
106
106
  end
107
107
 
108
108
  def self.table_name
109
- class_name_of_active_record_descendant(self)
109
+ # Undo weird camilization that messes with custom object names
110
+ name = self.name
111
+ name.last(6) == "Custom" ? name.first(name.length - 6) << "__c" : name
110
112
  end
111
113
 
112
114
  def self.primary_key
@@ -64,7 +64,16 @@ module ActiveRecord
64
64
 
65
65
 
66
66
  module ConnectionAdapters
67
- class SalesforceError < StandardError
67
+ class SalesforceError < RuntimeError
68
+ attr :fault
69
+
70
+ def initialize(message, fault)
71
+ super message
72
+
73
+ @fault = fault
74
+
75
+ #puts "\n\nError encountered: #{message}\n\n"
76
+ end
68
77
  end
69
78
 
70
79
  class SalesforceAdapter < AbstractAdapter
@@ -136,10 +145,12 @@ module ActiveRecord
136
145
  @batch_size = nil
137
146
 
138
147
  records = get_result(@connection.query(:queryString => soql), :query).records
148
+
149
+ result = []
150
+ return result unless records
139
151
 
140
152
  records = [ records ] unless records.is_a?(Array)
141
153
 
142
- result = []
143
154
  records.each do |record|
144
155
  attributes = Salesforce::SObjectAttributes.new(columns_map(record[:type]), record)
145
156
  result << attributes
@@ -169,13 +180,14 @@ module ActiveRecord
169
180
  def get_result(response, method)
170
181
  responseName = (method.to_s + "Response").to_sym
171
182
  finalResponse = response[responseName]
172
- raise SalesforceError, response.fault unless finalResponse
183
+
184
+ raise SalesforceError.new(response[:Fault].faultstring, response.fault) unless finalResponse
173
185
 
174
186
  result = finalResponse[:result]
175
187
  end
176
188
 
177
189
  def check_result(result)
178
- raise SalesforceError, result[:errors].message unless result[:success] == "true"
190
+ raise SalesforceError.new(result[:Errors], result[:Errors].Message) unless result[:success] == "true"
179
191
  result
180
192
  end
181
193
 
@@ -183,8 +195,6 @@ module ActiveRecord
183
195
  cached_columns = @columns_map[table_name]
184
196
  return cached_columns if cached_columns
185
197
 
186
- puts "describeSObject(#{table_name})"
187
-
188
198
  cached_columns = []
189
199
  @columns_map[table_name] = cached_columns
190
200
 
@@ -23,6 +23,10 @@ class AccountTest < Test::Unit::TestCase
23
23
 
24
24
 
25
25
  def test_update_account
26
+ acme = Account.new
27
+ acme.Name = "Acme"
28
+ acme.save
29
+
26
30
  acme = Account.find_by_Name('Acme')
27
31
 
28
32
  acme.Website = "http://www.dutchforce.com/#{Time.now}.jpg"
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: activesalesforce
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.7
7
- date: 2006-01-25 00:00:00 -05:00
6
+ version: 0.0.8
7
+ date: 2006-01-26 00:00:00 -05:00
8
8
  summary: ActiveSalesforce is an extension to the Rails Framework that allows for the dynamic creation and management of ActiveRecord objects through the use of Salesforce meta-data and uses a Salesforce.com organization as the backing store.
9
9
  require_paths:
10
10
  - lib