pyramid_scheme 0.2.5 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -20,4 +20,6 @@ pkg
20
20
 
21
21
  ## PROJECT::SPECIFIC
22
22
  *.gemspec
23
- spec/integrations/s3.yml
23
+ spec/integrations/s3.yml
24
+ spec/integrations/destination/*
25
+ spec/integrations/source/*
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ begin
13
13
  gem.authors = ["Dan Pickett"]
14
14
  gem.add_dependency "rake", ">= 0.8.7"
15
15
  gem.add_dependency "configatron"
16
- gem.add_dependency "aws-s3", ">= 0.5.1"
16
+ gem.add_dependency "aws-s3", ">= 0.6.2"
17
17
  gem.add_development_dependency "rspec", ">= 1.2.9"
18
18
  gem.add_development_dependency "yard", ">= 0"
19
19
  gem.add_development_dependency "mocha", "0.9.8"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.2.7
@@ -30,6 +30,10 @@ module PyramidScheme
30
30
  PyramidScheme::Configuration.set(&block)
31
31
  end
32
32
 
33
+ def self.configure_with_yml(path)
34
+ PyramidScheme::Configuration.set_from_yml(path)
35
+ end
36
+
33
37
  def self.configuration
34
38
  PyramidScheme::Configuration.new
35
39
  end
@@ -25,6 +25,15 @@ module PyramidScheme
25
25
  end
26
26
  end
27
27
 
28
+ def self.set_from_yml(path)
29
+ config_hash = YAML::load(File.open(path))
30
+ set do |config|
31
+ config_hash.each do |key, value|
32
+ config.send("#{key}=", value)
33
+ end
34
+ end
35
+ end
36
+
28
37
  def self.defaults
29
38
  {
30
39
  :lock_file_name => 'pyramid_scheme_index_in_progress.txt',
@@ -46,7 +46,7 @@ module PyramidScheme
46
46
  protected
47
47
  def ensure_required_options_are_present
48
48
  self.class.required_options.each do |opt|
49
- if @configuration[opt].nil?
49
+ if @configuration[opt].nil? || @configuration[opt] == ''
50
50
  raise PyramidScheme::RequiredConfigurationNotFound,
51
51
  "the #{opt} setting was not found"
52
52
  end
@@ -0,0 +1,6 @@
1
+ access_key: access_key
2
+ secret_access_key: secret_access_key
3
+ bucket: some_bucket
4
+ prefix: some_prefix
5
+ server_source_path: "/some/server/source"
6
+ client_destination_path: "/some/client/destination"
@@ -20,11 +20,16 @@ describe "S3 index provider" do
20
20
 
21
21
  describe "populating index files" do
22
22
  before(:each) do
23
+ FakeFS.deactivate!
24
+ clear_source
25
+ end
23
26
 
27
+ after(:each) do
28
+ FakeFS.activate!
24
29
  end
30
+
25
31
  it 'should copy all the relevant index files to s3 on processing' do
26
32
  FileUtils.mkdir_p(PyramidScheme.configuration[:server_source_path])
27
- FileUtils.mkdir_p(PyramidScheme.configuration[:server_destination_path])
28
33
  @filenames = [
29
34
  '.spi',
30
35
  '.spd',
@@ -36,7 +41,9 @@ describe "S3 index provider" do
36
41
  ].collect{|s| "some_index#{s}" }
37
42
 
38
43
  @filenames.each do |f|
39
- FileUtils.touch(File.join(PyramidScheme.configuration[:server_source_path], f))
44
+ File.open(File.join(PyramidScheme.configuration[:server_source_path], f), 'w') do |file|
45
+ file << 'contents'
46
+ end
40
47
  File.exists?(File.join(PyramidScheme.configuration[:server_source_path], f)).should be_true
41
48
  end
42
49
 
@@ -50,6 +57,15 @@ describe "S3 index provider" do
50
57
  end
51
58
 
52
59
  describe "providing index files" do
60
+ before(:each) do
61
+ FakeFS.deactivate!
62
+ clear_destination
63
+ end
64
+
65
+ after(:each) do
66
+ FakeFS.activate!
67
+ end
68
+
53
69
  it 'should download all the relevant index files to s3 on providing' do
54
70
  FileUtils.mkdir_p(PyramidScheme.configuration[:client_destination_path])
55
71
  @provider.retrieve_index
@@ -63,28 +79,36 @@ describe "S3 index provider" do
63
79
  '.spp',
64
80
  '.spk'
65
81
  ].collect{|s| "some_index#{s}" }.each do |f|
66
- File.exists?(File.join(PyramidScheme.configuration[:client_destination_path],
67
- f.gsub(/\./, '.new.'))).should be_true
82
+ filename = File.join(PyramidScheme.configuration[:client_destination_path],
83
+ f.gsub(/\./, '.new.'))
84
+ File.exists?(filename).should be_true
85
+ File.size(filename).should > 0
68
86
  end
69
87
 
70
88
  end
71
89
  end
72
90
 
91
+ def clear_destination
92
+ clear_directory(PyramidScheme.configuration[:client_destination_path])
93
+ end
94
+
95
+ def clear_source
96
+ clear_directory(PyramidScheme.configuration[:server_source_path])
97
+ end
98
+
99
+ def clear_directory(path)
100
+ FileUtils.rm_f("#{path}/*")
101
+ end
102
+
73
103
  def load_configuration_from_yaml
74
104
  FakeFS.deactivate!
75
- yml_config = YAML.load_file(File.join(File.dirname(__FILE__), 's3.yml'))
76
-
77
105
  PyramidScheme.configure do |config|
78
106
  config.index_provider_class = PyramidScheme::IndexProvider::S3
79
- config.access_key = yml_config["access_key"]
80
- config.secret_access_key = yml_config["secret_access_key"]
81
- config.bucket = yml_config["bucket"]
82
- config.prefix = yml_config["prefix"]
83
- config.server_source_path = "/some/server/source"
84
- config.client_destination_path = "/some/client/destination"
85
- end
107
+ config.client_destination_path = File.join(File.dirname(__FILE__), 'destination')
108
+ config.server_source_path = File.join(File.dirname(__FILE__), 'source')
109
+ end
86
110
 
111
+ PyramidScheme.configure_with_yml(File.join(File.dirname(__FILE__), 's3.yml'))
87
112
  FakeFS.activate!
88
-
89
113
  end
90
114
  end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe PyramidScheme::Configuration do
4
+ describe "from yml" do
5
+ before(:each) do
6
+ FakeFS.deactivate!
7
+ end
8
+
9
+ after(:each) do
10
+ FakeFS.activate!
11
+ end
12
+
13
+ it 'should have a method that allows configuration from a yml file' do
14
+ PyramidScheme.configure_with_yml(
15
+ File.join(File.dirname(__FILE__), '../configuration.example.yml'))
16
+ PyramidScheme.configuration[:secret_access_key].should_not be_nil
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 5
9
- version: 0.2.5
8
+ - 7
9
+ version: 0.2.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - Dan Pickett
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-22 00:00:00 -04:00
17
+ date: 2010-03-23 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -52,9 +52,9 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  segments:
54
54
  - 0
55
- - 5
56
- - 1
57
- version: 0.5.1
55
+ - 6
56
+ - 2
57
+ version: 0.6.2
58
58
  type: :runtime
59
59
  version_requirements: *id003
60
60
  - !ruby/object:Gem::Dependency
@@ -145,9 +145,11 @@ files:
145
145
  - lib/pyramid_scheme/tasks/rake_tasks.rake
146
146
  - lib/pyramid_scheme/thinking_sphinx_indexer.rb
147
147
  - lib/pyramid_scheme/ultrasphinx_indexer.rb
148
+ - spec/configuration.example.yml
148
149
  - spec/integrations/s3.example.yml
149
150
  - spec/integrations/s3_spec.rb
150
151
  - spec/pyramid_scheme.rb
152
+ - spec/pyramid_scheme/configuration_spec.rb
151
153
  - spec/pyramid_scheme/index_client_spec.rb
152
154
  - spec/pyramid_scheme/index_provider/file_system_spec.rb
153
155
  - spec/pyramid_scheme/index_provider_configuration_spec.rb
@@ -189,6 +191,7 @@ specification_version: 3
189
191
  summary: Sphinx index propagation
190
192
  test_files:
191
193
  - spec/integrations/s3_spec.rb
194
+ - spec/pyramid_scheme/configuration_spec.rb
192
195
  - spec/pyramid_scheme/index_client_spec.rb
193
196
  - spec/pyramid_scheme/index_provider/file_system_spec.rb
194
197
  - spec/pyramid_scheme/index_provider_configuration_spec.rb