ripplr 0.0.1.alpha → 0.0.2.beta
Sign up to get free protection for your applications and to get access to all the features.
- 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
|