flying-sphinx 1.2.0 → 1.2.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/.env.test +5 -0
- data/.gitignore +1 -0
- data/.travis.yml +36 -1
- data/Appraisals +23 -0
- data/Gemfile +18 -0
- data/Rakefile +1 -27
- data/flying-sphinx.gemspec +10 -16
- data/gemfiles/rails_2.3.gemfile +21 -0
- data/gemfiles/rails_3.0.gemfile +21 -0
- data/gemfiles/rails_3.2.gemfile +18 -0
- data/gemfiles/rails_4.0.gemfile +18 -0
- data/lib/flying_sphinx.rb +6 -3
- data/lib/flying_sphinx/action.rb +5 -2
- data/lib/flying_sphinx/api.rb +11 -19
- data/lib/flying_sphinx/configuration.rb +1 -13
- data/lib/flying_sphinx/controller.rb +4 -0
- data/lib/flying_sphinx/gzipped_hash.rb +6 -3
- data/lib/flying_sphinx/response/invalid.rb +7 -0
- data/lib/flying_sphinx/response/json.rb +5 -0
- data/lib/flying_sphinx/response/logger.rb +23 -0
- data/lib/flying_sphinx/tasks.rb +1 -1
- data/lib/flying_sphinx/version.rb +1 -1
- data/spec/acceptance/get_info_spec.rb +15 -0
- data/spec/acceptance/start_or_stop_sphinx_spec.rb +27 -0
- data/spec/{specs → flying_sphinx}/action_spec.rb +3 -5
- data/spec/{specs → flying_sphinx}/api_spec.rb +3 -6
- data/spec/{specs → flying_sphinx}/configuration_spec.rb +3 -4
- data/spec/{specs → flying_sphinx}/controller_spec.rb +1 -5
- data/spec/{specs → flying_sphinx}/setting_files_spec.rb +13 -14
- data/spec/spec_helper.rb +12 -7
- data/spec/support/local_pusher.rb +48 -0
- data/spec/support/successful_action.rb +46 -0
- metadata +77 -39
- checksums.yaml +0 -15
- data/spec/light_spec_helper.rb +0 -9
data/.env.test
ADDED
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,4 +1,39 @@
|
|
1
|
+
language: ruby
|
1
2
|
rvm:
|
2
3
|
- 1.8.7
|
3
|
-
- 1.9.2
|
4
4
|
- ree
|
5
|
+
- 1.9.3
|
6
|
+
- 2.0
|
7
|
+
- 2.1.2
|
8
|
+
gemfile:
|
9
|
+
- gemfiles/rails_2.3.gemfile
|
10
|
+
- gemfiles/rails_3.0.gemfile
|
11
|
+
- gemfiles/rails_3.2.gemfile
|
12
|
+
- gemfiles/rails_4.0.gemfile
|
13
|
+
before_install:
|
14
|
+
- gem update --system
|
15
|
+
- gem install bundler
|
16
|
+
matrix:
|
17
|
+
exclude:
|
18
|
+
- rvm: 1.8.7
|
19
|
+
gemfile: gemfiles/rails_4.0.gemfile
|
20
|
+
- rvm: ree
|
21
|
+
gemfile: gemfiles/rails_4.0.gemfile
|
22
|
+
- rvm: 1.8.7
|
23
|
+
gemfile: gemfiles/rails_3.2.gemfile
|
24
|
+
- rvm: ree
|
25
|
+
gemfile: gemfiles/rails_3.2.gemfile
|
26
|
+
- rvm: 1.9.3
|
27
|
+
gemfile: gemfiles/rails_2.3.gemfile
|
28
|
+
- rvm: 2.0
|
29
|
+
gemfile: gemfiles/rails_2.3.gemfile
|
30
|
+
- rvm: 2.1.2
|
31
|
+
gemfile: gemfiles/rails_2.3.gemfile
|
32
|
+
- rvm: 1.9.3
|
33
|
+
gemfile: gemfiles/rails_3.0.gemfile
|
34
|
+
- rvm: 2.0
|
35
|
+
gemfile: gemfiles/rails_3.0.gemfile
|
36
|
+
- rvm: 2.1.2
|
37
|
+
gemfile: gemfiles/rails_3.0.gemfile
|
38
|
+
cache: bundler
|
39
|
+
script: bundle exec rspec
|
data/Appraisals
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
if RUBY_VERSION.to_f <= 1.8
|
2
|
+
appraise 'rails-2.3' do
|
3
|
+
gem 'rails', '~> 2.3.18'
|
4
|
+
gem 'faraday', '0.7.0'
|
5
|
+
gem 'riddle', '< 2.0.0'
|
6
|
+
end
|
7
|
+
|
8
|
+
appraise 'rails-3.0' do
|
9
|
+
gem 'rails', '~> 3.0.20'
|
10
|
+
gem 'faraday', '~> 0.8.0'
|
11
|
+
gem 'riddle', '< 2.0.0'
|
12
|
+
end
|
13
|
+
else
|
14
|
+
appraise 'rails-3.2' do
|
15
|
+
gem 'rails', '~> 3.2.18'
|
16
|
+
gem 'faraday', '~> 0.8.0'
|
17
|
+
end
|
18
|
+
|
19
|
+
appraise 'rails-4.0' do
|
20
|
+
gem 'rails', '~> 4.0.5'
|
21
|
+
gem 'faraday', '~> 0.9.0'
|
22
|
+
end
|
23
|
+
end
|
data/Gemfile
CHANGED
@@ -1,3 +1,21 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gemspec
|
4
|
+
|
5
|
+
gem 'activesupport', '< 4.0.0' if RUBY_VERSION.to_f <= 1.8
|
6
|
+
gem 'riddle', '< 2.0.0' if RUBY_VERSION.to_f <= 1.8
|
7
|
+
|
8
|
+
if RUBY_VERSION.to_f <= 1.8
|
9
|
+
gem "public_suffix", "< 1.4.0"
|
10
|
+
elsif RUBY_VERSION.to_f <= 1.9
|
11
|
+
gem "public_suffix", "< 1.5.0"
|
12
|
+
elsif RUBY_VERSION.to_f <= 2.0
|
13
|
+
gem "public_suffix", "< 1.5.0"
|
14
|
+
else
|
15
|
+
gem "public_suffix"
|
16
|
+
end
|
17
|
+
|
18
|
+
gem 'appraisal', '~> 1.0.0',
|
19
|
+
:git => 'git://github.com/thoughtbot/appraisal',
|
20
|
+
:branch => 'master',
|
21
|
+
:ref => 'bd6eef4b6a'
|
data/Rakefile
CHANGED
@@ -1,27 +1 @@
|
|
1
|
-
require '
|
2
|
-
begin
|
3
|
-
require 'bundler'
|
4
|
-
Bundler::GemHelper.install_tasks
|
5
|
-
rescue LoadError
|
6
|
-
puts "Although not required, it's recommended you use bundler during development"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'rake'
|
10
|
-
|
11
|
-
task :default => :test
|
12
|
-
task :test => :spec
|
13
|
-
|
14
|
-
require 'rspec/core/rake_task'
|
15
|
-
|
16
|
-
RSpec::Core::RakeTask.new do |t|
|
17
|
-
t.pattern = 'spec/**/*_spec.rb'
|
18
|
-
end
|
19
|
-
|
20
|
-
RSpec::Core::RakeTask.new(:rspec) do |t|
|
21
|
-
t.pattern = 'spec/**/*_spec.rb'
|
22
|
-
t.rcov = true
|
23
|
-
t.rcov_opts = [
|
24
|
-
'--exclude', 'spec', '--exclude', 'gems',
|
25
|
-
'--exclude', 'riddle', '--exclude', 'ruby'
|
26
|
-
]
|
27
|
-
end
|
1
|
+
require 'bundler/gem_tasks'
|
data/flying-sphinx.gemspec
CHANGED
@@ -18,21 +18,15 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = ['flying-sphinx']
|
19
19
|
|
20
20
|
s.add_runtime_dependency 'thinking-sphinx'
|
21
|
-
s.add_runtime_dependency 'riddle',
|
22
|
-
s.add_runtime_dependency 'multi_json',
|
23
|
-
s.add_runtime_dependency 'faraday',
|
24
|
-
s.add_runtime_dependency 'pusher-client',
|
21
|
+
s.add_runtime_dependency 'riddle', '>= 1.5.6'
|
22
|
+
s.add_runtime_dependency 'multi_json', '>= 1.3.0'
|
23
|
+
s.add_runtime_dependency 'faraday', '>= 0.7'
|
24
|
+
s.add_runtime_dependency 'pusher-client', '~> 0.3'
|
25
25
|
|
26
|
-
s.add_development_dependency '
|
27
|
-
s.add_development_dependency '
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency '
|
30
|
-
s.add_development_dependency '
|
31
|
-
s.add_development_dependency '
|
32
|
-
|
33
|
-
s.post_install_message = <<-MESSAGE
|
34
|
-
If you're upgrading, you should rebuild your Sphinx setup when deploying:
|
35
|
-
|
36
|
-
$ heroku rake fs:rebuild
|
37
|
-
MESSAGE
|
26
|
+
s.add_development_dependency 'dotenv', '~> 0.11.1'
|
27
|
+
s.add_development_dependency 'em-websocket', '~> 0.5.1'
|
28
|
+
s.add_development_dependency 'mysql2', '~> 0.3.15'
|
29
|
+
s.add_development_dependency 'rspec', '~> 2.14'
|
30
|
+
s.add_development_dependency 'rspec-retry', '~> 0.4'
|
31
|
+
s.add_development_dependency 'webmock', '~> 1.17.4'
|
38
32
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "activesupport", "< 4.0.0"
|
6
|
+
gem "appraisal", "~> 1.0.0", :ref => "bd6eef4b6a", :git => "git://github.com/thoughtbot/appraisal", :branch => "master"
|
7
|
+
gem "rails", "~> 2.3.18"
|
8
|
+
gem "faraday", "0.7.0"
|
9
|
+
gem "websocket", "< 1.2.0"
|
10
|
+
gem "riddle", "< 2.0.0"
|
11
|
+
if RUBY_VERSION.to_f <= 1.8
|
12
|
+
gem "public_suffix", "< 1.4.0"
|
13
|
+
elsif RUBY_VERSION.to_f <= 1.9
|
14
|
+
gem "public_suffix", "< 1.5.0"
|
15
|
+
elsif RUBY_VERSION.to_f <= 2.0
|
16
|
+
gem "public_suffix", "< 1.5.0"
|
17
|
+
else
|
18
|
+
gem "public_suffix"
|
19
|
+
end
|
20
|
+
|
21
|
+
gemspec :path => "../"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "activesupport", "< 4.0.0"
|
6
|
+
gem "appraisal", "~> 1.0.0", :ref => "bd6eef4b6a", :git => "git://github.com/thoughtbot/appraisal", :branch => "master"
|
7
|
+
gem "rails", "~> 3.0.20"
|
8
|
+
gem "faraday", "~> 0.8.0"
|
9
|
+
gem "websocket", "< 1.2.0"
|
10
|
+
gem "riddle", "< 2.0.0"
|
11
|
+
if RUBY_VERSION.to_f <= 1.8
|
12
|
+
gem "public_suffix", "< 1.4.0"
|
13
|
+
elsif RUBY_VERSION.to_f <= 1.9
|
14
|
+
gem "public_suffix", "< 1.5.0"
|
15
|
+
elsif RUBY_VERSION.to_f <= 2.0
|
16
|
+
gem "public_suffix", "< 1.5.0"
|
17
|
+
else
|
18
|
+
gem "public_suffix"
|
19
|
+
end
|
20
|
+
|
21
|
+
gemspec :path => "../"
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal", "~> 1.0.0", :git => "git://github.com/thoughtbot/appraisal", :branch => "master", :ref => "bd6eef4b6a"
|
6
|
+
gem "rails", "~> 3.2.18"
|
7
|
+
gem "faraday", "~> 0.8.0"
|
8
|
+
if RUBY_VERSION.to_f <= 1.8
|
9
|
+
gem "public_suffix", "< 1.4.0"
|
10
|
+
elsif RUBY_VERSION.to_f <= 1.9
|
11
|
+
gem "public_suffix", "< 1.5.0"
|
12
|
+
elsif RUBY_VERSION.to_f <= 2.0
|
13
|
+
gem "public_suffix", "< 1.5.0"
|
14
|
+
else
|
15
|
+
gem "public_suffix"
|
16
|
+
end
|
17
|
+
|
18
|
+
gemspec :path => "../"
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal", "~> 1.0.0", :git => "git://github.com/thoughtbot/appraisal", :branch => "master", :ref => "bd6eef4b6a"
|
6
|
+
gem "rails", "~> 4.0.5"
|
7
|
+
gem "faraday", "~> 0.9.0"
|
8
|
+
if RUBY_VERSION.to_f <= 1.8
|
9
|
+
gem "public_suffix", "< 1.4.0"
|
10
|
+
elsif RUBY_VERSION.to_f <= 1.9
|
11
|
+
gem "public_suffix", "< 1.5.0"
|
12
|
+
elsif RUBY_VERSION.to_f <= 2.0
|
13
|
+
gem "public_suffix", "< 1.5.0"
|
14
|
+
else
|
15
|
+
gem "public_suffix"
|
16
|
+
end
|
17
|
+
|
18
|
+
gemspec :path => "../"
|
data/lib/flying_sphinx.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
3
|
module FlyingSphinx
|
4
|
-
module
|
5
|
-
|
6
|
-
end
|
4
|
+
module Response; end
|
5
|
+
module Translators; end
|
7
6
|
|
8
7
|
@logger = Logger.new(STDOUT)
|
9
8
|
@logger.level = Logger::INFO
|
@@ -48,6 +47,10 @@ require 'flying_sphinx/setting_files'
|
|
48
47
|
require 'flying_sphinx/sphinxql'
|
49
48
|
require 'flying_sphinx/version'
|
50
49
|
|
50
|
+
require 'flying_sphinx/response/invalid'
|
51
|
+
require 'flying_sphinx/response/json'
|
52
|
+
require 'flying_sphinx/response/logger'
|
53
|
+
|
51
54
|
if defined?(Rails) && defined?(Rails::Railtie)
|
52
55
|
require 'flying_sphinx/railtie'
|
53
56
|
elsif defined?(Rails) && defined?(Rails::Plugin)
|
data/lib/flying_sphinx/action.rb
CHANGED
@@ -62,7 +62,7 @@ class FlyingSphinx::Action
|
|
62
62
|
def response
|
63
63
|
attempts = 0
|
64
64
|
@response ||= begin
|
65
|
-
block.call
|
65
|
+
block.call.body
|
66
66
|
rescue
|
67
67
|
attempts += 1
|
68
68
|
retry if attempts <= 3
|
@@ -72,7 +72,10 @@ class FlyingSphinx::Action
|
|
72
72
|
|
73
73
|
def socket
|
74
74
|
@socket ||= PusherClient::Socket.new FlyingSphinx::API::PUSHER_KEY,
|
75
|
-
:encrypted =>
|
75
|
+
:encrypted => ENV['FLYING_SPHINX_SOCKETS_INSECURE'].nil?,
|
76
|
+
:ws_host => ENV['FLYING_SPHINX_SOCKETS_HOST'],
|
77
|
+
:wss_port => ENV['FLYING_SPHINX_SOCKETS_PORT'],
|
78
|
+
:ws_port => ENV['FLYING_SPHINX_SOCKETS_PORT']
|
76
79
|
end
|
77
80
|
|
78
81
|
def start
|
data/lib/flying_sphinx/api.rb
CHANGED
@@ -19,23 +19,17 @@ class FlyingSphinx::API
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def get(path, data = {})
|
22
|
-
|
23
|
-
|
24
|
-
request.url normalize_path(path), data
|
25
|
-
end
|
22
|
+
connection.get do |request|
|
23
|
+
request.url normalize_path(path), data
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
29
27
|
def post(path, data = {})
|
30
|
-
|
31
|
-
connection.post normalize_path(path), data
|
32
|
-
end
|
28
|
+
connection.post normalize_path(path), data
|
33
29
|
end
|
34
30
|
|
35
31
|
def put(path, data = {})
|
36
|
-
|
37
|
-
connection.put normalize_path(path), data
|
38
|
-
end
|
32
|
+
connection.put normalize_path(path), data
|
39
33
|
end
|
40
34
|
|
41
35
|
private
|
@@ -63,18 +57,16 @@ class FlyingSphinx::API
|
|
63
57
|
}
|
64
58
|
|
65
59
|
Faraday.new(options) do |builder|
|
60
|
+
# Built-in middleware
|
66
61
|
builder.request :multipart
|
67
62
|
builder.request :url_encoded
|
68
|
-
builder.adapter adapter
|
69
|
-
end
|
70
|
-
end
|
71
63
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
raise 'Invalid Flying Sphinx credentials' if response.status == 403
|
64
|
+
# Local middleware
|
65
|
+
builder.use FlyingSphinx::Response::Logger
|
66
|
+
builder.use FlyingSphinx::Response::Invalid
|
67
|
+
builder.use FlyingSphinx::Response::JSON
|
77
68
|
|
78
|
-
|
69
|
+
builder.adapter adapter
|
70
|
+
end
|
79
71
|
end
|
80
72
|
end
|
@@ -28,20 +28,8 @@ class FlyingSphinx::Configuration
|
|
28
28
|
|
29
29
|
attr_reader :identifier, :api_key
|
30
30
|
|
31
|
-
def change(initial, expected)
|
32
|
-
api.post(initial)
|
33
|
-
|
34
|
-
response = api.get('daemon')
|
35
|
-
while response['status'] == initial
|
36
|
-
sleep 0.5
|
37
|
-
response = api.get('daemon')
|
38
|
-
end
|
39
|
-
|
40
|
-
response['status'] == expected
|
41
|
-
end
|
42
|
-
|
43
31
|
def response_body
|
44
|
-
@response_body ||= api.get
|
32
|
+
@response_body ||= api.get('/').body
|
45
33
|
end
|
46
34
|
|
47
35
|
def identifier_from_env
|
@@ -8,7 +8,7 @@ class FlyingSphinx::GzippedHash
|
|
8
8
|
def to_gzipped_hash
|
9
9
|
hash['gzip'] = 'true'
|
10
10
|
|
11
|
-
keys.each { |key| hash[key] = gzip hash[key] }
|
11
|
+
keys.each { |key| hash[key] = gzip hash[key], key }
|
12
12
|
|
13
13
|
hash
|
14
14
|
end
|
@@ -23,11 +23,14 @@ class FlyingSphinx::GzippedHash
|
|
23
23
|
keys
|
24
24
|
end
|
25
25
|
|
26
|
-
def gzip(string)
|
26
|
+
def gzip(string, key)
|
27
27
|
io = StringIO.new 'w'
|
28
28
|
writer = Zlib::GzipWriter.new io
|
29
29
|
writer.write string
|
30
30
|
writer.close
|
31
|
-
|
31
|
+
|
32
|
+
Faraday::UploadIO.new(
|
33
|
+
StringIO.new(io.string, 'rb'), 'application/gzip', key
|
34
|
+
)
|
32
35
|
end
|
33
36
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class FlyingSphinx::Response::Logger < Faraday::Response::Middleware
|
2
|
+
extend Forwardable
|
3
|
+
|
4
|
+
def call(environment)
|
5
|
+
debug "API Request: #{environment[:method]} #{environment[:url]}"
|
6
|
+
debug "API Body: #{environment[:body].inspect}"
|
7
|
+
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
def on_complete(environment)
|
12
|
+
debug "API Status: #{environment[:status]}"
|
13
|
+
debug "API Response: #{environment[:body].inspect}"
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def_delegators :logger, :debug
|
19
|
+
|
20
|
+
def logger
|
21
|
+
FlyingSphinx.logger
|
22
|
+
end
|
23
|
+
end
|
data/lib/flying_sphinx/tasks.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Requesting customer information' do
|
4
|
+
let(:configuration) { FlyingSphinx::Configuration.new 'foo', 'bar' }
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
stub_request(:get, 'https://flying-sphinx.com/api/my/app').to_return(
|
8
|
+
:status => 200,
|
9
|
+
:body => '{"server":"my.sphinx.server","port":9307}'
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
it { expect(configuration.host).to eq('my.sphinx.server') }
|
14
|
+
it { expect(configuration.port).to eq(9307) }
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Starting Sphinx' do
|
4
|
+
let(:cli) { FlyingSphinx::CLI.new 'start' }
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
stub_request(:post, 'https://flying-sphinx.com/api/my/app/start').
|
8
|
+
to_return(:status => 200, :body => '{"id":429, "status":"OK"}')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'makes the request to the server', :retry => 3 do
|
12
|
+
expect { cli.run }.to be_successful_with 429
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'Stopping Sphinx', :retry => 3 do
|
17
|
+
let(:cli) { FlyingSphinx::CLI.new 'stop' }
|
18
|
+
|
19
|
+
before :each do
|
20
|
+
stub_request(:post, 'https://flying-sphinx.com/api/my/app/stop').
|
21
|
+
to_return(:status => 200, :body => '{"id":537, "status":"OK"}')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'makes the request to the server', :retry => 3 do
|
25
|
+
expect { cli.run }.to be_successful_with 537
|
26
|
+
end
|
27
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'multi_json'
|
3
|
-
require 'flying_sphinx/action'
|
1
|
+
require 'spec_helper'
|
4
2
|
|
5
3
|
describe FlyingSphinx::Action do
|
6
4
|
let(:action) { FlyingSphinx::Action.new 'abc123', 1, &block }
|
@@ -8,7 +6,7 @@ describe FlyingSphinx::Action do
|
|
8
6
|
let(:socket) { double 'socket', :connect => true, :disconnect => true,
|
9
7
|
:subscribe => true, :[] => channel, :connected => true }
|
10
8
|
let(:channel) { double 'channel', :bind => true }
|
11
|
-
let(:response) { {'status' => 'OK', 'id' => 748} }
|
9
|
+
let(:response) { double :body => {'status' => 'OK', 'id' => 748} }
|
12
10
|
let(:logger) { double 'logger', :debug => true }
|
13
11
|
|
14
12
|
before :each do
|
@@ -50,7 +48,7 @@ describe FlyingSphinx::Action do
|
|
50
48
|
block.should_receive(:call).and_return(response)
|
51
49
|
|
52
50
|
perform_and_complete action
|
53
|
-
end
|
51
|
+
end if RUBY_VERSION.to_f > 1.8
|
54
52
|
|
55
53
|
it "raises an error if the response's status is BLOCKED" do
|
56
54
|
response.stub :status => 'BLOCKED'
|
@@ -1,19 +1,16 @@
|
|
1
|
-
require '
|
2
|
-
require 'flying_sphinx/api'
|
3
|
-
require 'flying_sphinx/version'
|
1
|
+
require 'spec_helper'
|
4
2
|
|
5
3
|
describe FlyingSphinx::API do
|
6
4
|
let(:api) { FlyingSphinx::API.new 'foo', 'bar', adapter }
|
7
|
-
let(:faraday) {
|
5
|
+
let(:faraday) { double('Faraday', :new => connection) }
|
8
6
|
let(:adapter) { double('adapter') }
|
9
7
|
let(:connection) { double('connection') }
|
10
8
|
let(:logger) { double :debug => true }
|
11
9
|
let(:response) { double :body => '', :status => 200 }
|
12
10
|
|
13
11
|
before :each do
|
14
|
-
faraday.as_replaced_constant
|
15
|
-
|
16
12
|
stub_const 'MultiJson', double(:load => {})
|
13
|
+
stub_const 'Faraday', faraday
|
17
14
|
FlyingSphinx.stub :logger => logger
|
18
15
|
end
|
19
16
|
|
@@ -1,15 +1,14 @@
|
|
1
|
-
require '
|
2
|
-
require 'flying_sphinx/configuration'
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe FlyingSphinx::Configuration do
|
5
|
-
let(:api) {
|
4
|
+
let(:api) { double 'FlyingSphinx::API', :get => double(:body => body) }
|
6
5
|
let(:body) { {'server' => 'foo.bar.com', 'port' => 9319} }
|
7
6
|
let(:api_key) { 'foo-bar-baz' }
|
8
7
|
let(:identifier) { 'my-identifier' }
|
9
8
|
let(:config) { FlyingSphinx::Configuration.new identifier, api_key }
|
10
9
|
|
11
10
|
before :each do
|
12
|
-
|
11
|
+
stub_const 'FlyingSphinx::API', double(:new => api)
|
13
12
|
end
|
14
13
|
|
15
14
|
describe '#host' do
|
@@ -1,8 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'faraday'
|
3
|
-
require 'flying_sphinx/controller'
|
4
|
-
require 'flying_sphinx/configuration_options'
|
5
|
-
require 'flying_sphinx/gzipped_hash'
|
1
|
+
require 'spec_helper'
|
6
2
|
|
7
3
|
describe FlyingSphinx::Controller do
|
8
4
|
let(:controller) { FlyingSphinx::Controller.new api }
|
@@ -1,16 +1,15 @@
|
|
1
|
-
require '
|
2
|
-
require 'flying_sphinx/setting_files'
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe FlyingSphinx::SettingFiles do
|
5
4
|
let(:files) { FlyingSphinx::SettingFiles.new indices }
|
6
5
|
let(:indices) { [] }
|
7
6
|
|
8
7
|
def index_double(methods)
|
9
|
-
|
8
|
+
double 'Riddle::Configuration::Index', methods
|
10
9
|
end
|
11
10
|
|
12
11
|
def source_double(methods)
|
13
|
-
|
12
|
+
double 'Riddle::Configuration::SQLSource', methods
|
14
13
|
end
|
15
14
|
|
16
15
|
describe '#to_hash' do
|
@@ -42,11 +41,11 @@ describe FlyingSphinx::SettingFiles do
|
|
42
41
|
indices << index_double(
|
43
42
|
setting => '/my/file/foo.txt /my/file/bar.txt')
|
44
43
|
|
45
|
-
files.to_hash.should ==
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
files.to_hash["#{setting}:foo.txt"].should == 'blah'
|
45
|
+
files.to_hash["#{setting}:bar.txt"].should == 'blah'
|
46
|
+
files.to_hash['extra'].split(';').should =~ [
|
47
|
+
"#{setting}:foo.txt", "#{setting}:bar.txt"
|
48
|
+
]
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
@@ -77,11 +76,11 @@ describe FlyingSphinx::SettingFiles do
|
|
77
76
|
indices << index_double(:sources => [
|
78
77
|
source_double(setting => '/my/file/foo.txt /my/file/bar.txt')])
|
79
78
|
|
80
|
-
files.to_hash.should ==
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
files.to_hash["#{setting}:foo.txt"].should == 'blah'
|
80
|
+
files.to_hash["#{setting}:bar.txt"].should == 'blah'
|
81
|
+
files.to_hash['extra'].split(';').should =~ [
|
82
|
+
"#{setting}:foo.txt", "#{setting}:bar.txt"
|
83
|
+
]
|
85
84
|
end
|
86
85
|
end
|
87
86
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
3
|
|
4
|
-
require '
|
5
|
-
require '
|
4
|
+
require 'dotenv'
|
5
|
+
require 'webmock/rspec'
|
6
|
+
require 'em-websocket'
|
7
|
+
|
8
|
+
Dotenv.load '.env.test'
|
9
|
+
WebMock.disable_net_connect!
|
10
|
+
|
11
|
+
require 'thinking_sphinx'
|
6
12
|
require 'flying_sphinx'
|
7
|
-
require 'delayed_job'
|
8
13
|
|
9
|
-
|
10
|
-
|
14
|
+
unless FlyingSphinx.logger.level == Logger::DEBUG
|
15
|
+
FlyingSphinx.logger.level = Logger::WARN
|
16
|
+
end
|
11
17
|
|
12
|
-
|
13
|
-
Delayed::Worker.backend = :active_record
|
18
|
+
Dir["spec/support/**/*.rb"].each { |file| require File.expand_path(file) }
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class LocalPusher
|
2
|
+
attr_reader :connections
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@connections = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def start
|
9
|
+
@server_thread ||= Thread.new do
|
10
|
+
EM.run { socket_server }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def stop
|
15
|
+
server_thread.kill
|
16
|
+
end
|
17
|
+
|
18
|
+
def send(event, data)
|
19
|
+
connections.each do |connection|
|
20
|
+
connection.send({
|
21
|
+
'event' => event,
|
22
|
+
'data' => data.to_json,
|
23
|
+
'channel' => ENV['FLYING_SPHINX_IDENTIFIER']
|
24
|
+
}.to_json)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :server_thread
|
31
|
+
|
32
|
+
def socket_server
|
33
|
+
EM::WebSocket.run(
|
34
|
+
:host => ENV['FLYING_SPHINX_SOCKETS_HOST'],
|
35
|
+
:port => ENV['FLYING_SPHINX_SOCKETS_PORT']
|
36
|
+
) do |connection|
|
37
|
+
connection.onopen do |handshake|
|
38
|
+
connections << connection
|
39
|
+
connection.send({
|
40
|
+
'event' => 'pusher:connection_established',
|
41
|
+
'data' => {'socket_id' => 101}.to_json
|
42
|
+
}.to_json)
|
43
|
+
end
|
44
|
+
|
45
|
+
connection.onclose { connections.delete connection }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class SuccessfulAction
|
2
|
+
attr_writer :result
|
3
|
+
|
4
|
+
def initialize(action_id)
|
5
|
+
@action_id = action_id
|
6
|
+
@result = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(block)
|
10
|
+
pusher.start
|
11
|
+
thread = Thread.new { call block }
|
12
|
+
sleep 1.0
|
13
|
+
|
14
|
+
pusher.send 'completion', 'id' => action_id
|
15
|
+
thread.join
|
16
|
+
pusher.stop
|
17
|
+
|
18
|
+
result
|
19
|
+
end
|
20
|
+
|
21
|
+
def failure_message_for_should
|
22
|
+
"Action failed"
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
attr_reader :action_id, :result
|
28
|
+
|
29
|
+
def call(block)
|
30
|
+
self.result = block.call
|
31
|
+
end
|
32
|
+
|
33
|
+
def pusher
|
34
|
+
@pusher ||= LocalPusher.new
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module SuccessfulActionHelper
|
39
|
+
def be_successful_with(action_id)
|
40
|
+
SuccessfulAction.new action_id
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
RSpec.configure do |config|
|
45
|
+
config.include SuccessfulActionHelper
|
46
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flying-sphinx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Pat Allan
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2017-09-28 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: thinking-sphinx
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: riddle
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: multi_json
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,20 +62,23 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: faraday
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
69
|
+
version: '0.7'
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
77
|
+
version: '0.7'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: pusher-client
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,94 +86,107 @@ dependencies:
|
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0.3'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
95
|
+
name: dotenv
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ~>
|
88
100
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
101
|
+
version: 0.11.1
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ~>
|
95
108
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
109
|
+
version: 0.11.1
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
111
|
+
name: em-websocket
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 0.5.1
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
123
|
- - ~>
|
109
124
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
125
|
+
version: 0.5.1
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
127
|
+
name: mysql2
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
131
|
- - ~>
|
116
132
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
133
|
+
version: 0.3.15
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
139
|
- - ~>
|
123
140
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
141
|
+
version: 0.3.15
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
143
|
+
name: rspec
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
147
|
- - ~>
|
130
148
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
149
|
+
version: '2.14'
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
155
|
- - ~>
|
137
156
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
157
|
+
version: '2.14'
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
159
|
+
name: rspec-retry
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
163
|
- - ~>
|
144
164
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
165
|
+
version: '0.4'
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
171
|
- - ~>
|
151
172
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
173
|
+
version: '0.4'
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
175
|
+
name: webmock
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
179
|
- - ~>
|
158
180
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
181
|
+
version: 1.17.4
|
160
182
|
type: :development
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
187
|
- - ~>
|
165
188
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
189
|
+
version: 1.17.4
|
167
190
|
description: Hooks Thinking Sphinx into the Flying Sphinx service
|
168
191
|
email: pat@freelancing-gods.com
|
169
192
|
executables:
|
@@ -172,8 +195,10 @@ extensions: []
|
|
172
195
|
extra_rdoc_files:
|
173
196
|
- README.textile
|
174
197
|
files:
|
198
|
+
- .env.test
|
175
199
|
- .gitignore
|
176
200
|
- .travis.yml
|
201
|
+
- Appraisals
|
177
202
|
- Gemfile
|
178
203
|
- HISTORY
|
179
204
|
- LICENCE
|
@@ -181,6 +206,10 @@ files:
|
|
181
206
|
- Rakefile
|
182
207
|
- bin/flying-sphinx
|
183
208
|
- flying-sphinx.gemspec
|
209
|
+
- gemfiles/rails_2.3.gemfile
|
210
|
+
- gemfiles/rails_3.0.gemfile
|
211
|
+
- gemfiles/rails_3.2.gemfile
|
212
|
+
- gemfiles/rails_4.0.gemfile
|
184
213
|
- keys/key
|
185
214
|
- lib/flying-sphinx.rb
|
186
215
|
- lib/flying_sphinx.rb
|
@@ -195,48 +224,57 @@ files:
|
|
195
224
|
- lib/flying_sphinx/gzipped_hash.rb
|
196
225
|
- lib/flying_sphinx/rails.rb
|
197
226
|
- lib/flying_sphinx/railtie.rb
|
227
|
+
- lib/flying_sphinx/response/invalid.rb
|
228
|
+
- lib/flying_sphinx/response/json.rb
|
229
|
+
- lib/flying_sphinx/response/logger.rb
|
198
230
|
- lib/flying_sphinx/setting_files.rb
|
199
231
|
- lib/flying_sphinx/sinatra.rb
|
200
232
|
- lib/flying_sphinx/sphinxql.rb
|
201
233
|
- lib/flying_sphinx/sphinxql/translator.rb
|
202
234
|
- lib/flying_sphinx/tasks.rb
|
203
235
|
- lib/flying_sphinx/version.rb
|
204
|
-
- spec/
|
236
|
+
- spec/acceptance/get_info_spec.rb
|
237
|
+
- spec/acceptance/start_or_stop_sphinx_spec.rb
|
238
|
+
- spec/flying_sphinx/action_spec.rb
|
239
|
+
- spec/flying_sphinx/api_spec.rb
|
240
|
+
- spec/flying_sphinx/configuration_spec.rb
|
241
|
+
- spec/flying_sphinx/controller_spec.rb
|
242
|
+
- spec/flying_sphinx/setting_files_spec.rb
|
205
243
|
- spec/spec_helper.rb
|
206
|
-
- spec/
|
207
|
-
- spec/
|
208
|
-
- spec/specs/configuration_spec.rb
|
209
|
-
- spec/specs/controller_spec.rb
|
210
|
-
- spec/specs/setting_files_spec.rb
|
244
|
+
- spec/support/local_pusher.rb
|
245
|
+
- spec/support/successful_action.rb
|
211
246
|
homepage: https://flying-sphinx.com
|
212
247
|
licenses: []
|
213
|
-
|
214
|
-
post_install_message: ! "If you're upgrading, you should rebuild your Sphinx setup
|
215
|
-
when deploying:\n\n $ heroku rake fs:rebuild\n"
|
248
|
+
post_install_message:
|
216
249
|
rdoc_options: []
|
217
250
|
require_paths:
|
218
251
|
- lib
|
219
252
|
required_ruby_version: !ruby/object:Gem::Requirement
|
253
|
+
none: false
|
220
254
|
requirements:
|
221
255
|
- - ! '>='
|
222
256
|
- !ruby/object:Gem::Version
|
223
257
|
version: '0'
|
224
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
|
+
none: false
|
225
260
|
requirements:
|
226
261
|
- - ! '>='
|
227
262
|
- !ruby/object:Gem::Version
|
228
263
|
version: '0'
|
229
264
|
requirements: []
|
230
265
|
rubyforge_project:
|
231
|
-
rubygems_version:
|
266
|
+
rubygems_version: 1.8.30
|
232
267
|
signing_key:
|
233
|
-
specification_version:
|
268
|
+
specification_version: 3
|
234
269
|
summary: Sphinx in the Cloud
|
235
270
|
test_files:
|
236
|
-
- spec/
|
271
|
+
- spec/acceptance/get_info_spec.rb
|
272
|
+
- spec/acceptance/start_or_stop_sphinx_spec.rb
|
273
|
+
- spec/flying_sphinx/action_spec.rb
|
274
|
+
- spec/flying_sphinx/api_spec.rb
|
275
|
+
- spec/flying_sphinx/configuration_spec.rb
|
276
|
+
- spec/flying_sphinx/controller_spec.rb
|
277
|
+
- spec/flying_sphinx/setting_files_spec.rb
|
237
278
|
- spec/spec_helper.rb
|
238
|
-
- spec/
|
239
|
-
- spec/
|
240
|
-
- spec/specs/configuration_spec.rb
|
241
|
-
- spec/specs/controller_spec.rb
|
242
|
-
- spec/specs/setting_files_spec.rb
|
279
|
+
- spec/support/local_pusher.rb
|
280
|
+
- spec/support/successful_action.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MmFjZTkzNjBhNTJjNTBlYzI1ZmE4ODNlNDZmNTViMTk5MWM4ZmExNw==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
Zjg1ZTkzYTM0MDE0ODcyYTg0ODBlMDZlMjQwNmI0ZGIyM2E2ODg3ZA==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
M2MxZWNkYzYzOTE4ZDVhNDc1YTIyMDcwNzA3M2Q4OTIwMjlmMTViMTU1M2Vj
|
10
|
-
OWQ5MjdlNWQ1M2MxNTM4YzUyYWJlNDNhOWE3MzE4ZTJhMGFhM2QyOTU3ZGJm
|
11
|
-
YjFkZjg2MzkxYjBkZTY2YWM4YTAxOGQ3ODVjMzkyZTE5OTRiOTE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDUzYTA3ZjVmZTQwZmNiMDk4NjVhNTE5ZTExMjE4NmE5ZGRiYjA5ODUyNWRi
|
14
|
-
MGEyOGM1ZjUzYmYxYjY2YzJlMTdhMWI5ZDIzMjc0MzUwNDBlZjlkOGIxYzUw
|
15
|
-
Mzk0N2Q2YzY2MGJmZTA3OGNlYzMwMDk0NzZmOTQwNTNlYWJhNzk=
|