synchroniser 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/Gemfile +8 -0
- data/Rakefile +40 -5
- data/VERSION +1 -0
- data/init.rb +2 -0
- data/install.rb +1 -0
- data/lib/sync_item.rb +15 -0
- data/lib/synchroniser/config.rb +6 -11
- data/lib/synchroniser/model.rb +6 -4
- data/lib/synchroniser/version.rb +2 -2
- data/lib/synchroniser.rb +29 -19
- data/spec/.gitignore +1 -0
- data/spec/db/.gitignore +1 -0
- data/spec/db/database.yml +1 -1
- data/spec/fixtures/sync_item.yml +6 -0
- data/spec/spec_helper.rb +8 -7
- data/spec/synchroniser_spec.rb +21 -15
- data/synchroniser.gemspec +82 -0
- data/test/docs/ingestors/rss.yml +9 -0
- data/uninstall.rb +1 -0
- metadata +67 -26
- data/test/docs/ingestors.yml +0 -10
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
CHANGED
@@ -1,11 +1,46 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "synchroniser"
|
8
|
+
gem.summary = %Q{A wee synchroniser for a data source and a data sink.}
|
9
|
+
gem.description = %Q{A wee synchroniser for a data source and a data sink.}
|
10
|
+
gem.email = "rob@sharp.id.au"
|
11
|
+
gem.homepage = "http://github.com/robsharp/synchroniser"
|
12
|
+
gem.authors = ["Rob Sharp"]
|
13
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
gem.add_development_dependency "rcov"
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
Jeweler::GemcutterTasks.new
|
18
|
+
rescue LoadError
|
19
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
|
+
end
|
21
|
+
|
2
22
|
require 'spec/rake/spectask'
|
23
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
24
|
+
spec.libs << 'lib' << 'spec'
|
25
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
26
|
+
end
|
27
|
+
|
28
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
29
|
+
spec.libs << 'lib' << 'spec'
|
30
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
31
|
+
spec.rcov = true
|
32
|
+
end
|
33
|
+
|
34
|
+
task :spec => :check_dependencies
|
3
35
|
|
4
|
-
desc 'Default: run specs.'
|
5
36
|
task :default => :spec
|
6
37
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
38
|
+
require 'rake/rdoctask'
|
39
|
+
Rake::RDocTask.new do |rdoc|
|
40
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
41
|
+
|
42
|
+
rdoc.rdoc_dir = 'rdoc'
|
43
|
+
rdoc.title = "synchroniser #{version}"
|
44
|
+
rdoc.rdoc_files.include('README*')
|
45
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
11
46
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.4.1
|
data/init.rb
ADDED
data/install.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Install hook code here
|
data/lib/sync_item.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
3
|
class SyncItem < ActiveRecord::Base
|
4
|
+
|
5
|
+
def self.reset_flags(container)
|
6
|
+
counter = 0
|
7
|
+
|
8
|
+
SyncItem.find_all_by_group(container.group).each {|flag|
|
9
|
+
flag.status = 0
|
10
|
+
flag.save
|
11
|
+
counter += 1
|
12
|
+
}
|
13
|
+
|
14
|
+
SyncItem.logger.info("Reset status for the set '#{container.group}'")
|
15
|
+
|
16
|
+
counter
|
17
|
+
end
|
18
|
+
|
4
19
|
end
|
data/lib/synchroniser/config.rb
CHANGED
@@ -4,17 +4,12 @@ module Synchroniser::Config
|
|
4
4
|
|
5
5
|
attr_accessor :config
|
6
6
|
|
7
|
-
def initialize(file_name, ingestor_name)
|
8
|
-
file_path = RAILS_ROOT
|
9
|
-
config = YAML::load(File.open(
|
7
|
+
def initialize(file_name, ingestor_name, defaults={})
|
8
|
+
file_path = "#{RAILS_ROOT}#{file_name}"
|
9
|
+
config = YAML::load(File.open(file_path))
|
10
10
|
|
11
|
-
environment = RAILS_ENV
|
12
|
-
if config[RAILS_ENV].nil?
|
13
|
-
environment = "test"
|
14
|
-
end
|
15
|
-
|
16
11
|
begin
|
17
|
-
@config = config[
|
12
|
+
@config = config[RAILS_ENV]
|
18
13
|
rescue
|
19
14
|
@config = nil
|
20
15
|
raise ArgumentError, "Unable to find the #{environment} stanza for #{ingestor_name}' in the configuration file supplied"
|
@@ -23,6 +18,8 @@ module Synchroniser::Config
|
|
23
18
|
if @config.nil?
|
24
19
|
raise ArgumentError, "Unable to find the stanza '#{ingestor_name}' in the configuration file supplied"
|
25
20
|
end
|
21
|
+
|
22
|
+
@config["params"]["container"]["defaults"].merge!(defaults) unless defaults.empty?
|
26
23
|
end
|
27
24
|
|
28
25
|
def get_sync
|
@@ -39,13 +36,11 @@ module Synchroniser::Config
|
|
39
36
|
@config['params']['url'].each { |url|
|
40
37
|
@ingestor.load(url)
|
41
38
|
strategies << @ingestor.clone
|
42
|
-
puts url
|
43
39
|
|
44
40
|
# not sure if this will actually work
|
45
41
|
@ingestor.pagination.each do |url|
|
46
42
|
@ingestor.load(url)
|
47
43
|
strategies << @ingestor.clone
|
48
|
-
puts url
|
49
44
|
end
|
50
45
|
}
|
51
46
|
strategies
|
data/lib/synchroniser/model.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
module Synchroniser::Model
|
2
2
|
require File.join(File.dirname(__FILE__), '..', 'sync_item.rb')
|
3
3
|
|
4
|
-
def find_all_flags
|
5
|
-
SyncItem.find_all_by_group(group)
|
6
|
-
end
|
7
|
-
|
8
4
|
def delete_expired_items
|
9
5
|
params = {:status => false,
|
10
6
|
:group => group}
|
@@ -52,4 +48,10 @@ module Synchroniser::Model
|
|
52
48
|
@@group
|
53
49
|
end
|
54
50
|
|
51
|
+
def verify
|
52
|
+
if self.item.nil?
|
53
|
+
raise NotImplementedError, "Method call '#{self.class}.item' is returning null. Please ensure it returns a unique value per instance."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
55
57
|
end
|
data/lib/synchroniser/version.rb
CHANGED
data/lib/synchroniser.rb
CHANGED
@@ -2,6 +2,7 @@ class Synchroniser
|
|
2
2
|
|
3
3
|
attr_accessor :container
|
4
4
|
attr_accessor :ingestors
|
5
|
+
attr_accessor :stats
|
5
6
|
|
6
7
|
def initialize(container, ingestors)
|
7
8
|
@container = container
|
@@ -14,37 +15,46 @@ class Synchroniser
|
|
14
15
|
}.flatten
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
-
stats = {}
|
19
|
-
|
18
|
+
def verify_container
|
20
19
|
if @container.group.nil?
|
21
20
|
raise ArgumentError, "Group not set on container '#{@container.class}'"
|
22
21
|
end
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
stats[:seed] += 1
|
29
|
-
}
|
24
|
+
def sync
|
25
|
+
initialise_stats
|
26
|
+
|
27
|
+
verify_container
|
30
28
|
|
31
|
-
|
29
|
+
# reset flags and store the number of flags reset
|
30
|
+
@stats[:seed] = SyncItem.reset_flags(@container)
|
32
31
|
|
33
|
-
stats[:ingestable] = 0
|
34
32
|
ingest.each {|item|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
item.save
|
39
|
-
|
40
|
-
|
33
|
+
|
34
|
+
item.verify
|
35
|
+
|
36
|
+
if item.save
|
37
|
+
@stats[:ingested] += 1
|
38
|
+
end
|
39
|
+
@stats[:ingestable] += 1
|
41
40
|
}
|
42
41
|
|
43
42
|
@container.delete_expired_items
|
43
|
+
end
|
44
44
|
|
45
|
-
|
46
|
-
|
45
|
+
def display_stats
|
46
|
+
@stats[:failed] = @stats['ingestable'] - @stats['ingested']
|
47
|
+
puts "Initial seeding of #{@stats[:seed]}"
|
48
|
+
puts "Ingestor found #{@stats[:ingestable]} items, #{@stats[:ingested]} ingested, #{@stats[:failed]} failed."
|
47
49
|
end
|
50
|
+
|
51
|
+
def initialise_stats
|
52
|
+
@stats = {}
|
53
|
+
[:ingestable, :ingested, :seed].map() { |var|
|
54
|
+
@stats[var] = 0
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
48
58
|
end
|
49
59
|
|
50
60
|
require File.join(File.dirname(__FILE__), 'synchroniser', 'config.rb')
|
data/spec/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
data/spec/db/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
synchroniser.sqlite3.db
|
data/spec/db/database.yml
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
exit
|
6
|
-
end
|
1
|
+
require 'rubygems'
|
2
|
+
require 'active_record'
|
3
|
+
require 'sqlite3'
|
4
|
+
require 'logger'
|
7
5
|
|
8
6
|
plugin_spec_dir = File.dirname(__FILE__)
|
9
7
|
ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
|
10
|
-
|
11
8
|
databases = YAML::load(IO.read(plugin_spec_dir + "/db/database.yml"))
|
12
9
|
ActiveRecord::Base.establish_connection(databases[ENV["DB"] || "sqlite3"])
|
13
10
|
load(File.join(plugin_spec_dir, "db", "schema.rb"))
|
14
11
|
|
12
|
+
|
13
|
+
RAILS_ENV = "test"
|
14
|
+
RAILS_ROOT = "./"
|
15
|
+
|
15
16
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'synchroniser.rb')
|
16
17
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'post.rb')
|
17
18
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'dummy_ingestor.rb')
|
data/spec/synchroniser_spec.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
|
3
|
-
item = "abc123"
|
4
|
-
group = "def456"
|
2
|
+
require 'pp'
|
5
3
|
|
6
4
|
describe Synchroniser do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
# set our defaults
|
8
|
+
@item = "abc123"
|
9
|
+
@group = "def456"
|
10
|
+
|
11
|
+
# clear out the current synchronisation
|
12
|
+
SyncItem.find(:all).map { |item| item.destroy }
|
13
|
+
end
|
14
|
+
|
7
15
|
it "should always create a new post with new data" do
|
8
|
-
container = Post.new({:url => item, :group => group})
|
16
|
+
container = Post.new({:url => @item, :group => @group})
|
9
17
|
ingestors = [ DummyIngestor.new ]
|
10
18
|
sync = Synchroniser.new(container, ingestors)
|
11
19
|
sync_data = sync.ingest
|
@@ -15,11 +23,11 @@ describe Synchroniser do
|
|
15
23
|
it "should never create a new post with an existing object" do
|
16
24
|
#TODO should use a fixture instead
|
17
25
|
a = SyncItem.new
|
18
|
-
a.item = item
|
19
|
-
a.group = group
|
26
|
+
a.item = @item
|
27
|
+
a.group = @group
|
20
28
|
a.save
|
21
29
|
|
22
|
-
container = Post.new({:url => item, :group => group})
|
30
|
+
container = Post.new({:url => @item, :group => @group})
|
23
31
|
ingestors = [ DummyIngestor.new ]
|
24
32
|
sync = Synchroniser.new(container, ingestors)
|
25
33
|
sync_data = sync.ingest
|
@@ -27,39 +35,37 @@ describe Synchroniser do
|
|
27
35
|
end
|
28
36
|
|
29
37
|
it "should set the correct container group from a config" do
|
30
|
-
config = Synchroniser::Config::Params.new("
|
38
|
+
config = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss")
|
31
39
|
synchroniser = config.get_sync
|
32
40
|
synchroniser.container.group.should == "rss_test_feed"
|
33
41
|
end
|
34
42
|
|
35
43
|
it "should set the correct model group from a config" do
|
36
|
-
config = Synchroniser::Config::Params.new("
|
44
|
+
config = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss")
|
37
45
|
synchroniser = config.get_sync
|
38
46
|
synchroniser.ingest[0].group.should == "rss_test_feed"
|
39
47
|
end
|
40
48
|
|
41
49
|
it "should set the correct url from a config" do
|
42
|
-
synchroniser = Synchroniser::Config::Params.new("
|
50
|
+
synchroniser = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss").get_sync
|
43
51
|
synchroniser.ingest[0].url.should == "http://news.bbc.co.uk/sport1/hi/football/teams/n/newcastle_united/8329055.stm"
|
44
52
|
end
|
45
53
|
|
46
54
|
it "should correctly set the title upon ingestion" do
|
47
|
-
synchroniser = Synchroniser::Config::Params.new("
|
55
|
+
synchroniser = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss").get_sync
|
48
56
|
synchroniser.ingest[0].title.should == "Ashley takes Newcastle off market"
|
49
57
|
end
|
50
58
|
|
51
59
|
it "should set container defaults corrently" do
|
52
|
-
synchroniser = Synchroniser::Config::Params.new("
|
60
|
+
synchroniser = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss").get_sync
|
53
61
|
synchroniser.container.test_default.should == "random_default_name"
|
54
62
|
end
|
55
63
|
|
56
64
|
it "should sync without error" do
|
57
|
-
synchroniser = Synchroniser::Config::Params.new("
|
65
|
+
synchroniser = Synchroniser::Config::Params.new("test/docs/ingestors/rss.yml", "rss").get_sync
|
58
66
|
synchroniser.sync
|
59
67
|
SyncItem.find(:all)[0].item.should == "http://news.bbc.co.uk/sport1/hi/football/teams/n/newcastle_united/8329055.stm"
|
60
68
|
SyncItem.find(:all)[0].group.should == "rss_test_feed"
|
61
69
|
end
|
62
70
|
|
63
|
-
|
64
|
-
|
65
71
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{synchroniser}
|
8
|
+
s.version = "0.4.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Rob Sharp"]
|
12
|
+
s.date = %q{2010-08-30}
|
13
|
+
s.description = %q{A wee synchroniser for a data source and a data sink.}
|
14
|
+
s.email = %q{rob@sharp.id.au}
|
15
|
+
s.files = [
|
16
|
+
".gitignore",
|
17
|
+
"Gemfile",
|
18
|
+
"MIT-LICENSE",
|
19
|
+
"Rakefile",
|
20
|
+
"Readme.rdoc",
|
21
|
+
"VERSION",
|
22
|
+
"autotest/discover.rb",
|
23
|
+
"generators/synchroniser/USAGE",
|
24
|
+
"generators/synchroniser/synchroniser_generator.rb",
|
25
|
+
"generators/synchroniser/templates/create_sync_items.rb",
|
26
|
+
"init.rb",
|
27
|
+
"install.rb",
|
28
|
+
"lib/dummy_ingestor.rb",
|
29
|
+
"lib/post.rb",
|
30
|
+
"lib/rss_ingestor.rb",
|
31
|
+
"lib/sync_item.rb",
|
32
|
+
"lib/synchroniser.rb",
|
33
|
+
"lib/synchroniser/config.rb",
|
34
|
+
"lib/synchroniser/ingestor.rb",
|
35
|
+
"lib/synchroniser/ingestor/uri.rb",
|
36
|
+
"lib/synchroniser/ingestor/yql.rb",
|
37
|
+
"lib/synchroniser/model.rb",
|
38
|
+
"lib/synchroniser/tasks/synchroniser.rake",
|
39
|
+
"lib/synchroniser/version.rb",
|
40
|
+
"rails/init.rb",
|
41
|
+
"spec/.gitignore",
|
42
|
+
"spec/db/.gitignore",
|
43
|
+
"spec/db/database.yml",
|
44
|
+
"spec/db/schema.rb",
|
45
|
+
"spec/fixtures/sync_item.yml",
|
46
|
+
"spec/spec.opts",
|
47
|
+
"spec/spec_helper.rb",
|
48
|
+
"spec/synchroniser_spec.rb",
|
49
|
+
"synchroniser.gemspec",
|
50
|
+
"tasks/synchroniser_tasks.rake",
|
51
|
+
"test/docs/ingestors/rss.yml",
|
52
|
+
"test/docs/rss.xml",
|
53
|
+
"uninstall.rb"
|
54
|
+
]
|
55
|
+
s.homepage = %q{http://github.com/robsharp/synchroniser}
|
56
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
57
|
+
s.require_paths = ["lib"]
|
58
|
+
s.rubygems_version = %q{1.3.7}
|
59
|
+
s.summary = %q{A wee synchroniser for a data source and a data sink.}
|
60
|
+
s.test_files = [
|
61
|
+
"spec/db/schema.rb",
|
62
|
+
"spec/synchroniser_spec.rb",
|
63
|
+
"spec/spec_helper.rb"
|
64
|
+
]
|
65
|
+
|
66
|
+
if s.respond_to? :specification_version then
|
67
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
68
|
+
s.specification_version = 3
|
69
|
+
|
70
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
71
|
+
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
72
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
73
|
+
else
|
74
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
75
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
76
|
+
end
|
77
|
+
else
|
78
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
79
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
data/uninstall.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Uninstall hook code here
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synchroniser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 4
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Rob Sharp
|
@@ -15,11 +15,40 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-30 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
22
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 2
|
33
|
+
- 9
|
34
|
+
version: 1.2.9
|
35
|
+
type: :development
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rcov
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
description: A wee synchroniser for a data source and a data sink.
|
23
52
|
email: rob@sharp.id.au
|
24
53
|
executables: []
|
25
54
|
|
@@ -28,41 +57,51 @@ extensions: []
|
|
28
57
|
extra_rdoc_files: []
|
29
58
|
|
30
59
|
files:
|
31
|
-
-
|
32
|
-
-
|
60
|
+
- .gitignore
|
61
|
+
- Gemfile
|
33
62
|
- MIT-LICENSE
|
63
|
+
- Rakefile
|
64
|
+
- Readme.rdoc
|
65
|
+
- VERSION
|
34
66
|
- autotest/discover.rb
|
35
67
|
- generators/synchroniser/USAGE
|
36
68
|
- generators/synchroniser/synchroniser_generator.rb
|
37
69
|
- generators/synchroniser/templates/create_sync_items.rb
|
70
|
+
- init.rb
|
71
|
+
- install.rb
|
72
|
+
- lib/dummy_ingestor.rb
|
73
|
+
- lib/post.rb
|
38
74
|
- lib/rss_ingestor.rb
|
39
|
-
- lib/synchroniser.rb
|
40
75
|
- lib/sync_item.rb
|
41
|
-
- lib/
|
42
|
-
- lib/synchroniser/
|
76
|
+
- lib/synchroniser.rb
|
77
|
+
- lib/synchroniser/config.rb
|
78
|
+
- lib/synchroniser/ingestor.rb
|
43
79
|
- lib/synchroniser/ingestor/uri.rb
|
80
|
+
- lib/synchroniser/ingestor/yql.rb
|
44
81
|
- lib/synchroniser/model.rb
|
45
82
|
- lib/synchroniser/tasks/synchroniser.rake
|
46
83
|
- lib/synchroniser/version.rb
|
47
|
-
- lib/synchroniser/config.rb
|
48
|
-
- lib/synchroniser/ingestor.rb
|
49
|
-
- lib/post.rb
|
50
84
|
- rails/init.rb
|
51
|
-
- spec
|
85
|
+
- spec/.gitignore
|
86
|
+
- spec/db/.gitignore
|
52
87
|
- spec/db/database.yml
|
53
88
|
- spec/db/schema.rb
|
54
|
-
- spec/
|
89
|
+
- spec/fixtures/sync_item.yml
|
90
|
+
- spec/spec.opts
|
55
91
|
- spec/spec_helper.rb
|
56
|
-
-
|
57
|
-
-
|
92
|
+
- spec/synchroniser_spec.rb
|
93
|
+
- synchroniser.gemspec
|
58
94
|
- tasks/synchroniser_tasks.rake
|
95
|
+
- test/docs/ingestors/rss.yml
|
96
|
+
- test/docs/rss.xml
|
97
|
+
- uninstall.rb
|
59
98
|
has_rdoc: true
|
60
|
-
homepage: http://github.com/
|
99
|
+
homepage: http://github.com/robsharp/synchroniser
|
61
100
|
licenses: []
|
62
101
|
|
63
102
|
post_install_message:
|
64
|
-
rdoc_options:
|
65
|
-
|
103
|
+
rdoc_options:
|
104
|
+
- --charset=UTF-8
|
66
105
|
require_paths:
|
67
106
|
- lib
|
68
107
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -89,6 +128,8 @@ rubyforge_project:
|
|
89
128
|
rubygems_version: 1.3.7
|
90
129
|
signing_key:
|
91
130
|
specification_version: 3
|
92
|
-
summary: A
|
93
|
-
test_files:
|
94
|
-
|
131
|
+
summary: A wee synchroniser for a data source and a data sink.
|
132
|
+
test_files:
|
133
|
+
- spec/db/schema.rb
|
134
|
+
- spec/synchroniser_spec.rb
|
135
|
+
- spec/spec_helper.rb
|
data/test/docs/ingestors.yml
DELETED