ripplr 0.0.1.alpha → 0.0.2.beta
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/Gemfile +5 -13
- data/Gemfile.lock +54 -0
- data/lib/ripplr/errors/key_not_specified_error.rb +9 -0
- data/lib/ripplr/errors.rb +1 -0
- data/lib/ripplr/formatters/riak.rb +17 -0
- data/lib/ripplr/formatters.rb +1 -0
- data/lib/ripplr/i18n.rb +5 -0
- data/lib/ripplr/indexers/ripple.rb +9 -0
- data/lib/ripplr/indexers.rb +1 -0
- data/lib/ripplr/locale/en.yml +3 -0
- data/lib/ripplr/query_field.rb +17 -0
- data/lib/ripplr/queryable.rb +56 -0
- data/lib/ripplr/translation.rb +17 -0
- data/lib/ripplr/version.rb +1 -1
- data/lib/ripplr.rb +7 -0
- data/ripplr.gemspec +3 -7
- data/spec/ripplr/indexers/ripple_spec.rb +11 -0
- data/spec/ripplr/query_field_spec.rb +10 -0
- data/spec/ripplr/queryable_spec.rb +51 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/models/lift.rb +10 -0
- data/spec/support/models/log_entry.rb +11 -0
- data/spec/support/models/person.rb +10 -0
- data/spec/support/models.rb +3 -0
- metadata +38 -41
data/Gemfile
CHANGED
@@ -2,20 +2,12 @@ source :rubygems
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem '
|
5
|
+
gem 'ripple', "~> 0.9.5"
|
6
6
|
|
7
|
-
gem '
|
8
|
-
gem 'yajl-ruby'
|
9
|
-
gem 'excon'
|
10
|
-
|
11
|
-
group :development do
|
12
|
-
gem 'pry'
|
13
|
-
end
|
7
|
+
gem 'pry', :groups => [:development, :test]
|
14
8
|
|
15
9
|
group :test do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
gem 'rspec-rails'
|
20
|
-
gem 'rspec-given'
|
10
|
+
# gem 'rb-fsevent'
|
11
|
+
# gem 'guard-rspec'
|
12
|
+
gem 'rspec-given'
|
21
13
|
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ripplr (0.0.1.alpha)
|
5
|
+
ripple (>= 0.9.5)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (3.0.5)
|
11
|
+
activesupport (= 3.0.5)
|
12
|
+
builder (~> 2.1.2)
|
13
|
+
i18n (~> 0.4)
|
14
|
+
activesupport (3.0.5)
|
15
|
+
beefcake (0.3.2)
|
16
|
+
builder (2.1.2)
|
17
|
+
coderay (1.0.7)
|
18
|
+
diff-lcs (1.1.3)
|
19
|
+
i18n (0.6.1)
|
20
|
+
method_source (0.8)
|
21
|
+
pry (0.9.10)
|
22
|
+
coderay (~> 1.0.5)
|
23
|
+
method_source (~> 0.8)
|
24
|
+
slop (~> 3.3.1)
|
25
|
+
rake (0.9.2.2)
|
26
|
+
riak-client (0.9.8)
|
27
|
+
beefcake (= 0.3.2)
|
28
|
+
builder (~> 2.1.2)
|
29
|
+
i18n (>= 0.4.0)
|
30
|
+
ripple (0.9.5)
|
31
|
+
activemodel (~> 3.0.0)
|
32
|
+
activesupport (~> 3.0.0)
|
33
|
+
riak-client (~> 0.9.5)
|
34
|
+
rspec (2.11.0)
|
35
|
+
rspec-core (~> 2.11.0)
|
36
|
+
rspec-expectations (~> 2.11.0)
|
37
|
+
rspec-mocks (~> 2.11.0)
|
38
|
+
rspec-core (2.11.1)
|
39
|
+
rspec-expectations (2.11.3)
|
40
|
+
diff-lcs (~> 1.1.3)
|
41
|
+
rspec-given (1.6.0)
|
42
|
+
rspec (> 1.2.8)
|
43
|
+
rspec-mocks (2.11.2)
|
44
|
+
slop (3.3.3)
|
45
|
+
|
46
|
+
PLATFORMS
|
47
|
+
ruby
|
48
|
+
|
49
|
+
DEPENDENCIES
|
50
|
+
pry
|
51
|
+
rake
|
52
|
+
ripple (~> 0.9.5)
|
53
|
+
ripplr!
|
54
|
+
rspec-given
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.join("ripplr", "errors", "key_not_specified_error")
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ripplr
|
2
|
+
module Formatters
|
3
|
+
class Riak
|
4
|
+
def self.to_index(queryable_obj)
|
5
|
+
raise Ripplr::KeyNotSpecifiedError.new unless queryable_obj.respond_to?(:key)
|
6
|
+
|
7
|
+
# index_data = { :id => queryable_obj.key }
|
8
|
+
|
9
|
+
# queryable_obj.class.query_fields.each do |field|
|
10
|
+
# index_data.merge field.indexes_as(queryable_obj)
|
11
|
+
# end
|
12
|
+
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.join("ripplr", "formatters", "riak")
|
data/lib/ripplr/i18n.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.join("ripplr", "indexers", "ripple")
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ripplr
|
2
|
+
class QueryField
|
3
|
+
def initialize(type, property_name)
|
4
|
+
@type = type
|
5
|
+
@property = property_name
|
6
|
+
end
|
7
|
+
|
8
|
+
def indexes_as(queryable_object)
|
9
|
+
return { index_name(@type, @property) => queryable_object.send(@property) }
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def index_name(type, property_name)
|
14
|
+
"#{property_name.to_s}_#{type.to_s}".to_sym
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Ripplr
|
2
|
+
module Queryable
|
3
|
+
def index(indexer=Ripple.client)
|
4
|
+
indexer.index(self)
|
5
|
+
end
|
6
|
+
|
7
|
+
def remove_index(indexer=Ripple.client)
|
8
|
+
end
|
9
|
+
|
10
|
+
def bucket_name
|
11
|
+
self.class.bucket.name
|
12
|
+
end
|
13
|
+
|
14
|
+
def indexes_as
|
15
|
+
index_data = { :id => self.key }
|
16
|
+
|
17
|
+
self.class.query_fields.each do |field|
|
18
|
+
index_data.merge! field.indexes_as(self)
|
19
|
+
end
|
20
|
+
index_data
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
def included(base)
|
25
|
+
base.module_eval do
|
26
|
+
extend ActsAsMethods
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module ActsAsMethods
|
34
|
+
def query_fields
|
35
|
+
@query_fields ||= Array.new
|
36
|
+
@query_fields
|
37
|
+
end
|
38
|
+
|
39
|
+
def queryable(&block)
|
40
|
+
block.call
|
41
|
+
end
|
42
|
+
|
43
|
+
def time(*names)
|
44
|
+
names.each do |name|
|
45
|
+
query_fields << Ripplr::QueryField.new(:dt, name)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def text(*names)
|
50
|
+
names.each do |name|
|
51
|
+
query_fields << Ripplr::QueryField.new(:text, name)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'ripplr/i18n'
|
2
|
+
require 'riak/util/translation'
|
3
|
+
|
4
|
+
module Ripplr
|
5
|
+
module Translation
|
6
|
+
include Riak::Util::Translation
|
7
|
+
|
8
|
+
# The scope of i18n keys to search (:ripple).
|
9
|
+
def i18n_scope
|
10
|
+
:ripplr
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# A dummy object so translations can be accessed without module
|
15
|
+
# inclusion.
|
16
|
+
Translator = Object.new.tap {|o| o.extend Translation }
|
17
|
+
end
|
data/lib/ripplr/version.rb
CHANGED
data/lib/ripplr.rb
ADDED
data/ripplr.gemspec
CHANGED
@@ -12,13 +12,9 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.authors = ["Matt Snyder"]
|
13
13
|
|
14
14
|
# Deps
|
15
|
-
gem.add_development_dependency "rspec", "
|
16
|
-
gem.add_development_dependency
|
17
|
-
gem.add_dependency "
|
18
|
-
gem.add_dependency "ripple"
|
19
|
-
# gem.add_dependency "activesupport", [">= 3.0.0", "< 3.3.0"]
|
20
|
-
# gem.add_dependency "activemodel", [">= 3.0.0", "< 3.3.0"]
|
21
|
-
gem.add_dependency "tzinfo"
|
15
|
+
gem.add_development_dependency "rspec-given", ">= 1.6.0"
|
16
|
+
gem.add_development_dependency "rake"
|
17
|
+
gem.add_dependency "ripple", ">= 0.9.5"
|
22
18
|
|
23
19
|
# Files
|
24
20
|
ignores = File.read(".gitignore").split(/\r?\n/).reject{ |f| f =~ /^(#.+|\s*)$/ }.map {|f| Dir[f] }.flatten
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ripplr::Indexers::Ripple do
|
4
|
+
|
5
|
+
describe "#index" do
|
6
|
+
Given (:model) { mock :bucket_name => 'my_bucket', :indexes_as => 'some json' }
|
7
|
+
Given { Ripple.client.should_receive(:index).with('my_bucket', 'some json').and_return true }
|
8
|
+
Then { Ripplr::Indexers::Ripple.index(model).should be_true }
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ripplr::QueryField do
|
4
|
+
context "when text field and property is set" do
|
5
|
+
Given (:john) { Person.new :first_name => 'John' }
|
6
|
+
Given (:query_field) { Ripplr::QueryField.new :text, :first_name }
|
7
|
+
When (:result) { query_field.indexes_as john }
|
8
|
+
Then { result[:first_name_text].should == 'John' }
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ripplr::Queryable do
|
5
|
+
context "when ripplr::queryable is included" do
|
6
|
+
Given (:a_class) { class AClass; include Ripplr::Queryable; end }
|
7
|
+
Then { a_class.included_modules.should include(Ripplr::Queryable) }
|
8
|
+
Then { a_class.new.should respond_to(:index) }
|
9
|
+
Then { a_class.new.should respond_to(:remove_index) }
|
10
|
+
Then { a_class.new.should respond_to(:bucket_name) }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#bucket_name" do
|
14
|
+
Given { Person.bucket.should_receive(:name).and_return "people" }
|
15
|
+
Then { Person.new.bucket_name.should == "people" }
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#indexing" do
|
19
|
+
Given (:friend) { Person.new }
|
20
|
+
Given (:service) { mock :index => true }
|
21
|
+
Then { friend.index(service).should be_true }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#indexes_as" do
|
25
|
+
context "when the object is queryable and has text fields" do
|
26
|
+
Given (:lawnmower) { Lift.new :title => "Lawnmower", :description => "It’s a variation of the classic dumbbell row so it trains the muscles of your back." }
|
27
|
+
Given { lawnmower.stub(:key).and_return "ABCDEF012345" }
|
28
|
+
When (:result) { lawnmower.indexes_as }
|
29
|
+
Then { result.should == {
|
30
|
+
:id => "ABCDEF012345",
|
31
|
+
:title_text => "Lawnmower",
|
32
|
+
:description_text => "It’s a variation of the classic dumbbell row so it trains the muscles of your back."
|
33
|
+
}
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
context "when the object is queryable and has text and date fields" do
|
38
|
+
Given (:entry) { LogEntry.new :description => "4x8 BB Power Clean @ 135lbs." }
|
39
|
+
Given (:time) { Time.now }
|
40
|
+
Given { entry.stub(:created_at).and_return time }
|
41
|
+
Given { entry.stub(:key).and_return "XYZ1020" }
|
42
|
+
When (:result) { entry.indexes_as }
|
43
|
+
Then { result.should == {
|
44
|
+
:id => "XYZ1020",
|
45
|
+
:description_text => "4x8 BB Power Clean @ 135lbs.",
|
46
|
+
:created_at_dt => time
|
47
|
+
}
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripplr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2.beta
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name: rspec
|
15
|
+
name: rspec-given
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.6.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 1.6.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -43,22 +43,6 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: riak-client
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.0.0
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.0
|
62
46
|
- !ruby/object:Gem::Dependency
|
63
47
|
name: ripple
|
64
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,23 +50,7 @@ dependencies:
|
|
66
50
|
requirements:
|
67
51
|
- - ! '>='
|
68
52
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: tzinfo
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
53
|
+
version: 0.9.5
|
86
54
|
type: :runtime
|
87
55
|
prerelease: false
|
88
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,7 +58,7 @@ dependencies:
|
|
90
58
|
requirements:
|
91
59
|
- - ! '>='
|
92
60
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
61
|
+
version: 0.9.5
|
94
62
|
description: Ripplr provides a lower barrier to entry for developers wishing to migrate
|
95
63
|
to Riak. Ripplr focuses on enhancing the use of the Ripple Gem by adding Riak Search
|
96
64
|
functionality to your objects.
|
@@ -101,10 +69,31 @@ extensions: []
|
|
101
69
|
extra_rdoc_files: []
|
102
70
|
files:
|
103
71
|
- Gemfile
|
72
|
+
- Gemfile.lock
|
73
|
+
- lib/ripplr/errors/key_not_specified_error.rb
|
74
|
+
- lib/ripplr/errors.rb
|
75
|
+
- lib/ripplr/formatters/riak.rb
|
76
|
+
- lib/ripplr/formatters.rb
|
77
|
+
- lib/ripplr/i18n.rb
|
78
|
+
- lib/ripplr/indexers/ripple.rb
|
79
|
+
- lib/ripplr/indexers.rb
|
80
|
+
- lib/ripplr/locale/en.yml
|
81
|
+
- lib/ripplr/query_field.rb
|
82
|
+
- lib/ripplr/queryable.rb
|
83
|
+
- lib/ripplr/translation.rb
|
104
84
|
- lib/ripplr/version.rb
|
85
|
+
- lib/ripplr.rb
|
105
86
|
- Rakefile
|
106
87
|
- README.md
|
107
88
|
- ripplr.gemspec
|
89
|
+
- spec/ripplr/indexers/ripple_spec.rb
|
90
|
+
- spec/ripplr/query_field_spec.rb
|
91
|
+
- spec/ripplr/queryable_spec.rb
|
92
|
+
- spec/spec_helper.rb
|
93
|
+
- spec/support/models/lift.rb
|
94
|
+
- spec/support/models/log_entry.rb
|
95
|
+
- spec/support/models/person.rb
|
96
|
+
- spec/support/models.rb
|
108
97
|
- .gitignore
|
109
98
|
homepage: https://github.com/validas/Ripplr
|
110
99
|
licenses: []
|
@@ -132,4 +121,12 @@ specification_version: 3
|
|
132
121
|
summary: Ripplr is a library to ease the use of Riak Search from within Rails when
|
133
122
|
using Ripple and Riak Client.
|
134
123
|
test_files:
|
124
|
+
- spec/ripplr/indexers/ripple_spec.rb
|
125
|
+
- spec/ripplr/query_field_spec.rb
|
126
|
+
- spec/ripplr/queryable_spec.rb
|
127
|
+
- spec/spec_helper.rb
|
128
|
+
- spec/support/models/lift.rb
|
129
|
+
- spec/support/models/log_entry.rb
|
130
|
+
- spec/support/models/person.rb
|
131
|
+
- spec/support/models.rb
|
135
132
|
- .gitignore
|