downpour 0.0.5 → 0.0.6
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/README.rdoc +6 -5
- data/ext/downpour/connection.c +7 -9
- data/ext/downpour/downpour.h +10 -0
- data/ext/downpour/memory_allocation.c +10 -0
- data/ext/downpour/query.c +2 -1
- data/ext/downpour/result.c +23 -21
- data/ext/downpour/status.c +49 -36
- data/lib/downpour.rb +1 -0
- data/lib/downpour/status.rb +25 -0
- data/lib/downpour/version.rb +1 -1
- data/spec/downpour/concurrent_spec.rb +37 -16
- data/spec/downpour/connect_type_spec.rb +27 -4
- data/spec/downpour/connection_spec.rb +1 -1
- data/spec/downpour/insert_spec.rb +4 -0
- data/spec/downpour/memory_mgmt_spec.rb +14 -0
- data/spec/spec_helper.rb +1 -1
- metadata +41 -41
data/README.rdoc
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
Downpour is a gem to connect and query a Drizzle or MySql database using the libdrizzle library.
|
4
4
|
|
5
|
-
==
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
== TODO
|
6
|
+
* Do not maintain a list of pending queries and connections in ruby. Mark and sweep. Is this a good idea
|
7
|
+
* Actually honor some options passed in to drizzle_con_create
|
8
|
+
* Get column info and do stuff
|
9
|
+
* Create a rails plugin
|
10
|
+
* Result, Column does not have a context. Memory Leak?
|
data/ext/downpour/connection.c
CHANGED
@@ -1,24 +1,20 @@
|
|
1
1
|
#include "downpour.h"
|
2
2
|
|
3
3
|
#define SELF_TYPE drizzle_con_st
|
4
|
+
#define RUBY_CLASS DrizzleConnection
|
5
|
+
|
4
6
|
#define attr(foo, conversion) static VALUE attr_##foo(VALUE self)\
|
5
7
|
{\
|
6
8
|
read_self_ptr();\
|
7
9
|
return conversion(drizzle_con_##foo(self_ptr));\
|
8
10
|
}
|
9
|
-
#define
|
11
|
+
#define settr_string(foo) static VALUE settr_##foo(VALUE self, VALUE newValue)\
|
10
12
|
{\
|
11
13
|
read_self_ptr();\
|
12
14
|
Check_Type(newValue, T_STRING);\
|
13
15
|
drizzle_con_set_##foo(self_ptr, RSTRING_PTR(newValue));\
|
14
16
|
return newValue;\
|
15
17
|
}
|
16
|
-
#define attr_string(foo) attr(foo, rb_str_new2)
|
17
|
-
#define prop(foo) attr_string(foo) settr(foo)
|
18
|
-
|
19
|
-
#define define_attr(foo) rb_define_method(DrizzleConnection, #foo, attr_##foo, 0)
|
20
|
-
#define define_settr(foo) rb_define_method(DrizzleConnection, #foo "=", settr_##foo, 1)
|
21
|
-
#define define_prop(foo) define_attr(foo); define_settr(foo)
|
22
18
|
|
23
19
|
static VALUE query(VALUE self, VALUE query)
|
24
20
|
{
|
@@ -41,16 +37,17 @@ static VALUE connection_close(VALUE self)
|
|
41
37
|
return Qnil;
|
42
38
|
}
|
43
39
|
|
40
|
+
attr(options, INT2NUM);
|
44
41
|
attr_string(error);
|
45
42
|
attr(errno, INT2NUM);
|
46
43
|
attr(error_code, UINT2NUM);
|
47
44
|
attr_string(sqlstate);
|
48
45
|
attr_string(host);
|
49
46
|
attr(port, UINT2NUM);
|
50
|
-
|
47
|
+
prop_string(uds);
|
51
48
|
attr_string(user);
|
52
49
|
attr_string(password);
|
53
|
-
|
50
|
+
prop_string(db);
|
54
51
|
attr(protocol_version, UINT2NUM);
|
55
52
|
attr_string(server_version);
|
56
53
|
attr(server_version_number, UINT2NUM);
|
@@ -66,6 +63,7 @@ void init_drizzle_connection()
|
|
66
63
|
{
|
67
64
|
DrizzleConnection = drizzle_gem_create_class_with_private_constructor("Connection", rb_cObject);
|
68
65
|
rb_define_method(DrizzleConnection, "query", query, 1);
|
66
|
+
define_attr(options);
|
69
67
|
define_attr(error);
|
70
68
|
define_attr(errno);
|
71
69
|
define_attr(error_code);
|
data/ext/downpour/downpour.h
CHANGED
@@ -17,6 +17,7 @@ typedef void (*SET_CONTEXT)(void* ptr, void *context);
|
|
17
17
|
void *downpour_from_ruby_object(VALUE value);
|
18
18
|
VALUE downpour_to_ruby_object(void *ptr, VALUE klass, VALUE parent, FREE_METHOD free_method, SET_CONTEXT set_context);
|
19
19
|
VALUE downpour_get_ruby_object(void *ptr);
|
20
|
+
VALUE downpour_get_parent(VALUE self);
|
20
21
|
|
21
22
|
// All Constructors
|
22
23
|
VALUE downpour_constructor(drizzle_st *self_ptr);
|
@@ -37,4 +38,13 @@ const char *drizzle_gem_read_string_with_default(VALUE string, const char *defau
|
|
37
38
|
#define drizzle_alloc(type) ((type *) malloc(sizeof(type)))
|
38
39
|
#define to_ruby_object(ptr, klass, parent, free_method, set_context) downpour_to_ruby_object(ptr, klass, parent, (FREE_METHOD) (free_method), (SET_CONTEXT) (set_context))
|
39
40
|
|
41
|
+
// Property Macros -> define attr(foo, conversion) and settr_string to use them
|
42
|
+
#define attr_string(foo) attr(foo, rb_str_new2)
|
43
|
+
#define prop_string(foo) attr_string(foo) settr_string(foo)
|
44
|
+
#define prop_int(foo, conversion) attr(foo, conversion) settr_int(foo)
|
45
|
+
|
46
|
+
#define define_attr(foo) rb_define_method(RUBY_CLASS, #foo, attr_##foo, 0)
|
47
|
+
#define define_settr(foo) rb_define_method(RUBY_CLASS, #foo "=", settr_##foo, 1)
|
48
|
+
#define define_prop(foo) define_attr(foo); define_settr(foo)
|
49
|
+
|
40
50
|
#endif
|
@@ -91,3 +91,13 @@ VALUE downpour_to_ruby_object(void *ptr, VALUE klass, VALUE parent, FREE_METHOD
|
|
91
91
|
|
92
92
|
return wrapper->rb_object = Data_Wrap_Struct(klass, mark_for_ruby_gc, downpour_release, wrapper);
|
93
93
|
}
|
94
|
+
|
95
|
+
VALUE downpour_get_parent(VALUE self)
|
96
|
+
{
|
97
|
+
DownpourWrapper *wrapper = get_wrapper_from_object(self);
|
98
|
+
|
99
|
+
if(wrapper == NULL || wrapper->parent == NULL)
|
100
|
+
return Qnil;
|
101
|
+
|
102
|
+
return wrapper->parent->rb_object;
|
103
|
+
}
|
data/ext/downpour/query.c
CHANGED
@@ -11,7 +11,8 @@ static VALUE get_result(VALUE self)
|
|
11
11
|
return cached_result;
|
12
12
|
|
13
13
|
drizzle_result_st *result = drizzle_query_result(self_ptr);
|
14
|
-
VALUE
|
14
|
+
VALUE connection = downpour_get_parent(self);
|
15
|
+
VALUE ret = rb_iv_set(self, "@result", downpour_result_constructor(result, connection));
|
15
16
|
return ret;
|
16
17
|
}
|
17
18
|
|
data/ext/downpour/result.c
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
#include "downpour.h"
|
2
2
|
|
3
3
|
#define SELF_TYPE drizzle_result_st
|
4
|
+
#define RUBY_CLASS DrizzleResult
|
5
|
+
|
6
|
+
#define attr(foo, conversion) static VALUE attr_##foo(VALUE self)\
|
7
|
+
{\
|
8
|
+
read_self_ptr();\
|
9
|
+
return conversion(drizzle_result_##foo(self_ptr));\
|
10
|
+
}
|
4
11
|
|
5
12
|
static uint64_t do_column_count(drizzle_result_st *self_ptr)
|
6
13
|
{
|
@@ -87,24 +94,14 @@ static VALUE next_row(VALUE self)
|
|
87
94
|
return next_row_unbuffered(self_ptr);
|
88
95
|
}
|
89
96
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
read_self_ptr();
|
99
|
-
|
100
|
-
return UINT2NUM(drizzle_result_insert_id(self_ptr));
|
101
|
-
}
|
102
|
-
|
103
|
-
static VALUE error_code(VALUE self)
|
104
|
-
{
|
105
|
-
read_self_ptr();
|
106
|
-
return UINT2NUM(drizzle_result_error_code(self_ptr));
|
107
|
-
}
|
97
|
+
attr(column_count, UINT2NUM);
|
98
|
+
attr(insert_id, UINT2NUM);
|
99
|
+
attr(error_code, UINT2NUM);
|
100
|
+
attr(affected_rows, UINT2NUM);
|
101
|
+
attr(warning_count, UINT2NUM);
|
102
|
+
attr_string(sqlstate);
|
103
|
+
attr_string(info);
|
104
|
+
attr_string(error);
|
108
105
|
|
109
106
|
VALUE downpour_result_constructor(drizzle_result_st *self_ptr, VALUE connection)
|
110
107
|
{
|
@@ -115,10 +112,15 @@ void init_drizzle_result()
|
|
115
112
|
{
|
116
113
|
DrizzleResult = drizzle_gem_create_class_with_private_constructor("Result", rb_cObject);
|
117
114
|
rb_define_method(DrizzleResult, "row_count", row_count, 0);
|
118
|
-
rb_define_method(DrizzleResult, "column_count", column_count, 0);
|
119
115
|
rb_define_method(DrizzleResult, "buffer!", buffer_if_needed, 0);
|
120
116
|
rb_define_method(DrizzleResult, "buffered?", is_buffered, 0);
|
121
117
|
rb_define_method(DrizzleResult, "next_row", next_row, 0);
|
122
|
-
|
123
|
-
|
118
|
+
define_attr(column_count);
|
119
|
+
define_attr(insert_id);
|
120
|
+
define_attr(error_code);
|
121
|
+
define_attr(affected_rows);
|
122
|
+
define_attr(warning_count);
|
123
|
+
define_attr(sqlstate);
|
124
|
+
define_attr(info);
|
125
|
+
define_attr(error);
|
124
126
|
}
|
data/ext/downpour/status.c
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
#include "downpour.h"
|
2
2
|
|
3
3
|
#define SELF_TYPE drizzle_st
|
4
|
+
#define RUBY_CLASS DrizzleStatus
|
4
5
|
|
5
|
-
static
|
6
|
+
#define attr(foo, conversion) static VALUE attr_##foo(VALUE self)\
|
7
|
+
{\
|
8
|
+
read_self_ptr();\
|
9
|
+
return conversion(drizzle_##foo(self_ptr));\
|
10
|
+
}
|
11
|
+
|
12
|
+
#define settr_int(foo) static VALUE settr_##foo(VALUE self, VALUE newValue)\
|
13
|
+
{\
|
14
|
+
read_self_ptr();\
|
15
|
+
drizzle_set_##foo(self_ptr, NUM2INT(newValue));\
|
16
|
+
return newValue;\
|
17
|
+
}
|
18
|
+
|
19
|
+
static in_port_t get_port(VALUE port, in_port_t default_port)
|
6
20
|
{
|
7
21
|
if(port == Qnil)
|
8
|
-
return
|
22
|
+
return default_port;
|
9
23
|
Check_Type(port, T_FIXNUM);
|
10
24
|
return NUM2UINT(port);
|
11
25
|
}
|
12
26
|
|
13
|
-
static VALUE
|
27
|
+
static VALUE add_tcp_connection_with_defaults(int argc, VALUE *argv, VALUE self, in_port_t default_port, drizzle_con_options_t default_options)
|
14
28
|
{
|
15
29
|
read_self_ptr();
|
16
30
|
|
@@ -21,43 +35,22 @@ static VALUE add_tcp_connection(int argc, VALUE *argv, VALUE self)
|
|
21
35
|
|
22
36
|
drizzle_con_st *connection = drizzle_con_add_tcp(self_ptr, NULL,
|
23
37
|
read_string(host, "localhost"),
|
24
|
-
get_port(port),
|
38
|
+
get_port(port, default_port),
|
25
39
|
read_string(user, ""),
|
26
40
|
read_string(passwd, ""),
|
27
41
|
read_string(db, "test"),
|
28
|
-
|
42
|
+
default_options);
|
29
43
|
return downpour_connection_constructor(connection, self);
|
30
44
|
}
|
31
45
|
|
32
|
-
static VALUE
|
33
|
-
{
|
34
|
-
read_self_ptr();
|
35
|
-
|
36
|
-
return rb_str_new2(drizzle_error(self_ptr));
|
37
|
-
}
|
38
|
-
|
39
|
-
static VALUE set_verbose(VALUE self, VALUE newVerbocity)
|
40
|
-
{
|
41
|
-
read_self_ptr();
|
42
|
-
|
43
|
-
int verbocity = NUM2INT(newVerbocity);
|
44
|
-
drizzle_set_verbose(self_ptr, verbocity);
|
45
|
-
|
46
|
-
return newVerbocity;
|
47
|
-
}
|
48
|
-
|
49
|
-
static VALUE get_verbose(VALUE self)
|
46
|
+
static VALUE add_tcp_connection(int argc, VALUE *argv, VALUE self)
|
50
47
|
{
|
51
|
-
|
52
|
-
|
53
|
-
return UINT2NUM(drizzle_verbose(self_ptr));
|
48
|
+
return add_tcp_connection_with_defaults(argc, argv, self, DRIZZLE_DEFAULT_TCP_PORT, DRIZZLE_CON_NONE);
|
54
49
|
}
|
55
50
|
|
56
|
-
static VALUE
|
51
|
+
static VALUE add_mysql_tcp_connection(int argc, VALUE *argv, VALUE self)
|
57
52
|
{
|
58
|
-
|
59
|
-
|
60
|
-
return rb_str_new2(drizzle_verbose_name(drizzle_verbose(self_ptr)));
|
53
|
+
return add_tcp_connection_with_defaults(argc, argv, self, 3306, DRIZZLE_CON_MYSQL);
|
61
54
|
}
|
62
55
|
|
63
56
|
static VALUE add_query(VALUE self, VALUE connection, VALUE query)
|
@@ -92,6 +85,21 @@ static VALUE run_one(VALUE self)
|
|
92
85
|
return downpour_get_ruby_object(drizzle_query_context(query));
|
93
86
|
}
|
94
87
|
|
88
|
+
static VALUE verbose_name(VALUE self)
|
89
|
+
{
|
90
|
+
read_self_ptr();
|
91
|
+
|
92
|
+
return rb_str_new2(drizzle_verbose_name(drizzle_verbose(self_ptr)));
|
93
|
+
}
|
94
|
+
|
95
|
+
attr_string(error);
|
96
|
+
attr(errno, INT2NUM);
|
97
|
+
attr(error_code, INT2NUM);
|
98
|
+
attr_string(sqlstate);
|
99
|
+
attr(options, UINT2NUM);
|
100
|
+
prop_int(timeout, INT2NUM);
|
101
|
+
prop_int(verbose, UINT2NUM);
|
102
|
+
|
95
103
|
VALUE downpour_constructor(drizzle_st *self_ptr)
|
96
104
|
{
|
97
105
|
return to_ruby_object(self_ptr, DrizzleStatus, Qnil, drizzle_free, drizzle_set_context);
|
@@ -101,11 +109,16 @@ void init_drizzle_status()
|
|
101
109
|
{
|
102
110
|
DrizzleStatus = drizzle_gem_create_class_with_private_constructor("Status", rb_cObject);
|
103
111
|
rb_define_method(DrizzleStatus, "add_tcp_connection", add_tcp_connection, -1);
|
104
|
-
rb_define_method(DrizzleStatus, "
|
105
|
-
rb_define_method(DrizzleStatus, "verbose=", set_verbose, 1);
|
106
|
-
rb_define_method(DrizzleStatus, "verbose", get_verbose, 0);
|
112
|
+
rb_define_method(DrizzleStatus, "add_mysql_tcp_connection", add_mysql_tcp_connection, -1);
|
107
113
|
rb_define_method(DrizzleStatus, "verbose_name", verbose_name, 0);
|
108
|
-
|
109
|
-
|
110
|
-
|
114
|
+
rb_define_private_method(DrizzleStatus, "_add_query", add_query, 2);
|
115
|
+
rb_define_private_method(DrizzleStatus, "_run_all!", run_all, 0);
|
116
|
+
rb_define_private_method(DrizzleStatus, "_run!", run_one, 0);
|
117
|
+
define_attr(error);
|
118
|
+
define_attr(errno);
|
119
|
+
define_attr(error_code);
|
120
|
+
define_attr(sqlstate);
|
121
|
+
define_attr(options);
|
122
|
+
define_prop(timeout);
|
123
|
+
define_prop(verbose);
|
111
124
|
}
|
data/lib/downpour.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Downpour
|
2
|
+
class Status
|
3
|
+
def add_query(connection, query)
|
4
|
+
new_query = _add_query(connection, query)
|
5
|
+
pending_queries << new_query
|
6
|
+
new_query
|
7
|
+
end
|
8
|
+
|
9
|
+
def run!
|
10
|
+
pending_queries.delete(_run!)
|
11
|
+
end
|
12
|
+
|
13
|
+
def run_all!
|
14
|
+
_run_all!
|
15
|
+
pending_queries.clear
|
16
|
+
end
|
17
|
+
|
18
|
+
def pending_queries
|
19
|
+
if(@pending_queries == nil)
|
20
|
+
@pending_queries = []
|
21
|
+
end
|
22
|
+
@pending_queries
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/downpour/version.rb
CHANGED
@@ -8,24 +8,45 @@ describe "a concurrent query" do
|
|
8
8
|
@query2 = @status.add_query(@conn2, "select name from Test1 where name like '%ar'");
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
context "when running all" do
|
12
|
+
it "should buffer all queries" do
|
13
|
+
@status.run_all!
|
14
|
+
@query1.result.should be_buffered
|
15
|
+
@query2.result.should be_buffered
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should run all queries" do
|
19
|
+
@status.run_all!
|
20
|
+
@query1.result.next_row.should == ["foo"]
|
21
|
+
@query2.result.next_row.should == ["bar"]
|
22
|
+
end
|
16
23
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
it "should clear all pending queries" do
|
25
|
+
@status.pending_queries.size.should == 2
|
26
|
+
@status.run_all!
|
27
|
+
@status.pending_queries.should be_empty
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
31
|
+
context "when executing one at a time" do
|
32
|
+
it "should run all queries" do
|
33
|
+
rows = []
|
34
|
+
rows << @status.run!.result.next_row
|
35
|
+
rows << @status.run!.result.next_row
|
36
|
+
rows.should include(["foo"])
|
37
|
+
rows.should include(["bar"])
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return nil after all queries are executed" do
|
41
|
+
@status.run!
|
42
|
+
@status.run!
|
43
|
+
@status.run!.should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should release pending queries" do
|
47
|
+
query = @status.run!
|
48
|
+
@status.pending_queries.should_not include(query)
|
49
|
+
@status.pending_queries.size.should == 1
|
50
|
+
end
|
30
51
|
end
|
31
52
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
describe "
|
1
|
+
describe "downpour connections" do
|
2
2
|
|
3
3
|
before(:each) do
|
4
4
|
@status = Downpour.create
|
@@ -26,10 +26,33 @@ describe "Downpour connections" do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
context "over drizzle tcp protocol" do
|
29
|
-
|
30
|
-
|
29
|
+
it "should have default port set" do
|
30
|
+
connection = @status.add_tcp_connection('localhost', @user, @password, @database)
|
31
|
+
connection.port.should == 4427
|
31
32
|
end
|
32
33
|
|
33
|
-
|
34
|
+
context "connection sanity" do
|
35
|
+
before(:each) do
|
36
|
+
@connection = @status.add_tcp_connection('localhost', @user, @password, @database)
|
37
|
+
end
|
38
|
+
|
39
|
+
it_should_behave_like "a working downpour connection"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "over mysql tcp protocol" do
|
44
|
+
it "should have default port set" do
|
45
|
+
connection = @status.add_mysql_tcp_connection('localhost', @user, @password, @database)
|
46
|
+
connection.port.should == 3306
|
47
|
+
end
|
48
|
+
|
49
|
+
context "connection sanity" do
|
50
|
+
before(:each) do
|
51
|
+
# connect to drizzle over a mysql db
|
52
|
+
@connection = @status.add_mysql_tcp_connection('localhost', @user, @password, @database, 4427)
|
53
|
+
end
|
54
|
+
|
55
|
+
it_should_behave_like "a working downpour connection"
|
56
|
+
end
|
34
57
|
end
|
35
58
|
end
|
@@ -16,4 +16,8 @@ describe "an insert query" do
|
|
16
16
|
it "should get id after inserting" do
|
17
17
|
@conn.query("insert into Test2 (name) values ('foo')").insert_id.should == count_of_test2
|
18
18
|
end
|
19
|
+
|
20
|
+
it "should get count of affected rows" do
|
21
|
+
@conn.query("insert into Test2 (name) values ('foo')").affected_rows.should == 1
|
22
|
+
end
|
19
23
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
describe Downpour do
|
2
|
+
|
3
|
+
before(:each) do
|
4
|
+
@status = Downpour.create
|
5
|
+
@conn = create_connection(@status)
|
6
|
+
@query = @status.add_query(@conn, "select * from Test1 where name like '%oo'");
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should not allow query to gc before running" do
|
10
|
+
@query = nil
|
11
|
+
GC.start
|
12
|
+
@status.run!.result.next_row.should include("foo")
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,48 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: downpour
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Tejas Dinkar
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-06-02 00:00:00 +05:30
|
12
|
+
date: 2011-06-03 00:00:00.000000000 +00:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: rake-compiler
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &18332580 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
21
|
+
- !ruby/object:Gem::Version
|
24
22
|
version: 0.7.1
|
25
23
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *18332580
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &18330100 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
36
34
|
type: :development
|
37
|
-
|
38
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *18330100
|
37
|
+
description: A simple, fast Mysql and Drizzle library for Ruby, binding to libdrizzle.
|
38
|
+
Still in early alpha
|
39
39
|
email: tejas@gja.in
|
40
40
|
executables: []
|
41
|
-
|
42
|
-
extensions:
|
41
|
+
extensions:
|
43
42
|
- ext/downpour/extconf.rb
|
44
|
-
extra_rdoc_files:
|
43
|
+
extra_rdoc_files:
|
45
44
|
- README.rdoc
|
46
|
-
files:
|
45
|
+
files:
|
47
46
|
- downpour.gemspec
|
48
47
|
- ext/downpour/connection.c
|
49
48
|
- ext/downpour/downpour.c
|
@@ -56,12 +55,14 @@ files:
|
|
56
55
|
- ext/downpour/result.c
|
57
56
|
- ext/downpour/status.c
|
58
57
|
- lib/downpour.rb
|
58
|
+
- lib/downpour/status.rb
|
59
59
|
- lib/downpour/version.rb
|
60
60
|
- spec/bootstrap.sql
|
61
61
|
- spec/downpour/concurrent_spec.rb
|
62
62
|
- spec/downpour/connect_type_spec.rb
|
63
63
|
- spec/downpour/connection_spec.rb
|
64
64
|
- spec/downpour/insert_spec.rb
|
65
|
+
- spec/downpour/memory_mgmt_spec.rb
|
65
66
|
- spec/downpour/module_spec.rb
|
66
67
|
- spec/downpour/select_spec.rb
|
67
68
|
- spec/spec_helper.rb
|
@@ -69,38 +70,37 @@ files:
|
|
69
70
|
has_rdoc: true
|
70
71
|
homepage: http://github.com/gja/downpour
|
71
72
|
licenses: []
|
72
|
-
|
73
73
|
post_install_message:
|
74
|
-
rdoc_options:
|
74
|
+
rdoc_options:
|
75
75
|
- --charset=UTF-8
|
76
|
-
require_paths:
|
76
|
+
require_paths:
|
77
77
|
- lib
|
78
78
|
- ext
|
79
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
80
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version:
|
85
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
91
|
requirements: []
|
92
|
-
|
93
92
|
rubyforge_project:
|
94
93
|
rubygems_version: 1.6.2
|
95
94
|
signing_key:
|
96
95
|
specification_version: 3
|
97
96
|
summary: A simple, fast Mysql and Drizzle library for Ruby, binding to libdrizzle
|
98
|
-
test_files:
|
97
|
+
test_files:
|
99
98
|
- spec/bootstrap.sql
|
100
99
|
- spec/downpour/concurrent_spec.rb
|
101
100
|
- spec/downpour/connect_type_spec.rb
|
102
101
|
- spec/downpour/connection_spec.rb
|
103
102
|
- spec/downpour/insert_spec.rb
|
103
|
+
- spec/downpour/memory_mgmt_spec.rb
|
104
104
|
- spec/downpour/module_spec.rb
|
105
105
|
- spec/downpour/select_spec.rb
|
106
106
|
- spec/spec_helper.rb
|