rhoconnect-adapters 1.0.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fe00eda4823af9c1a6e33150522bfeb53a459d65cb51860454e2b7c30004a64f
4
+ data.tar.gz: bf0757b195d294d045fe2a6e2406963d8a109c4d15287892a830995e85edecd9
5
+ SHA512:
6
+ metadata.gz: 2728abbb2dd0edd79c284f1af7fd26cac6a1214e68ee3bcb55668b7d71444780c506b97c146f4e3e9271f07614544efad086455ed65f6de8dbc7ebd795fb8333
7
+ data.tar.gz: 3caebc6b3a516c8383e283867220d9f39cb8f1e3be21ce149d12256c9f2a2c73dc7e5cf04fd176bb19d42cbeedb20fd7de23db24460107e5466030ebc40f6ff6
data/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ TODO
6
+ *~
data/CHANGELOG CHANGED
@@ -1,5 +1,16 @@
1
+ ## 1.0.6 (11-28-2012)
2
+ * Rework adapter method 'query' be able to paginate into (large) result sets for oracle, sugar, salesforce vendors
3
+ * Updated salesforce SOAP service version to v24.0 (it provides API paginate into backend data)
4
+ * Fixed not working specs under Linux
5
+
6
+ ## 1.0.5
7
+ * support for rhoconnect >= 3.2
8
+
1
9
  ## 1.0.4
2
- * support for rhoconnect >= 3.2.1
10
+ * support for rhoconnect ~> 3.3.1.beta
11
+
12
+ ## 1.0.3
13
+ * support for rhoconnect ~> 3.2.1
3
14
 
4
15
  ## 1.0.3.beta3
5
16
  * support for rhoconnect ~> 3.2.0.beta
@@ -16,4 +27,4 @@
16
27
  ## 1.0.0
17
28
  * Integration of Salesforce, MsDynamics, Sugar backends
18
29
  * #15178091 - Integration of OracleCRM backend, specs for generator
19
- * #14613211 - Initial creation of the rhoconnect-adapters
30
+ * #14613211 - Initial creation of the rhoconnect-adapters
data/Gemfile CHANGED
@@ -2,7 +2,6 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in rhoconnect-adapters.gemspec
4
4
  gemspec
5
- gem 'rake'
6
5
 
7
6
  group :test do
8
7
  gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
data/README.md CHANGED
@@ -123,7 +123,7 @@ These are:
123
123
  - **:msdynamics_ticket_url:** <msdynamics_web_services_integration_url> - substitute the default URL with your MsDynamics account URL.
124
124
 
125
125
  For every source adapter based on CRM object there is a corresponding *'vendor/msdynamics/settings/\<CRM\-object\-name\>.yml'*
126
- file containing the descriptions for the Sugar CRM object.
126
+ file containing the descriptions for the MsDynamics object.
127
127
  Every CRM object file has the following entries:
128
128
 
129
129
  Query_Fields: hash of the objects's fields
@@ -199,7 +199,7 @@ In the file `settings.yml` you'll find the entries that you must customize befor
199
199
  These are:
200
200
 
201
201
  - **:salesforce_login_url:** <salesforce_soap_login_url> - Currently, this parameter is pre-defined to
202
- `https://login.salesforce.com/services/Soap/c/22.0` for simple SOAP web service authentication.
202
+ `https://login.salesforce.com/services/Soap/c/24.0` for simple SOAP web service authentication.
203
203
  Rhoconnect-adapters is not using `OAuth2` scheme at this point.
204
204
 
205
205
  For every source adapter based on CRM object there is a corresponding *'vendor/salesforce/settings/\<CRM\-object\-name\>.yml'*
@@ -229,6 +229,73 @@ different fields. For custom adapters, you need to fill this file with relevant
229
229
  from the Salesforce documentation and then later used to fill the Query_Fields setting. Alternatively, user can customize the adapter and obtain
230
230
  the list of fields using the `/sobjects/<CRM-object-name>/describe/` API.
231
231
 
232
+ ## If you have large dataset on backend
233
+ If your application's model has a lot of data, when you might wanted to paginate through backend service data instead of fetching everything in one call. RhoConnect API provides
234
+ [ `stash_result`](http://docs.rhomobile.com/rhoconnect/source-adapters#source-adapter-api) method to do it.
235
+
236
+ For example, straightforward way to query data in Salesforce CRM adapter is
237
+
238
+ :::ruby
239
+ def query(params=nil)
240
+ @result = {}
241
+ fieldquery = ""
242
+ @fields.each do |element_name, element_def|
243
+ fieldquery << ",#{element_name}"
244
+ end
245
+ fieldquery[0] = " "
246
+
247
+ querystr = "SELECT #{fieldquery} FROM #{crm_object}"
248
+ requesturl = @resturl + "/query/?q=" + CGI::escape(querystr)
249
+ raw_data = RestClient.get(requesturl, @restheaders)
250
+ parsed_data = JSON.parse raw_data
251
+
252
+ if parsed_data['done']
253
+ parsed_data["records"].each do |record|
254
+ record_hash = {}
255
+ @fields.each do |element_name, element_def|
256
+ record_hash[element_name] = record[element_name]
257
+ end
258
+ @result[record['Id']] = record_hash
259
+ end
260
+ else
261
+ # TODO: queryMore
262
+ end
263
+ @result
264
+ end
265
+
266
+ In the case, if you wanted paginate through backend data the same `query` method should be rewritten as
267
+
268
+ :::ruby
269
+ def query(params=nil)
270
+ fieldquery = ""
271
+ @fields.each do |element_name, element_def|
272
+ fieldquery << ",#{element_name}"
273
+ end
274
+ fieldquery[0] = " "
275
+
276
+ # Paginate into (large) result sets staring with offset = 0 and page_sz = 100
277
+ offset, page_sz = 0, 100
278
+ loop do
279
+ querystr = "SELECT #{fieldquery} from #{crm_object} limit #{page_sz} offset #{offset}"
280
+ requesturl = @resturl + "/query/?q=" + CGI::escape(querystr)
281
+ raw_data = RestClient.get(requesturl, @restheaders)
282
+ parsed_data = JSON.parse raw_data
283
+
284
+ @result ||= {}
285
+ parsed_data["records"].each do |record|
286
+ record_hash = {}
287
+ @fields.each do |element_name, element_def|
288
+ record_hash[element_name] = record[element_name]
289
+ end
290
+ @result[record['Id']] = record_hash
291
+ end
292
+ stash_result # => @result is nil now
293
+ break if parsed_data['done']
294
+ offset += page_sz
295
+ end
296
+ end
297
+
298
+ `rhoconnect-adapters` gem provides reference implementation of paginating in `query` method for Sugar, Salesforce, and OracleOnDemand adapters.
232
299
 
233
300
  ## Running the CRM Application
234
301
  Once your Rhoconnect application is customized and ready to run, you can start it like any other Rhoconnect app.
@@ -240,4 +307,4 @@ Type the following command in the CRM application's root directory:
240
307
  ## Meta
241
308
  Created and maintained by Rhomobile Inc.
242
309
 
243
- Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
310
+ Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
@@ -43,7 +43,7 @@ module RhoconnectAdapters
43
43
  def get_object_settings
44
44
  return @object_settings if @object_settings
45
45
  begin
46
- @object_settings = RhoconnectAdapters::CRM::Field.load_file(File.join(ROOT_PATH,'vendor','ms_dynamics','settings',"#{crm_object.downcase}.yml"))
46
+ @object_settings = RhoconnectAdapters::CRM::Field.load_file(File.join(ROOT_PATH,'vendor','ms_dynamics','settings',"#{crm_object}.yml"))
47
47
  rescue Exception => e
48
48
  puts "Error opening CRMObjects settings file: #{e}"
49
49
  puts e.backtrace.join("\n")
@@ -89,14 +89,7 @@ module RhoconnectAdapters
89
89
  end
90
90
 
91
91
  def query(params=nil)
92
- # TODO: Query your backend data source and assign the records
93
- # to a nested hash structure called @result. For example:
94
- # @result = {
95
- # "1"=>{"name"=>"Acme", "industry"=>"Electronics"},
96
- # "2"=>{"name"=>"Best", "industry"=>"Software"}
97
- # }
98
- @result = {}
99
-
92
+ @result = {}
100
93
  attributes = []
101
94
  # strip out artificial 'attrtype' fields
102
95
  fields.each do |key, val|
@@ -298,4 +291,4 @@ module RhoconnectAdapters
298
291
  end
299
292
  end
300
293
  end
301
- end
294
+ end
@@ -10,13 +10,14 @@ describe "Application" do
10
10
 
11
11
  it "should authenticate" do
12
12
  auth_info = RhoconnectAdapters::CRM::MsDynamics.load_auth_info(@test_user)
13
+ auth_info.should_not be_nil
13
14
  now = DateTime.now
14
15
  should_be_between(auth_info['wlid_expires'],now,(now+(60 * 60 * 24)))
15
16
  should_be_between(auth_info['crm_ticket_expires'],now,(now+(60 * 60 * 24)))
16
17
  end
17
18
 
18
19
  it "should not authenticate with wrong credentials" do
19
- Application.should_receive(:warn).once.with('Can\'t authenticate user wrong_user: #<RuntimeError: RhoconnectAdapters::CRM::MsDynamics::WlidService error w/ IssueTicket: Authentication Failure (0x80041034): The specified member name is either invalid or empty.&#13;>')
20
+ Application.should_receive(:warn).once.with('Can\'t authenticate user wrong_user: #<RuntimeError: RhoconnectAdapters::CRM::MsDynamics::WlidService error w/ IssueTicket: Authentication Failure (0x80041034): The specified member name is either invalid or empty.&#xD;>')
20
21
  Application.authenticate('wrong_user','wrong_password',nil).should be_false
21
22
  end
22
23
  end
@@ -180,41 +180,65 @@ module RhoconnectAdapters
180
180
  end
181
181
 
182
182
  def query(params=nil)
183
- # TODO: Query your backend data source and assign the records
184
- # to a nested hash structure called @result. For example:
185
- # @result = {
186
- # "1"=>{"name"=>"Acme", "industry"=>"Electronics"},
187
- # "2"=>{"name"=>"Best", "industry"=>"Software"}
188
- # }
189
- @result = {}
183
+ #
184
+ # Straightforward way to query data. Dot not fit for large result sets.
185
+ #
186
+ # @result = {}
187
+ # fetch_more = 'true'
188
+ # start_row = 0
189
+ # begin
190
+ # soap_body = "<wsdl:ListOf#{crm_object} recordcountneeded=\"true\" pagesize=\"100\" startrownum=\"#{start_row.to_s}\">
191
+ # <wsdl:#{crm_object} searchspec=\"\">
192
+ # #{Adapter.get_columns(fields)}
193
+ # </wsdl:#{crm_object}>
194
+ # </wsdl:ListOf#{crm_object}>"
195
+ #
196
+ # query_results = execute_soap_action('QueryPage', soap_body)
197
+ # fetch_more = query_results['lastpage'] == 'true' ? false : true;
198
+ #
199
+ # query_results.children.each do |record|
200
+ # if record.name == "#{crm_object}"
201
+ # id_field = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:Id")
202
+ # converted_record = {}
203
+ # # grab only the allowed fields
204
+ # fields.each do |element_name,element_def|
205
+ # converted_record[element_name] = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:#{element_name}")
206
+ # end
207
+ # @result[id_field] = converted_record
208
+ # end
209
+ # end
210
+ # start_row = @result.size
211
+ # end while fetch_more
212
+ # @result
213
+
214
+ # Use stash_result instead of accumulating output in @result in every loop
190
215
  fetch_more = 'true'
191
216
  start_row = 0
192
217
  begin
193
-
194
218
  soap_body = "<wsdl:ListOf#{crm_object} recordcountneeded=\"true\" pagesize=\"100\" startrownum=\"#{start_row.to_s}\">
195
- <wsdl:#{crm_object} searchspec=\"\">
196
- #{Adapter.get_columns(fields)}
197
- </wsdl:#{crm_object}>
219
+ <wsdl:#{crm_object} searchspec=\"\">
220
+ #{Adapter.get_columns(fields)}
221
+ </wsdl:#{crm_object}>
198
222
  </wsdl:ListOf#{crm_object}>"
199
-
200
223
  query_results = execute_soap_action('QueryPage', soap_body)
201
224
  fetch_more = query_results['lastpage'] == 'true' ? false : true;
202
-
225
+
226
+ @result ||= {}
203
227
  query_results.children.each do |record|
204
228
  if record.name == "#{crm_object}"
205
- id_field = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:Id")
206
- converted_record = {}
207
- # grab only the allowed fields
208
- fields.each do |element_name,element_def|
209
- converted_record[element_name] = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:#{element_name}")
210
- end
211
- @result[id_field] = converted_record
212
- end
213
- end
214
- start_row = @result.size
215
- end while fetch_more
216
- @result
217
- end
229
+ id_field = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:Id")
230
+ converted_record = {}
231
+ # grab only the allowed fields
232
+ fields.each do |element_name,element_def|
233
+ converted_record[element_name] = RhoconnectAdapters::SoapService.select_node_text(record, "#{crm_object}doc:#{element_name}")
234
+ end
235
+ @result[id_field] = converted_record
236
+ end
237
+ end
238
+ stash_result
239
+ start_row = @result.size
240
+ end while fetch_more
241
+ end
218
242
 
219
243
  def sync
220
244
  # Manipulate @result before it is saved, or save it
@@ -418,4 +442,4 @@ module RhoconnectAdapters
418
442
  end
419
443
  end
420
444
  end
421
- end
445
+ end
@@ -33,7 +33,7 @@ module RhoconnectAdapters
33
33
  def get_object_settings
34
34
  return @object_settings if @object_settings
35
35
  begin
36
- @object_settings = RhoconnectAdapters::CRM::Field.load_file(File.join(ROOT_PATH,'vendor','salesforce','settings',"#{crm_object.downcase}.yml"))
36
+ @object_settings = RhoconnectAdapters::CRM::Field.load_file(File.join(ROOT_PATH,'vendor','salesforce','settings',"#{crm_object}.yml"))
37
37
  rescue Exception => e
38
38
  puts "Error opening CRMObjects settings file: #{e}"
39
39
  puts e.backtrace.join("\n")
@@ -105,13 +105,33 @@ module RhoconnectAdapters
105
105
  end
106
106
 
107
107
  def query(params=nil)
108
- # TODO: Query your backend data source and assign the records
109
- # to a nested hash structure called @result. For example:
110
- # @result = {
111
- # "1"=>{"name"=>"Acme", "industry"=>"Electronics"},
112
- # "2"=>{"name"=>"Best", "industry"=>"Software"}
113
- # }
114
- @result = {}
108
+ #
109
+ # Straightforward way to query data. Dot not fit for large result sets.
110
+ #
111
+ # @result = {}
112
+ # fieldquery = ""
113
+ # @fields.each do |element_name, element_def|
114
+ # fieldquery << ",#{element_name}"
115
+ # end
116
+ # fieldquery[0] = " "
117
+ #
118
+ # querystr = "SELECT #{fieldquery} FROM #{crm_object}"
119
+ # requesturl = @resturl + "/query/?q=" + CGI::escape(querystr)
120
+ # raw_data = RestClient.get(requesturl, @restheaders)
121
+ # parsed_data = JSON.parse raw_data
122
+ #
123
+ # if parsed_data['done']
124
+ # parsed_data["records"].each do |record|
125
+ # record_hash = {}
126
+ # @fields.each do |element_name, element_def|
127
+ # record_hash[element_name] = record[element_name]
128
+ # end
129
+ # @result[record['Id']] = record_hash
130
+ # end
131
+ # else
132
+ # # TODO: queryMore
133
+ # end
134
+ # @result
115
135
 
116
136
  fieldquery = ""
117
137
  @fields.each do |element_name, element_def|
@@ -119,23 +139,28 @@ module RhoconnectAdapters
119
139
  end
120
140
  fieldquery[0] = " "
121
141
 
122
- querystr = "SELECT #{fieldquery} from #{crm_object}"
142
+ # Paginate into (large) result sets staring with offset = 0 and page_sz = 100
143
+ offset, page_sz = 0, 100
144
+ loop do
145
+ querystr = "SELECT #{fieldquery} from #{crm_object} limit #{page_sz} offset #{offset}"
146
+ requesturl = @resturl + "/query/?q=" + CGI::escape(querystr)
147
+ raw_data = RestClient.get(requesturl, @restheaders)
148
+ parsed_data = JSON.parse raw_data
123
149
 
124
- requesturl = @resturl + "/query/?q=" + CGI::escape(querystr)
125
- raw_data = RestClient.get(requesturl, @restheaders)
126
- parsed_data = JSON.parse raw_data
127
-
128
- parsed_data["records"].each do |record|
129
- record_hash = {}
130
- @fields.each do |element_name, element_def|
131
- record_hash[element_name] = record[element_name]
150
+ @result ||= {}
151
+ parsed_data["records"].each do |record|
152
+ record_hash = {}
153
+ @fields.each do |element_name, element_def|
154
+ record_hash[element_name] = record[element_name]
155
+ end
156
+ @result[record['Id']] = record_hash
132
157
  end
133
- @result[record['Id']] = record_hash
158
+ stash_result # => @result is nil now
159
+ break if parsed_data['done']
160
+ offset += page_sz
134
161
  end
135
-
136
- @result
137
162
  end
138
-
163
+
139
164
  def metadata
140
165
  # define the metadata
141
166
  show_fields = []
@@ -316,4 +341,4 @@ module RhoconnectAdapters
316
341
  end
317
342
  end
318
343
  end
319
- end
344
+ end
@@ -29,7 +29,7 @@ module RhoconnectAdapters
29
29
  # here, requestUrl is formatted for SOAP requests
30
30
  # and we removing Soap part for it (which is suffix after services)
31
31
  # since we will user REST after that
32
- endpoint_url = res_hash['serverUrl'].split('services')[0] + 'services/data/v22.0'
32
+ endpoint_url = res_hash['serverUrl'].split('services')[0] + 'services/data/v24.0'
33
33
 
34
34
  # store password to be used by SourceAdaptors
35
35
  Store.put_value("#{username}:session_id", session_id)
@@ -104,12 +104,31 @@ module RhoconnectAdapters
104
104
  end
105
105
 
106
106
  def query(params=nil)
107
- @result = {}
107
+ #
108
+ # Straightforward way to query data. Dot not fit for large result sets.
109
+ #
110
+ # @result = {}
111
+ # conditions = {:conditions=>{}}
112
+ # conditions[:conditions][:assigned_user_id] = @namespace.current_user.id
113
+ # results = get_results(conditions)
114
+ # @result = create_result_hash(results)
115
+
116
+ # Use stash_result to paginate into result sets
108
117
  conditions = {:conditions=>{}}
109
118
  conditions[:conditions][:assigned_user_id] = @namespace.current_user.id
110
- results = get_results(conditions)
111
-
112
- @result = create_result_hash(results)
119
+ offset, page_sz = 0, 100
120
+ conditions[:limit] = page_sz
121
+
122
+ loop do
123
+ conditions[:offset] = offset
124
+ results = get_results(conditions)
125
+ @result = create_result_hash(results)
126
+ rec_num = @result.size
127
+ stash_result
128
+
129
+ break if rec_num < page_sz
130
+ offset += page_sz
131
+ end
113
132
  end
114
133
 
115
134
  def metadata
@@ -1,3 +1,3 @@
1
1
  module RhoconnectAdapters
2
- VERSION = "1.0.4"
2
+ VERSION = "1.1.2"
3
3
  end
@@ -4,12 +4,13 @@ require "rhoconnect-adapters/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "rhoconnect-adapters"
7
- s.version = RhoconnectAdapters::VERSION
7
+ #s.version = RhoconnectAdapters::VERSION
8
+ s.version = File.read('version').chomp
8
9
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Rhomobile"]
10
+ s.authors = ['TAU Technologies']
10
11
  s.date = Time.now.strftime('%Y-%m-%d')
11
- s.email = %q{dev@rhomobile.com}
12
- s.homepage = %q{http://rhomobile.com/products/rhoconnect-adapters}
12
+ s.email = 'info@tau-technologies.com'
13
+ s.homepage = 'http://tau-technologies.com/'
13
14
  s.summary = %q{Rhoconnect adapters}
14
15
  s.description = %q{Rhoconnect out-of-the box adapters}
15
16
 
@@ -26,11 +27,12 @@ Gem::Specification.new do |s|
26
27
  "README.md"
27
28
  ]
28
29
 
29
- s.add_dependency('bundler', '~> 1.0')
30
- s.add_dependency('rhoconnect', '~> 3.3.1.beta')
31
- s.add_dependency('activesupport', '>= 3.0.9')
32
- s.add_dependency('i18n', '>= 0.6.0')
33
- #s.add_dependency('rake', '~> 0.9.2')
34
- s.add_dependency('nokogiri', '>= 1.4.6')
35
- s.add_dependency('templater', '~> 1.0.0')
30
+ s.add_dependency('bundler', '1.13.7')
31
+ s.add_dependency('rhoconnect', '>= 5.5.0')
32
+ s.add_dependency('activesupport', '3.0.9')
33
+ s.add_dependency('i18n', '0.7.0')
34
+ s.add_dependency('rake', '10.4.0')
35
+ s.add_dependency('nokogiri', '1.7.1')
36
+ s.add_dependency('templater', '1.0.0')
37
+
36
38
  end
data/version ADDED
@@ -0,0 +1 @@
1
+ 1.1.5
metadata CHANGED
@@ -1,121 +1,122 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhoconnect-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
5
- prerelease:
4
+ version: 1.1.5
6
5
  platform: ruby
7
6
  authors:
8
- - Rhomobile
7
+ - TAU Technologies
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-16 00:00:00.000000000 Z
11
+ date: 2021-01-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: '1.0'
19
+ version: 1.13.7
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: '1.0'
26
+ version: 1.13.7
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rhoconnect
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
- version: 3.3.1.beta
33
+ version: 5.5.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
- version: 3.3.1.beta
40
+ version: 5.5.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: activesupport
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 3.0.9
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 3.0.9
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: i18n
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '='
68
60
  - !ruby/object:Gem::Version
69
- version: 0.6.0
61
+ version: 0.7.0
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '='
76
67
  - !ruby/object:Gem::Version
77
- version: 0.6.0
68
+ version: 0.7.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 10.4.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 10.4.0
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: nokogiri
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - '='
84
88
  - !ruby/object:Gem::Version
85
- version: 1.4.6
89
+ version: 1.7.1
86
90
  type: :runtime
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - '='
92
95
  - !ruby/object:Gem::Version
93
- version: 1.4.6
96
+ version: 1.7.1
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: templater
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ~>
101
+ - - '='
100
102
  - !ruby/object:Gem::Version
101
103
  version: 1.0.0
102
104
  type: :runtime
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ~>
108
+ - - '='
108
109
  - !ruby/object:Gem::Version
109
110
  version: 1.0.0
110
111
  description: Rhoconnect out-of-the box adapters
111
- email: dev@rhomobile.com
112
+ email: info@tau-technologies.com
112
113
  executables:
113
114
  - rhoconnect-adapters
114
115
  extensions: []
115
116
  extra_rdoc_files:
116
117
  - README.md
117
118
  files:
118
- - .gitignore
119
+ - ".gitignore"
119
120
  - CHANGELOG
120
121
  - Gemfile
121
122
  - README.md
@@ -220,32 +221,28 @@ files:
220
221
  - spec/apps/sugar_spec.rb
221
222
  - spec/generator/generator_spec.rb
222
223
  - spec/spec_helper.rb
223
- homepage: http://rhomobile.com/products/rhoconnect-adapters
224
+ - version
225
+ homepage: http://tau-technologies.com/
224
226
  licenses: []
227
+ metadata: {}
225
228
  post_install_message:
226
229
  rdoc_options: []
227
230
  require_paths:
228
231
  - lib
229
232
  required_ruby_version: !ruby/object:Gem::Requirement
230
- none: false
231
233
  requirements:
232
- - - ! '>='
234
+ - - ">="
233
235
  - !ruby/object:Gem::Version
234
236
  version: '0'
235
- segments:
236
- - 0
237
- hash: -680318861906100889
238
237
  required_rubygems_version: !ruby/object:Gem::Requirement
239
- none: false
240
238
  requirements:
241
- - - ! '>='
239
+ - - ">="
242
240
  - !ruby/object:Gem::Version
243
241
  version: '0'
244
242
  requirements: []
245
- rubyforge_project:
246
- rubygems_version: 1.8.24
243
+ rubygems_version: 3.0.8
247
244
  signing_key:
248
- specification_version: 3
245
+ specification_version: 4
249
246
  summary: Rhoconnect adapters
250
247
  test_files:
251
248
  - spec/apps/ms_dynamics_spec.rb