skydb 0.2.3 → 0.3.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.
Files changed (84) hide show
  1. checksums.yaml +15 -0
  2. data/README.md +165 -1
  3. data/lib/skydb.rb +18 -61
  4. data/lib/skydb/client.rb +186 -186
  5. data/lib/skydb/event.rb +47 -76
  6. data/lib/skydb/property.rb +34 -67
  7. data/lib/skydb/table.rb +121 -41
  8. data/lib/skydb/version.rb +1 -1
  9. data/test/integration/client_test.rb +88 -0
  10. data/test/test_helper.rb +3 -51
  11. data/test/unit/client_test.rb +135 -32
  12. metadata +17 -278
  13. data/bin/sky +0 -89
  14. data/lib/ext/hash.rb +0 -11
  15. data/lib/ext/string.rb +0 -11
  16. data/lib/ext/treetop.rb +0 -19
  17. data/lib/skydb/action.rb +0 -76
  18. data/lib/skydb/import.rb +0 -7
  19. data/lib/skydb/import/importer.rb +0 -435
  20. data/lib/skydb/import/transforms/apache.yml +0 -4
  21. data/lib/skydb/import/transforms/sky.yml +0 -28
  22. data/lib/skydb/import/transforms/snowplow.yml +0 -1
  23. data/lib/skydb/import/translator.rb +0 -119
  24. data/lib/skydb/message.rb +0 -146
  25. data/lib/skydb/message/add_action.rb +0 -53
  26. data/lib/skydb/message/add_event.rb +0 -72
  27. data/lib/skydb/message/add_property.rb +0 -55
  28. data/lib/skydb/message/create_table.rb +0 -64
  29. data/lib/skydb/message/delete_table.rb +0 -66
  30. data/lib/skydb/message/get_action.rb +0 -55
  31. data/lib/skydb/message/get_actions.rb +0 -38
  32. data/lib/skydb/message/get_properties.rb +0 -38
  33. data/lib/skydb/message/get_property.rb +0 -55
  34. data/lib/skydb/message/get_table.rb +0 -74
  35. data/lib/skydb/message/get_tables.rb +0 -43
  36. data/lib/skydb/message/lookup.rb +0 -79
  37. data/lib/skydb/message/lua/aggregate.rb +0 -63
  38. data/lib/skydb/message/multi.rb +0 -57
  39. data/lib/skydb/message/next_actions.rb +0 -55
  40. data/lib/skydb/message/ping.rb +0 -32
  41. data/lib/skydb/property/type.rb +0 -40
  42. data/lib/skydb/query.rb +0 -183
  43. data/lib/skydb/query/after_condition.rb +0 -104
  44. data/lib/skydb/query/ast/selection_field_syntax_node.rb +0 -26
  45. data/lib/skydb/query/ast/selection_fields_syntax_node.rb +0 -16
  46. data/lib/skydb/query/ast/selection_group_syntax_node.rb +0 -16
  47. data/lib/skydb/query/ast/selection_groups_syntax_node.rb +0 -16
  48. data/lib/skydb/query/condition.rb +0 -113
  49. data/lib/skydb/query/on_condition.rb +0 -53
  50. data/lib/skydb/query/selection.rb +0 -398
  51. data/lib/skydb/query/selection_field.rb +0 -99
  52. data/lib/skydb/query/selection_fields_grammar.treetop +0 -46
  53. data/lib/skydb/query/selection_fields_parse_error.rb +0 -30
  54. data/lib/skydb/query/selection_group.rb +0 -78
  55. data/lib/skydb/query/selection_groups_grammar.treetop +0 -31
  56. data/lib/skydb/query/selection_groups_parse_error.rb +0 -30
  57. data/lib/skydb/query/validation_error.rb +0 -8
  58. data/lib/skydb/timestamp.rb +0 -22
  59. data/test/integration/query_test.rb +0 -102
  60. data/test/unit/event_test.rb +0 -32
  61. data/test/unit/import/importer_test.rb +0 -208
  62. data/test/unit/import/translator_test.rb +0 -88
  63. data/test/unit/message/add_action_message_test.rb +0 -34
  64. data/test/unit/message/add_event_message_test.rb +0 -35
  65. data/test/unit/message/add_property_message_test.rb +0 -41
  66. data/test/unit/message/create_table_message_test.rb +0 -34
  67. data/test/unit/message/delete_table_message_test.rb +0 -34
  68. data/test/unit/message/get_action_message_test.rb +0 -34
  69. data/test/unit/message/get_actions_message_test.rb +0 -18
  70. data/test/unit/message/get_properties_message_test.rb +0 -18
  71. data/test/unit/message/get_property_message_test.rb +0 -34
  72. data/test/unit/message/get_table_message_test.rb +0 -19
  73. data/test/unit/message/get_tables_message_test.rb +0 -18
  74. data/test/unit/message/lookup_message_test.rb +0 -27
  75. data/test/unit/message/lua_aggregate_message_test.rb +0 -19
  76. data/test/unit/message/multi_message_test.rb +0 -22
  77. data/test/unit/message/next_action_message_test.rb +0 -34
  78. data/test/unit/message/ping_message_test.rb +0 -18
  79. data/test/unit/message_test.rb +0 -15
  80. data/test/unit/query/after_test.rb +0 -89
  81. data/test/unit/query/on_test.rb +0 -71
  82. data/test/unit/query/selection_test.rb +0 -273
  83. data/test/unit/query_test.rb +0 -182
  84. data/test/unit/skydb_test.rb +0 -20
@@ -1,3 +1,3 @@
1
1
  class SkyDB
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,88 @@
1
+ # encoding: binary
2
+ require 'test_helper'
3
+
4
+ class TestClient < MiniTest::Unit::TestCase
5
+ ##############################################################################
6
+ #
7
+ # Setup / Teardown
8
+ #
9
+ ##############################################################################
10
+
11
+ def setup
12
+ # SkyDB.debug = true
13
+ WebMock.disable!
14
+ @client = SkyDB::Client.new()
15
+ begin; @client.delete_table(:name => 'sky-rb-integration'); rescue; end
16
+ end
17
+
18
+ def teardown
19
+ begin; @client.delete_table(:name => 'sky-rb-integration'); rescue; end
20
+ end
21
+
22
+
23
+ ##############################################################################
24
+ #
25
+ # Tests
26
+ #
27
+ ##############################################################################
28
+
29
+ def test_event_management
30
+ table = @client.create_table(:name => 'sky-rb-integration')
31
+ table.create_property(:name => 'action', :transient => true, :data_type => 'factor')
32
+ table.create_property(:name => 'age', :data_type => 'integer')
33
+
34
+ table.add_event("obj0", :timestamp => DateTime.iso8601('2013-01-01T00:00:00Z'), :data => {'action' => "A0"})
35
+ table.add_event("obj0", :timestamp => DateTime.iso8601('2013-01-01T00:00:01Z'), :data => {'action' => "A1"})
36
+ table.add_event("obj0", :timestamp => DateTime.iso8601('2013-01-01T00:00:01Z'), :data => {'age' => 12})
37
+ table.add_event("obj0", :timestamp => DateTime.iso8601('2013-01-01T00:00:02Z'), :data => {'action' => "A2"})
38
+ table.delete_event("obj0", :timestamp => DateTime.iso8601('2013-01-01T00:00:02Z'))
39
+
40
+ table.add_event("obj1", :timestamp => DateTime.iso8601('2013-01-01T01:00:00Z'), :data => {'action' => "A1"})
41
+ table.add_event("obj1", {:timestamp => DateTime.iso8601('2013-01-01T01:00:00Z'), :data => {'age' => 50}}, :method => :replace)
42
+
43
+ assert_equal({"timestamp"=>"2013-01-01T01:00:00.000000Z", "data"=>{"age" => 50}}, table.get_event("obj1", DateTime.parse("2013-01-01T01:00:00Z")).to_hash)
44
+ assert_equal([
45
+ {"timestamp"=>"2013-01-01T00:00:00.000000Z", "data"=>{"action"=>1}},
46
+ {"timestamp"=>"2013-01-01T00:00:01.000000Z", "data"=>{"action"=>2, "age" => 12}}
47
+ ], table.get_events("obj0").map{|e| e.to_hash})
48
+
49
+ @client.delete_table(table)
50
+ end
51
+
52
+ def test_simple_count_query
53
+ table = @client.create_table(:name => 'sky-rb-integration')
54
+ table.create_property(:name => 'action', :transient => true, :data_type => 'factor')
55
+ table.add_event("count0", :timestamp => DateTime.iso8601('2013-01-01T00:00:00Z'), :data => {'action' => "A0"})
56
+ table.add_event("count0", :timestamp => DateTime.iso8601('2013-01-01T00:00:01Z'), :data => {'action' => "A1"})
57
+ table.add_event("count0", :timestamp => DateTime.iso8601('2013-01-01T00:00:02Z'), :data => {'action' => "A2"})
58
+ table.add_event("count1", :timestamp => DateTime.iso8601('2013-01-01T00:00:00Z'), :data => {'action' => "A1"})
59
+ table.add_event("count1", :timestamp => DateTime.iso8601('2013-01-01T00:00:05Z'), :data => {'action' => "A2"})
60
+ results = table.query({steps:[{:type => 'selection', :fields => [:name => 'count', :expression => 'count()']}]})
61
+ @client.delete_table(table)
62
+ assert_equal({'count' => 5}, results)
63
+ end
64
+
65
+ def test_funnel_query
66
+ table = @client.create_table(:name => 'sky-rb-integration')
67
+ table.create_property(:name => 'action', :transient => true, :data_type => 'factor')
68
+ table.add_event("fun0", :timestamp => DateTime.iso8601('2013-01-01T00:00:00Z'), :data => {'action' => "A0"})
69
+ table.add_event("fun0", :timestamp => DateTime.iso8601('2013-01-01T00:00:01Z'), :data => {'action' => "A1"})
70
+ table.add_event("fun0", :timestamp => DateTime.iso8601('2013-01-01T00:00:02Z'), :data => {'action' => "A2"})
71
+ table.add_event("fun1", :timestamp => DateTime.iso8601('2013-01-01T00:00:00Z'), :data => {'action' => "A0"})
72
+ table.add_event("fun1", :timestamp => DateTime.iso8601('2013-01-01T00:00:05Z'), :data => {'action' => "A1"})
73
+ table.add_event("fun1", :timestamp => DateTime.iso8601('2013-01-01T00:00:10Z'), :data => {'action' => "A3"})
74
+ results = table.query({
75
+ steps:[
76
+ {:type => 'condition', :expression => 'action == "A0"', :steps => [
77
+ {:type => 'condition', :expression => 'action == "A1"', :within => [1,1], :steps => [
78
+ {:type => 'condition', :expression => 'true', :within => [1,1], :steps => [
79
+ {:type => 'selection', :dimensions => ['action'], :fields => [:name => 'count', :expression => 'count()']}
80
+ ]}
81
+ ]}
82
+ ]}
83
+ ]
84
+ })
85
+ @client.delete_table(table)
86
+ assert_equal({"action"=>{"A2"=>{"count"=>1}, "A3"=>{"count"=>1}}}, results)
87
+ end
88
+ end
@@ -1,56 +1,8 @@
1
1
  require 'simplecov'
2
- SimpleCov.start do
3
- add_group "Query", "skydb/query"
4
- end
5
-
2
+ SimpleCov.start
6
3
  require 'bundler/setup'
7
4
  require 'minitest/autorun'
8
- require 'mocha'
5
+ require 'mocha/setup'
6
+ require 'webmock/minitest'
9
7
  require 'unindentable'
10
- require "stringio"
11
8
  require 'skydb'
12
- require 'skydb/import'
13
-
14
- class MiniTest::Unit::TestCase
15
- # The name of the table to import into.
16
- def default_table_name; "sky-integration-tests"; end
17
-
18
- def assert_bytes exp, act, msg = nil
19
- exp = exp.to_hex
20
- act = act.string.to_hex
21
- assert_equal(exp, act, msg)
22
- end
23
-
24
- # Captures STDIN & STDERR and returns them as strings.
25
- def capture_io
26
- _stdout, $stdout = $stdout, StringIO.new
27
- _stderr, $stderr = $stderr, StringIO.new
28
- yield
29
- [$stdout.string, $stderr.string]
30
- ensure
31
- $stdout = _stdout
32
- $stderr = _stderr
33
- end
34
-
35
- def import(filename, options={})
36
- # Default options.
37
- options = {
38
- :table_name => default_table_name,
39
- :transform => 'sky'
40
- }.merge(options)
41
-
42
- # Prepend fixture directory.
43
- filename = File.expand_path(File.join(File.dirname(__FILE__), "../fixtures", filename))
44
-
45
- # Delete the table if it exists.
46
- table = SkyDB.get_table(options[:table_name])
47
- SkyDB.delete_table(SkyDB::Table.new(options[:table_name])) unless table.nil?
48
- SkyDB.create_table(SkyDB::Table.new(options[:table_name]))
49
-
50
- # Import.
51
- importer = SkyDB::Import::Importer.new()
52
- importer.table_name = options[:table_name]
53
- importer.load_transform_file(options[:transform]) unless options[:transform].nil?
54
- importer.import([filename], :progress_bar => false)
55
- end
56
- end
@@ -2,70 +2,173 @@
2
2
  require 'test_helper'
3
3
 
4
4
  class TestClient < MiniTest::Unit::TestCase
5
+ ##############################################################################
6
+ #
7
+ # Setup / Teardown
8
+ #
9
+ ##############################################################################
10
+
5
11
  def setup
6
- @client = SkyDB::Client.new(host:'127.0.0.1', port:9000)
7
- @message = mock('message')
12
+ @client = SkyDB::Client.new()
13
+ @table = SkyDB::Table.new(:name => 'foo', :client => @client)
8
14
  end
15
+
9
16
 
10
17
  ######################################
11
- # Action Messages
18
+ # Table API
12
19
  ######################################
13
20
 
14
- def test_add_action
15
- action = SkyDB::Action.new
16
- @client.expects(:send_message).with(is_a(SkyDB::Message::AddAction))
17
- @client.add_action(action)
21
+ def test_get_tables
22
+ stub_request(:get, "http://localhost:8585/tables")
23
+ .to_return(:status => 200, :body => '[{"name":"foo"},{"name":"bar"}]')
24
+ tables = @client.get_tables()
25
+ assert_equal(2, tables.length)
26
+ assert_equal("foo", tables[0].name)
27
+ assert_equal("bar", tables[1].name)
18
28
  end
19
29
 
20
- def test_get_action
21
- @client.expects(:send_message).with(is_a(SkyDB::Message::GetAction))
22
- @client.get_action(12)
30
+ def test_get_table
31
+ stub_request(:get, "http://localhost:8585/tables/foo")
32
+ .to_return(:status => 200, :body => '{"name":"foo"}')
33
+ table = @client.get_table("foo")
34
+ assert_equal("foo", table.name)
23
35
  end
24
36
 
25
- def test_get_actions
26
- @client.expects(:send_message).with(is_a(SkyDB::Message::GetActions))
27
- @client.get_actions
37
+ def test_create_table
38
+ stub_request(:post, "http://localhost:8585/tables")
39
+ .with(:body => '{"name":"foo"}')
40
+ .to_return(:status => 200, :body => '{"name":"foo"}')
41
+
42
+ table = @client.create_table(SkyDB::Table.new(:name => 'foo'))
43
+ assert_equal("foo", table.name)
44
+ end
45
+
46
+ def test_delete_table
47
+ stub_request(:delete, "http://localhost:8585/tables/foo").to_return(:status => 200)
48
+ @client.delete_table(SkyDB::Table.new(:name => 'foo'))
28
49
  end
29
50
 
30
51
 
31
52
  ######################################
32
- # Property Messages
53
+ # Property API
33
54
  ######################################
34
55
 
35
- def test_add_property
36
- property = SkyDB::Property.new
37
- @client.expects(:send_message).with(is_a(SkyDB::Message::AddProperty))
38
- @client.add_property(property)
56
+ def test_get_properties
57
+ stub_request(:get, "http://localhost:8585/tables/foo/properties")
58
+ .to_return(:status => 200, :body => '[{"id":-1,"name":"action","transient":true,"dataType":"string"},{"id":1,"name":"first_name","transient":false,"dataType":"integer"}]')
59
+ properties = @table.get_properties()
60
+ assert_equal(2, properties.length)
61
+ assert_equal("action", properties[0].name)
62
+ assert_equal("first_name", properties[1].name)
39
63
  end
40
64
 
41
65
  def test_get_property
42
- @client.expects(:send_message).with(is_a(SkyDB::Message::GetProperty))
43
- @client.get_property(12)
66
+ stub_request(:get, "http://localhost:8585/tables/foo/properties/action")
67
+ .to_return(:status => 200, :body => '{"id":-1,"name":"action","transient":true,"dataType":"string"}')
68
+ property = @table.get_property("action")
69
+ assert_equal("action", property.name)
44
70
  end
45
71
 
46
- def test_get_properties
47
- @client.expects(:send_message).with(is_a(SkyDB::Message::GetProperties))
48
- @client.get_properties
72
+ def test_create_property
73
+ stub_request(:post, "http://localhost:8585/tables/foo/properties")
74
+ .with(:body => '{"name":"action","transient":true,"dataType":"string"}')
75
+ .to_return(:status => 200, :body => '{"id":-1,"name":"action","transient":true,"dataType":"string"}')
76
+ property = @table.create_property(SkyDB::Property.new(:name => 'action', :transient => true, :data_type => 'string'))
77
+ assert_equal("action", property.name)
78
+ assert_equal(true, property.transient)
79
+ assert_equal("string", property.data_type)
80
+ end
81
+
82
+ def test_update_property
83
+ stub_request(:patch, "http://localhost:8585/tables/foo/properties/action2")
84
+ .with(:body => '{"name":"action2","transient":true,"dataType":"string","id":-1}')
85
+ .to_return(:status => 200, :body => '{"id":-1,"name":"action2","transient":true,"dataType":"string"}')
86
+ property = @table.update_property(SkyDB::Property.new(:id => -1, :name => 'action2', :transient => true, :data_type => 'string'))
87
+ assert_equal("action2", property.name)
88
+ end
89
+
90
+ def test_delete_property
91
+ stub_request(:delete, "http://localhost:8585/tables/foo/properties/action")
92
+ .to_return(:status => 200)
93
+ @table.delete_property(SkyDB::Property.new(:name => 'action'))
49
94
  end
50
95
 
51
96
 
52
97
  ######################################
53
- # Event Messages
98
+ # Event API
54
99
  ######################################
55
100
 
56
- def test_add_event
57
- event = SkyDB::Event.new
58
- @client.expects(:send_message).with(is_a(SkyDB::Message::AddEvent))
59
- @client.add_event(event)
101
+ def test_get_events
102
+ stub_request(:get, "http://localhost:8585/tables/foo/objects/xxx/events")
103
+ .to_return(:status => 200, :body => '[{"timestamp":"1970-01-01T00:00:00Z","data":{"action":"/home"}},{"timestamp":"1970-01-01T00:00:00.5Z","data":{"action":"/pricing"}}]')
104
+ events = @table.get_events("xxx")
105
+ assert_equal(2, events.length)
106
+ assert_equal("1970-01-01T00:00:00.000000Z", events[0].formatted_timestamp)
107
+ assert_equal({'action' => '/home'}, events[0].data)
108
+ assert_equal("1970-01-01T00:00:00.500000Z", events[1].formatted_timestamp)
109
+ assert_equal({'action' => '/pricing'}, events[1].data)
110
+ end
111
+
112
+ def test_get_event
113
+ stub_request(:get, "http://localhost:8585/tables/foo/objects/xxx/events/1970-01-01T00:00:00.000000Z")
114
+ .to_return(:status => 200, :body => '{"timestamp":"1970-01-01T00:00:00.000000Z","data":{"action":"/home"}}')
115
+ event = @table.get_event("xxx", DateTime.iso8601('1970-01-01T00:00:00Z'))
116
+ assert_equal("1970-01-01T00:00:00.000000Z", event.formatted_timestamp)
117
+ assert_equal({'action' => '/home'}, event.data)
118
+ end
119
+
120
+ def test_replace_event
121
+ stub_request(:put, "http://localhost:8585/tables/foo/objects/xxx/events/1970-01-01T00:00:00.000000Z")
122
+ .with(:body => '{"timestamp":"1970-01-01T00:00:00.000000Z","data":{"action":"/home"}}')
123
+ .to_return(:status => 200, :body => '{"timestamp":"1970-01-01T00:00:00.000000Z","data":{"action":"/home"}}')
124
+ event = SkyDB::Event.new(:timestamp => DateTime.iso8601('1970-01-01T00:00:00Z'), :data => {'action' => '/home'})
125
+ event = @table.add_event("xxx", event, :method => :replace)
126
+ assert_equal("1970-01-01T00:00:00.000000Z", event.formatted_timestamp)
127
+ assert_equal({'action' => '/home'}, event.data)
128
+ end
129
+
130
+ def test_merge_event
131
+ stub_request(:patch, "http://localhost:8585/tables/foo/objects/xxx/events/1970-01-01T00:00:00.000000Z")
132
+ .with(:body => '{"timestamp":"1970-01-01T00:00:00.000000Z","data":{"action":"/home"}}')
133
+ .to_return(:status => 200, :body => '{"timestamp":"1970-01-01T00:00:00.000000Z","data":{"action":"/home","first_name":"bob"}}')
134
+ event = SkyDB::Event.new(:timestamp => DateTime.iso8601('1970-01-01T00:00:00Z'), :data => {'action' => '/home'})
135
+ event = @table.add_event("xxx", event, :method => :merge)
136
+ assert_equal("1970-01-01T00:00:00.000000Z", event.formatted_timestamp)
137
+ assert_equal({'action' => '/home', 'first_name' => 'bob'}, event.data)
138
+ end
139
+
140
+ def test_delete_event
141
+ stub_request(:delete, "http://localhost:8585/tables/foo/objects/xxx/events/1970-01-01T00:00:00.000000Z")
142
+ .to_return(:status => 200)
143
+ @table.delete_event("xxx", SkyDB::Event.new(:timestamp => DateTime.iso8601('1970-01-01T00:00:00Z')))
60
144
  end
61
145
 
62
146
 
63
147
  ######################################
64
- # Query Messages
148
+ # Query API
65
149
  ######################################
66
150
 
67
- def test_next_actions
68
- @client.expects(:send_message).with(is_a(SkyDB::Message::NextActions))
69
- @client.next_actions([1, 2])
151
+ def test_query
152
+ stub_request(:post, "http://localhost:8585/tables/foo/query")
153
+ .with(:body => '{"steps":[{"type":"selection","fields":[{"name":"count","expression":"count()"}]}]}')
154
+ .to_return(:status => 200, :body => '{"count":5}'+"\n")
155
+ results = @table.query([{:type => 'selection', :fields => [{:name => 'count', :expression => 'count()'}]}])
156
+ assert_equal({'count' => 5}, results)
157
+ end
158
+
159
+
160
+ ######################################
161
+ # Utility API
162
+ ######################################
163
+
164
+ def test_successful_ping
165
+ stub_request(:get, "http://localhost:8585/ping")
166
+ .to_return(:status => 200, :body => '{"message":"ok"}')
167
+ assert(@client.ping())
168
+ end
169
+
170
+ def test_unsuccessful_ping
171
+ stub_request(:get, "http://localhost:8585/ping").to_timeout
172
+ refute(@client.ping())
70
173
  end
71
174
  end
metadata CHANGED
@@ -1,212 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skydb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Johnson
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-22 00:00:00.000000000 Z
11
+ date: 2013-04-02 00:00:00.000000000 Z
13
12
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: msgpack
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 0.4.7
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 0.4.7
30
- - !ruby/object:Gem::Dependency
31
- name: commander
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 4.1.3
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 4.1.3
46
- - !ruby/object:Gem::Dependency
47
- name: ruby-progressbar
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 1.0.2
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.2
62
- - !ruby/object:Gem::Dependency
63
- name: chronic
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: 0.9.0
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.9.0
78
- - !ruby/object:Gem::Dependency
79
- name: treetop
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: 1.4.12
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 1.4.12
94
- - !ruby/object:Gem::Dependency
95
- name: yajl-ruby
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: 1.1.0
102
- type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: 1.1.0
110
- - !ruby/object:Gem::Dependency
111
- name: bzip2-ruby
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 0.2.7
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 0.2.7
126
- - !ruby/object:Gem::Dependency
127
- name: apachelogregex
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: 0.1.0
134
- type: :runtime
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 0.1.0
142
- - !ruby/object:Gem::Dependency
143
- name: useragent
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- version: 0.4.16
150
- type: :runtime
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ~>
156
- - !ruby/object:Gem::Version
157
- version: 0.4.16
158
13
  - !ruby/object:Gem::Dependency
159
14
  name: rake
160
15
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
16
  requirements:
163
17
  - - ~>
164
18
  - !ruby/object:Gem::Version
165
- version: 0.9.2.2
19
+ version: 10.0.4
166
20
  type: :development
167
21
  prerelease: false
168
22
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
23
  requirements:
171
24
  - - ~>
172
25
  - !ruby/object:Gem::Version
173
- version: 0.9.2.2
26
+ version: 10.0.4
174
27
  - !ruby/object:Gem::Dependency
175
28
  name: minitest
176
29
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
30
  requirements:
179
31
  - - ~>
180
32
  - !ruby/object:Gem::Version
181
- version: 3.5.0
33
+ version: 4.7.0
182
34
  type: :development
183
35
  prerelease: false
184
36
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
37
  requirements:
187
38
  - - ~>
188
39
  - !ruby/object:Gem::Version
189
- version: 3.5.0
40
+ version: 4.7.0
190
41
  - !ruby/object:Gem::Dependency
191
42
  name: mocha
192
43
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
44
  requirements:
195
45
  - - ~>
196
46
  - !ruby/object:Gem::Version
197
- version: 0.12.5
47
+ version: 0.13.3
198
48
  type: :development
199
49
  prerelease: false
200
50
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
51
  requirements:
203
52
  - - ~>
204
53
  - !ruby/object:Gem::Version
205
- version: 0.12.5
54
+ version: 0.13.3
206
55
  - !ruby/object:Gem::Dependency
207
56
  name: unindentable
208
57
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
58
  requirements:
211
59
  - - ~>
212
60
  - !ruby/object:Gem::Version
@@ -214,7 +62,6 @@ dependencies:
214
62
  type: :development
215
63
  prerelease: false
216
64
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
65
  requirements:
219
66
  - - ~>
220
67
  - !ruby/object:Gem::Version
@@ -222,7 +69,6 @@ dependencies:
222
69
  - !ruby/object:Gem::Dependency
223
70
  name: simplecov
224
71
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
72
  requirements:
227
73
  - - ~>
228
74
  - !ruby/object:Gem::Version
@@ -230,172 +76,65 @@ dependencies:
230
76
  type: :development
231
77
  prerelease: false
232
78
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
79
  requirements:
235
80
  - - ~>
236
81
  - !ruby/object:Gem::Version
237
82
  version: 0.7.1
238
83
  - !ruby/object:Gem::Dependency
239
- name: m
84
+ name: webmock
240
85
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
86
  requirements:
243
87
  - - ~>
244
88
  - !ruby/object:Gem::Version
245
- version: 1.3.1
89
+ version: 1.11.0
246
90
  type: :development
247
91
  prerelease: false
248
92
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
93
  requirements:
251
94
  - - ~>
252
95
  - !ruby/object:Gem::Version
253
- version: 1.3.1
96
+ version: 1.11.0
254
97
  description:
255
98
  email:
256
99
  - benbjohnson@yahoo.com
257
- executables:
258
- - sky
100
+ executables: []
259
101
  extensions: []
260
102
  extra_rdoc_files: []
261
103
  files:
262
- - lib/ext/hash.rb
263
- - lib/ext/string.rb
264
- - lib/ext/treetop.rb
265
- - lib/skydb/action.rb
266
104
  - lib/skydb/client.rb
267
105
  - lib/skydb/event.rb
268
- - lib/skydb/import/importer.rb
269
- - lib/skydb/import/transforms/apache.yml
270
- - lib/skydb/import/transforms/sky.yml
271
- - lib/skydb/import/transforms/snowplow.yml
272
- - lib/skydb/import/translator.rb
273
- - lib/skydb/import.rb
274
- - lib/skydb/message/add_action.rb
275
- - lib/skydb/message/add_event.rb
276
- - lib/skydb/message/add_property.rb
277
- - lib/skydb/message/create_table.rb
278
- - lib/skydb/message/delete_table.rb
279
- - lib/skydb/message/get_action.rb
280
- - lib/skydb/message/get_actions.rb
281
- - lib/skydb/message/get_properties.rb
282
- - lib/skydb/message/get_property.rb
283
- - lib/skydb/message/get_table.rb
284
- - lib/skydb/message/get_tables.rb
285
- - lib/skydb/message/lookup.rb
286
- - lib/skydb/message/lua/aggregate.rb
287
- - lib/skydb/message/multi.rb
288
- - lib/skydb/message/next_actions.rb
289
- - lib/skydb/message/ping.rb
290
- - lib/skydb/message.rb
291
- - lib/skydb/property/type.rb
292
106
  - lib/skydb/property.rb
293
- - lib/skydb/query/after_condition.rb
294
- - lib/skydb/query/ast/selection_field_syntax_node.rb
295
- - lib/skydb/query/ast/selection_fields_syntax_node.rb
296
- - lib/skydb/query/ast/selection_group_syntax_node.rb
297
- - lib/skydb/query/ast/selection_groups_syntax_node.rb
298
- - lib/skydb/query/condition.rb
299
- - lib/skydb/query/on_condition.rb
300
- - lib/skydb/query/selection.rb
301
- - lib/skydb/query/selection_field.rb
302
- - lib/skydb/query/selection_fields_grammar.treetop
303
- - lib/skydb/query/selection_fields_parse_error.rb
304
- - lib/skydb/query/selection_group.rb
305
- - lib/skydb/query/selection_groups_grammar.treetop
306
- - lib/skydb/query/selection_groups_parse_error.rb
307
- - lib/skydb/query/validation_error.rb
308
- - lib/skydb/query.rb
309
107
  - lib/skydb/table.rb
310
- - lib/skydb/timestamp.rb
311
108
  - lib/skydb/version.rb
312
109
  - lib/skydb.rb
313
110
  - README.md
314
- - test/integration/query_test.rb
111
+ - test/integration/client_test.rb
315
112
  - test/test_helper.rb
316
113
  - test/unit/client_test.rb
317
- - test/unit/event_test.rb
318
- - test/unit/import/importer_test.rb
319
- - test/unit/import/translator_test.rb
320
- - test/unit/message/add_action_message_test.rb
321
- - test/unit/message/add_event_message_test.rb
322
- - test/unit/message/add_property_message_test.rb
323
- - test/unit/message/create_table_message_test.rb
324
- - test/unit/message/delete_table_message_test.rb
325
- - test/unit/message/get_action_message_test.rb
326
- - test/unit/message/get_actions_message_test.rb
327
- - test/unit/message/get_properties_message_test.rb
328
- - test/unit/message/get_property_message_test.rb
329
- - test/unit/message/get_table_message_test.rb
330
- - test/unit/message/get_tables_message_test.rb
331
- - test/unit/message/lookup_message_test.rb
332
- - test/unit/message/lua_aggregate_message_test.rb
333
- - test/unit/message/multi_message_test.rb
334
- - test/unit/message/next_action_message_test.rb
335
- - test/unit/message/ping_message_test.rb
336
- - test/unit/message_test.rb
337
- - test/unit/query/after_test.rb
338
- - test/unit/query/on_test.rb
339
- - test/unit/query/selection_test.rb
340
- - test/unit/query_test.rb
341
- - test/unit/skydb_test.rb
342
- - bin/sky
343
114
  homepage: http://github.com/skydb/sky.rb
344
115
  licenses: []
116
+ metadata: {}
345
117
  post_install_message:
346
118
  rdoc_options: []
347
119
  require_paths:
348
120
  - lib
349
121
  required_ruby_version: !ruby/object:Gem::Requirement
350
- none: false
351
122
  requirements:
352
123
  - - ! '>='
353
124
  - !ruby/object:Gem::Version
354
125
  version: '0'
355
- segments:
356
- - 0
357
- hash: -3253768369424236185
358
126
  required_rubygems_version: !ruby/object:Gem::Requirement
359
- none: false
360
127
  requirements:
361
128
  - - ! '>='
362
129
  - !ruby/object:Gem::Version
363
130
  version: '0'
364
- segments:
365
- - 0
366
- hash: -3253768369424236185
367
131
  requirements: []
368
132
  rubyforge_project:
369
- rubygems_version: 1.8.25
133
+ rubygems_version: 2.0.3
370
134
  signing_key:
371
- specification_version: 3
135
+ specification_version: 4
372
136
  summary: A Ruby client for the Sky database
373
137
  test_files:
374
- - test/integration/query_test.rb
138
+ - test/integration/client_test.rb
375
139
  - test/test_helper.rb
376
140
  - test/unit/client_test.rb
377
- - test/unit/event_test.rb
378
- - test/unit/import/importer_test.rb
379
- - test/unit/import/translator_test.rb
380
- - test/unit/message/add_action_message_test.rb
381
- - test/unit/message/add_event_message_test.rb
382
- - test/unit/message/add_property_message_test.rb
383
- - test/unit/message/create_table_message_test.rb
384
- - test/unit/message/delete_table_message_test.rb
385
- - test/unit/message/get_action_message_test.rb
386
- - test/unit/message/get_actions_message_test.rb
387
- - test/unit/message/get_properties_message_test.rb
388
- - test/unit/message/get_property_message_test.rb
389
- - test/unit/message/get_table_message_test.rb
390
- - test/unit/message/get_tables_message_test.rb
391
- - test/unit/message/lookup_message_test.rb
392
- - test/unit/message/lua_aggregate_message_test.rb
393
- - test/unit/message/multi_message_test.rb
394
- - test/unit/message/next_action_message_test.rb
395
- - test/unit/message/ping_message_test.rb
396
- - test/unit/message_test.rb
397
- - test/unit/query/after_test.rb
398
- - test/unit/query/on_test.rb
399
- - test/unit/query/selection_test.rb
400
- - test/unit/query_test.rb
401
- - test/unit/skydb_test.rb