tarantool 0.2.1 → 0.2.2

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.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tarantool (0.2)
4
+ tarantool (0.2.2)
5
5
  activemodel (>= 3.1, < 4.0)
6
6
  iproto (>= 0.2)
7
7
 
data/examples/record.rb CHANGED
@@ -28,6 +28,8 @@ class User < MyTarantool
28
28
  end
29
29
  end
30
30
 
31
+ User.tarantool.call
32
+
31
33
  # Now attribute positions are not important.
32
34
  User.create login: 'prepor', email: 'ceo@prepor.ru', name: 'Andrew'
33
35
  User.create login: 'ruden', name: 'Andrew', email: 'rudenkoco@gmail.com'
@@ -48,6 +50,9 @@ end
48
50
  # increment field apples_count by one. Its atomic operation vie native Tarantool interface
49
51
  User.find('prepor').increment :apples_count
50
52
 
53
+ # call lua func, which return record's tuples
54
+ User.call('box.select_range', '0','0', '5')
55
+
51
56
  # update only dirty attributes
52
57
  user = User.find('prepor')
53
58
  user.name = "Petr"
@@ -59,3 +64,5 @@ user.save
59
64
  User.find('prepor').info['bio'] # => 'hi!'
60
65
  user.destroy
61
66
  puts "Ok!"
67
+
68
+
data/lib/tarantool.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  require 'iproto'
3
3
 
4
4
  class Tarantool
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.2'
6
6
 
7
7
  require 'tarantool/space'
8
8
  require 'tarantool/requests'
@@ -13,12 +13,15 @@ class Tarantool
13
13
  end
14
14
 
15
15
  def each(&blk)
16
- res = record.space.select(*@tuples, index_no: @index_no, limit: @limit, offset: @offset).tuples
17
- res.each do |tuple|
18
- blk.call record.from_server(tuple)
16
+ to_records(record.space.select(*@tuples, index_no: @index_no, limit: @limit, offset: @offset).tuples).each do |r|
17
+ blk.call r
19
18
  end
20
19
  end
21
20
 
21
+ def call(proc_name, *args)
22
+ to_records record.space.call(proc_name: proc_name, args: args, return_tuple: true).tuples
23
+ end
24
+
22
25
  def limit(limit)
23
26
  @limit = limit
24
27
  self
@@ -89,6 +92,12 @@ class Tarantool
89
92
  end
90
93
  index_no
91
94
  end
95
+
96
+ def to_records(tuples)
97
+ tuples.map do |tuple|
98
+ record.from_server(tuple)
99
+ end
100
+ end
92
101
  end
93
102
  class Record
94
103
  extend ActiveModel::Naming
@@ -164,7 +173,7 @@ class Tarantool
164
173
  Select.new(self)
165
174
  end
166
175
 
167
- %w{where limit offset}.each do |v|
176
+ %w{where limit offset call first}.each do |v|
168
177
  define_method v do |*args|
169
178
  select.send(v, *args)
170
179
  end
data/spec/spec_helper.rb CHANGED
@@ -11,7 +11,7 @@ require 'rr'
11
11
 
12
12
  require 'tarantool'
13
13
 
14
- TARANTOOL_CONFIG = { host: '127.0.0.1', port: 33013, type: :block }
14
+ TARANTOOL_CONFIG = { host: '192.168.127.128', port: 33013, type: :block }
15
15
 
16
16
  DB = Tarantool.new TARANTOOL_CONFIG
17
17
 
@@ -245,7 +245,20 @@ describe Tarantool::Record do
245
245
  end
246
246
  end
247
247
  end
248
+ end
249
+
250
+ describe "call" do
251
+ let(:res) { user.class.select.call('box.select_range', '0','0', '2')}
252
+ before do
253
+ user_class.create login: 'prepor', name: 'Andrew', email: 'ceo@prepor.ru'
254
+ user_class.create login: 'petro', name: 'Petr', email: 'petro@gmail.com'
255
+ user_class.create login: 'ruden', name: 'Andrew', email: 'rudenkoco@gmail.com'
256
+ end
248
257
 
258
+ it "should select 2 records and return UserClass instances" do
259
+ res.size.must_equal 2
260
+ res.any? { |v| v.is_a? user_class }
261
+ end
249
262
  end
250
263
  end
251
264
 
data/tarantool.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'tarantool'
7
- s.version = '0.2.1'
8
- s.date = '2012-01-27'
7
+ s.version = '0.2.2'
8
+ s.date = '2012-01-30'
9
9
  s.rubyforge_project = 'tarantool'
10
10
 
11
11
  s.summary = "Tarantool KV-storage client."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tarantool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-27 00:00:00.000000000Z
12
+ date: 2012-01-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: iproto
16
- requirement: &70184618798480 !ruby/object:Gem::Requirement
16
+ requirement: &70164633669320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70184618798480
24
+ version_requirements: *70164633669320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activemodel
27
- requirement: &70184618796360 !ruby/object:Gem::Requirement
27
+ requirement: &70164633668620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -35,7 +35,7 @@ dependencies:
35
35
  version: '4.0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70184618796360
38
+ version_requirements: *70164633668620
39
39
  description: Tarantool KV-storage client.
40
40
  email: ceo@prepor.ru
41
41
  executables: []