restforce-db 1.2.5 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/lib/restforce/db/railtie.rb +19 -0
- data/lib/restforce/db/runner.rb +2 -1
- data/lib/restforce/db/version.rb +1 -1
- data/lib/restforce/db.rb +2 -0
- data/lib/tasks/restforce.rake +20 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1841b09cb85809cd87a0f6ae83a6447054b882a6
|
4
|
+
data.tar.gz: 625a699341da7e4291c50ccb93fa20d2a0b03b0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f8500084cc35f4bd96f51e0f9d8c5f3403c65affd1912bb96053ccc3f36c4191fabd449bcb20c6c4a00fb97c41b5dfcecd4384ccf4926985e18223eb5ebadc0
|
7
|
+
data.tar.gz: 3b1d6678aa40b3959540454c3cf8c0f5cccc63a62fd3e59cbe2e2ad1800e5b1f9d88773be23da7db9203be048255f1811501e64731c68045838866fc98369032
|
data/README.md
CHANGED
@@ -173,6 +173,21 @@ In the above example, `Dish__c` is a Salesforce object type which references the
|
|
173
173
|
__NOTE__: Unlike `has_one` associations, `has_many` associations do not currently support multiple lookups from the same model. The Lookup is assumed
|
174
174
|
to always refer to the `Id` of the parent object.
|
175
175
|
|
176
|
+
### Seed your data
|
177
|
+
|
178
|
+
To populate your database with existing information from Salesforce (or vice-versa), you _could_ manually update each of the records you care about, and expect the Restforce::DB daemon to automatically pick them up when it runs. However, for any record type you need/want to _fully_ synchronize, this can be a very tedious process.
|
179
|
+
|
180
|
+
In these cases, you can run the `seed` rake task to synchronize the initial records between both systems.
|
181
|
+
|
182
|
+
$ bundle exec rake restforce:seed[<model>,<start_time>,<end_time>,<config>]
|
183
|
+
|
184
|
+
The task takes several arguments, most of which are optional:
|
185
|
+
|
186
|
+
- `model`: The name of the ActiveRecord model you wish to sync. This can be any model you've defined a mapping for in your application.
|
187
|
+
- `start_time` (optional): The earliest point in time for which records should be gathered.
|
188
|
+
- `end_time` (optional): The latest point in time for which records should be gathered.
|
189
|
+
- `config` (optional): The path to the file containing your Restforce::DB credentials. If not explicitly provided, the default installation file path (see above) will be used.
|
190
|
+
|
176
191
|
### Run the daemon
|
177
192
|
|
178
193
|
To actually perform this system synchronization, you'll want to run the binstub installed through the generator (see above). This will daemonize a process which loops repeatedly to continuously synchronize your database and your Salesforce account, according to the established mappings.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Restforce
|
2
|
+
|
3
|
+
module DB
|
4
|
+
|
5
|
+
# Restforce::DB::Railtie makes Restforce::DB's rake tasks available to any
|
6
|
+
# Rails application which requires the gem.
|
7
|
+
class Railtie < Rails::Railtie
|
8
|
+
|
9
|
+
railtie_name :"restforce-db"
|
10
|
+
|
11
|
+
rake_tasks do
|
12
|
+
load "tasks/restforce.rake"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/restforce/db/runner.rb
CHANGED
data/lib/restforce/db/version.rb
CHANGED
data/lib/restforce/db.rb
CHANGED
@@ -39,6 +39,8 @@ require "restforce/db/synchronizer"
|
|
39
39
|
require "restforce/db/tracker"
|
40
40
|
require "restforce/db/worker"
|
41
41
|
|
42
|
+
require "restforce/db/railtie" if defined?(Rails)
|
43
|
+
|
42
44
|
module Restforce
|
43
45
|
|
44
46
|
# Restforce::DB exposes basic Restforce client configuration methods for use
|
@@ -0,0 +1,20 @@
|
|
1
|
+
namespace :restforce do
|
2
|
+
desc "Populate all records for a specific model within the specified timespan"
|
3
|
+
task :seed, [:model, :start_time, :end_time, :config] => :environment do |_, args|
|
4
|
+
raise ArgumentError, "the name of an ActiveRecord model must be supplied" unless args[:model]
|
5
|
+
|
6
|
+
config_file = args[:config] || Rails.root.join("config", "restforce-db.yml")
|
7
|
+
Restforce::DB.configure { |config| config.parse(config_file) }
|
8
|
+
|
9
|
+
runner = Restforce::DB::Runner.new
|
10
|
+
runner.after = Time.parse(args[:start_time]) if args[:start_time].present?
|
11
|
+
runner.before = Time.parse(args[:end_time]) if args[:end_time].present?
|
12
|
+
|
13
|
+
target_class = args[:model].constantize
|
14
|
+
Restforce::DB::Registry[target_class].each do |mapping|
|
15
|
+
puts "SYNCHRONIZING between #{mapping.database_model.name} and #{mapping.salesforce_model}"
|
16
|
+
Restforce::DB::Initializer.new(mapping, runner).run
|
17
|
+
puts "DONE"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restforce-db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Horner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -224,6 +224,7 @@ files:
|
|
224
224
|
- lib/restforce/db/instances/salesforce.rb
|
225
225
|
- lib/restforce/db/mapping.rb
|
226
226
|
- lib/restforce/db/model.rb
|
227
|
+
- lib/restforce/db/railtie.rb
|
227
228
|
- lib/restforce/db/record_types/active_record.rb
|
228
229
|
- lib/restforce/db/record_types/base.rb
|
229
230
|
- lib/restforce/db/record_types/salesforce.rb
|
@@ -238,6 +239,7 @@ files:
|
|
238
239
|
- lib/restforce/db/version.rb
|
239
240
|
- lib/restforce/db/worker.rb
|
240
241
|
- lib/restforce/extensions.rb
|
242
|
+
- lib/tasks/restforce.rake
|
241
243
|
- restforce-db.gemspec
|
242
244
|
- test/cassettes/Restforce_DB/accessing_Salesforce/uses_the_configured_credentials.yml
|
243
245
|
- test/cassettes/Restforce_DB_Associations_BelongsTo/with_an_inverse_mapping/_build/returns_an_associated_record_populated_with_the_Salesforce_attributes.yml
|