flying-sphinx 1.1.0 → 1.2.0

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWNhMDhjYWNhNjY1MWExY2UyZjQxYjE4YjQ2MTQ3NTljNWY2ODUzZA==
4
+ MmFjZTkzNjBhNTJjNTBlYzI1ZmE4ODNlNDZmNTViMTk5MWM4ZmExNw==
5
5
  data.tar.gz: !binary |-
6
- MDE3OTE1NTcyZjhlMzRkMmRlMGNmMzYxNjk5NmYyNzdmMGU5Mjk2ZA==
6
+ Zjg1ZTkzYTM0MDE0ODcyYTg0ODBlMDZlMjQwNmI0ZGIyM2E2ODg3ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTJhMjJjODU2YTI5MTdiZWYyYjc1MDAxNjBhNGY0NTExY2Q5YWFhMmExZjdk
10
- NTQ0Zjk1Nzg5MmU3MWY2NWViOWMyMzYyMzljODYwODFjMmI0MzdiNDdjYTEz
11
- MThkZWUwOGIxODhiNTNiMDAxOGVkZDUyM2ExMTMzNmFmYTdjMDA=
9
+ M2MxZWNkYzYzOTE4ZDVhNDc1YTIyMDcwNzA3M2Q4OTIwMjlmMTViMTU1M2Vj
10
+ OWQ5MjdlNWQ1M2MxNTM4YzUyYWJlNDNhOWE3MzE4ZTJhMGFhM2QyOTU3ZGJm
11
+ YjFkZjg2MzkxYjBkZTY2YWM4YTAxOGQ3ODVjMzkyZTE5OTRiOTE=
12
12
  data.tar.gz: !binary |-
13
- OTE3NDdjNDNkMTVkMTg1YjkzMTI3NTU2YTIxNTUxYjA4ZmYxYWU1OWEzMjA2
14
- YzlhOGE1NjVkNzE1ZjllNGMzNjQ1YjFhODM3ZDJmNmI2MDZjNzU3MjQ0MmIy
15
- ODgxNzBlMGM0NjVjNWY5NmY4MzJjOGZiY2E2NDY4MzZhMGE0NTc=
13
+ ZDUzYTA3ZjVmZTQwZmNiMDk4NjVhNTE5ZTExMjE4NmE5ZGRiYjA5ODUyNWRi
14
+ MGEyOGM1ZjUzYmYxYjY2YzJlMTdhMWI5ZDIzMjc0MzUwNDBlZjlkOGIxYzUw
15
+ Mzk0N2Q2YzY2MGJmZTA3OGNlYzMwMDk0NzZmOTQwNTNlYWJhNzk=
data/HISTORY CHANGED
@@ -1,3 +1,6 @@
1
+ 1.2.0 - 30th March 2014
2
+ * All configuration files (Sphinx, wordforms, exceptions, etc) are now gzipped when sent to the API.
3
+
1
4
  1.1.0 - 15th March 2014
2
5
  * Updated Faraday dependency to require 0.9 or newer (and removed faraday_middleware dependency).
3
6
  * Added remote rotate support via custom controller.
@@ -9,7 +9,7 @@ This is all covered pretty well on "the Flying Sphinx site":http://flying-sphinx
9
9
  <pre><code>gem 'flying-sphinx',
10
10
  :git => 'git://github.com/flying-sphinx/flying-sphinx.git',
11
11
  :branch => 'master',
12
- :ref => '216f589d1f'</code></pre>
12
+ :ref => '6b691c2b43'</code></pre>
13
13
 
14
14
  h2. Compatibility and Limitations
15
15
 
@@ -41,7 +41,9 @@ require 'flying_sphinx/api'
41
41
  require 'flying_sphinx/binary'
42
42
  require 'flying_sphinx/cli'
43
43
  require 'flying_sphinx/configuration'
44
+ require 'flying_sphinx/configuration_options'
44
45
  require 'flying_sphinx/controller'
46
+ require 'flying_sphinx/gzipped_hash'
45
47
  require 'flying_sphinx/setting_files'
46
48
  require 'flying_sphinx/sphinxql'
47
49
  require 'flying_sphinx/version'
@@ -63,8 +63,9 @@ class FlyingSphinx::API
63
63
  }
64
64
 
65
65
  Faraday.new(options) do |builder|
66
- builder.use Faraday::Request::UrlEncoded
67
- builder.adapter(adapter)
66
+ builder.request :multipart
67
+ builder.request :url_encoded
68
+ builder.adapter adapter
68
69
  end
69
70
  end
70
71
 
@@ -0,0 +1,29 @@
1
+ class FlyingSphinx::ConfigurationOptions
2
+ def to_hash
3
+ {:sphinx_version => version, :configuration => gzipped_files_hash}
4
+ end
5
+
6
+ private
7
+
8
+ def configuration
9
+ @configuration ||= ThinkingSphinx::Configuration.instance
10
+ end
11
+
12
+ def files_hash
13
+ FlyingSphinx::SettingFiles.new.to_hash.merge(
14
+ 'sphinx' => FlyingSphinx.translator.sphinx_configuration
15
+ )
16
+ end
17
+
18
+ def gzipped_files_hash
19
+ FlyingSphinx::GzippedHash.new(files_hash).to_gzipped_hash
20
+ end
21
+
22
+ def version
23
+ version_defined? ? configuration.version : '2.0.4'
24
+ end
25
+
26
+ def version_defined?
27
+ configuration.respond_to?(:version) && configuration.version.present?
28
+ end
29
+ end
@@ -17,7 +17,7 @@ class FlyingSphinx::Controller
17
17
  end
18
18
 
19
19
  def configure(file = nil)
20
- options = file.nil? ? configuration_options :
20
+ options = file.nil? ? FlyingSphinx::ConfigurationOptions.new.to_hash :
21
21
  {:configuration => {'sphinx' => file}, :sphinx_version => '2.0.6'}
22
22
 
23
23
  FlyingSphinx::Action.perform api.identifier do
@@ -47,7 +47,7 @@ class FlyingSphinx::Controller
47
47
 
48
48
  def rebuild
49
49
  FlyingSphinx::Action.perform api.identifier, self.class.index_timeout do
50
- api.put 'rebuild', configuration_options
50
+ api.put 'rebuild', FlyingSphinx::ConfigurationOptions.new.to_hash
51
51
  end
52
52
  end
53
53
 
@@ -58,7 +58,7 @@ class FlyingSphinx::Controller
58
58
  end
59
59
 
60
60
  def reset(file = nil)
61
- options = file.nil? ? configuration_options :
61
+ options = file.nil? ? FlyingSphinx::ConfigurationOptions.new.to_hash :
62
62
  {:configuration => {'sphinx' => file}, :sphinx_version => '2.0.6'}
63
63
 
64
64
  FlyingSphinx::Action.perform api.identifier do
@@ -93,20 +93,4 @@ class FlyingSphinx::Controller
93
93
  private
94
94
 
95
95
  attr_reader :api
96
-
97
- def configuration_options
98
- version = '2.0.4'
99
- configuration = ThinkingSphinx::Configuration.instance
100
-
101
- if configuration.respond_to?(:version) && configuration.version.present?
102
- version = configuration.version
103
- end
104
-
105
- {
106
- :sphinx_version => version,
107
- :configuration => FlyingSphinx::SettingFiles.new.to_hash.merge(
108
- 'sphinx' => FlyingSphinx.translator.sphinx_configuration
109
- )
110
- }
111
- end
112
96
  end
@@ -0,0 +1,33 @@
1
+ require 'zlib'
2
+
3
+ class FlyingSphinx::GzippedHash
4
+ def initialize(hash)
5
+ @hash = hash
6
+ end
7
+
8
+ def to_gzipped_hash
9
+ hash['gzip'] = 'true'
10
+
11
+ keys.each { |key| hash[key] = gzip hash[key] }
12
+
13
+ hash
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :hash
19
+
20
+ def keys
21
+ keys = (hash['extra'] || '').split(';')
22
+ keys << 'sphinx' if hash['sphinx']
23
+ keys
24
+ end
25
+
26
+ def gzip(string)
27
+ io = StringIO.new 'w'
28
+ writer = Zlib::GzipWriter.new io
29
+ writer.write string
30
+ writer.close
31
+ Faraday::UploadIO.new StringIO.new(io.string, 'rb'), 'application/gzip'
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module FlyingSphinx
2
- Version = '1.1.0'
2
+ Version = '1.2.0'
3
3
  end
@@ -0,0 +1,61 @@
1
+ require 'light_spec_helper'
2
+ require 'faraday'
3
+ require 'flying_sphinx/controller'
4
+ require 'flying_sphinx/configuration_options'
5
+ require 'flying_sphinx/gzipped_hash'
6
+
7
+ describe FlyingSphinx::Controller do
8
+ let(:controller) { FlyingSphinx::Controller.new api }
9
+ let(:api) { double 'API', :identifier => 'foo', :put => true }
10
+ let(:action_class) { double }
11
+ let(:configuration) { double 'TS Configuration' }
12
+ let(:setting_files) { double :to_hash => {'extra' => 'wordforms:txt.txt',
13
+ 'wordforms:txt.txt' => 'something'} }
14
+ let(:translator) { double :sphinx_configuration => 'indexer ...' }
15
+
16
+ before :each do
17
+ stub_const 'FlyingSphinx::Action', action_class
18
+ action_class.stub(:perform) do |identifier, &block|
19
+ block.call
20
+ end
21
+
22
+ stub_const 'ThinkingSphinx::Configuration',
23
+ double(:instance => configuration)
24
+
25
+ stub_const 'FlyingSphinx::SettingFiles', double(:new => setting_files)
26
+ FlyingSphinx.stub :translator => translator
27
+ end
28
+
29
+ def ungzip(contents)
30
+ io = StringIO.new contents, 'rb'
31
+ reader = Zlib::GzipReader.new io
32
+ reader.read
33
+ end
34
+
35
+ describe 'configure' do
36
+ it 'sends data to the server' do
37
+ api.should_receive(:put)
38
+
39
+ controller.configure
40
+ end
41
+
42
+ it 'sends through gzipped configuration files' do
43
+ api.should_receive(:put) do |path, options|
44
+ path.should == 'configure'
45
+ options[:configuration]['gzip'].should == 'true'
46
+ ungzip(options[:configuration]['sphinx'].read).should == 'indexer ...'
47
+ ungzip(options[:configuration]['wordforms:txt.txt'].read).should == 'something'
48
+ end
49
+
50
+ controller.configure
51
+ end
52
+
53
+ it 'sends through file if provided' do
54
+ api.should_receive(:put).with 'configure',
55
+ :configuration => {'sphinx' => 'searchd ...'},
56
+ :sphinx_version => '2.0.6'
57
+
58
+ controller.configure 'searchd ...'
59
+ end
60
+ end
61
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flying-sphinx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-15 00:00:00.000000000 Z
11
+ date: 2014-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thinking-sphinx
@@ -190,7 +190,9 @@ files:
190
190
  - lib/flying_sphinx/binary/translator.rb
191
191
  - lib/flying_sphinx/cli.rb
192
192
  - lib/flying_sphinx/configuration.rb
193
+ - lib/flying_sphinx/configuration_options.rb
193
194
  - lib/flying_sphinx/controller.rb
195
+ - lib/flying_sphinx/gzipped_hash.rb
194
196
  - lib/flying_sphinx/rails.rb
195
197
  - lib/flying_sphinx/railtie.rb
196
198
  - lib/flying_sphinx/setting_files.rb
@@ -204,6 +206,7 @@ files:
204
206
  - spec/specs/action_spec.rb
205
207
  - spec/specs/api_spec.rb
206
208
  - spec/specs/configuration_spec.rb
209
+ - spec/specs/controller_spec.rb
207
210
  - spec/specs/setting_files_spec.rb
208
211
  homepage: https://flying-sphinx.com
209
212
  licenses: []
@@ -235,4 +238,5 @@ test_files:
235
238
  - spec/specs/action_spec.rb
236
239
  - spec/specs/api_spec.rb
237
240
  - spec/specs/configuration_spec.rb
241
+ - spec/specs/controller_spec.rb
238
242
  - spec/specs/setting_files_spec.rb