swift 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/ext/swift.cc +6 -3
  3. data/swift.gemspec +1 -1
  4. data/test/test_io.rb +8 -4
  5. metadata +2 -2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.4.2
@@ -13,6 +13,7 @@ static VALUE cResultSet;
13
13
  static VALUE cPool;
14
14
  static VALUE cRequest;
15
15
  static VALUE cBigDecimal;
16
+ static VALUE cStringIO;
16
17
 
17
18
  static VALUE eRuntimeError;
18
19
  static VALUE eArgumentError;
@@ -118,7 +119,7 @@ void static inline rb_extract_bind_params(int argc, VALUE* argv, std::vector<dbi
118
119
  VALUE arg = argv[i];
119
120
  if (arg == Qnil)
120
121
  bind.push_back(dbi::PARAM(dbi::null()));
121
- else if (rb_obj_is_kind_of(arg, rb_cIO) == Qtrue) {
122
+ else if (rb_obj_is_kind_of(arg, rb_cIO) == Qtrue || rb_obj_is_kind_of(arg, cStringIO) == Qtrue) {
122
123
  arg = rb_funcall(arg, fRead, 0);
123
124
  bind.push_back(dbi::PARAM_BINARY((unsigned char*)RSTRING_PTR(arg), RSTRING_LEN(arg)));
124
125
  }
@@ -429,7 +430,7 @@ VALUE rb_field_typecast(VALUE adapter, int type, const char *data, ulong len) {
429
430
  case DBI_TYPE_INT:
430
431
  return rb_cstr2inum(data, 10);
431
432
  case DBI_TYPE_BLOB:
432
- return rb_str_new(data, len);
433
+ return rb_funcall(cStringIO, fNew, 1, rb_str_new(data, len));
433
434
  // forcing UTF8 convention here - do we really care about people using non utf8
434
435
  // client encodings and databases ?
435
436
  case DBI_TYPE_TEXT:
@@ -644,7 +645,7 @@ VALUE rb_cpool_execute(int argc, VALUE *argv, VALUE self) {
644
645
  VALUE arg = rb_ary_entry(args, n);
645
646
  if (arg == Qnil)
646
647
  bind.push_back(dbi::PARAM(dbi::null()));
647
- else if (rb_obj_is_kind_of(arg, rb_cIO) == Qtrue) {
648
+ else if (rb_obj_is_kind_of(arg, rb_cIO) == Qtrue || rb_obj_is_kind_of(arg, cStringIO) == Qtrue) {
648
649
  arg = rb_funcall(arg, fRead, 0);
649
650
  bind.push_back(dbi::PARAM_BINARY((unsigned char*)RSTRING_PTR(arg), RSTRING_LEN(arg)));
650
651
  }
@@ -686,6 +687,7 @@ VALUE rb_request_process(VALUE self) {
686
687
  extern "C" {
687
688
  void Init_swift(void) {
688
689
  rb_require("bigdecimal");
690
+ rb_require("stringio");
689
691
 
690
692
  fNew = rb_intern("new");
691
693
  fStringify = rb_intern("to_s");
@@ -697,6 +699,7 @@ extern "C" {
697
699
  eArgumentError = CONST_GET(rb_mKernel, "ArgumentError");
698
700
  eStandardError = CONST_GET(rb_mKernel, "StandardError");
699
701
  cBigDecimal = CONST_GET(rb_mKernel, "BigDecimal");
702
+ cStringIO = CONST_GET(rb_mKernel, "StringIO");
700
703
  eConnectionError = rb_define_class("ConnectionError", eRuntimeError);
701
704
 
702
705
  mSwift = rb_define_module("Swift");
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{swift}
8
- s.version = "0.4.1"
8
+ s.version = "0.4.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Shane Hanna", "Bharanee 'Barney' Rathna"]
@@ -14,12 +14,16 @@ describe 'Adapter' do
14
14
  it 'stores and retrieves an image' do
15
15
  Swift.db do |db|
16
16
  io = File.open(File.dirname(__FILE__) + '/house-explode.jpg')
17
- db.prepare("insert into users (name, image) values(?, ?)").execute('test', io)
18
- value = db.prepare("select image from users limit 1").execute.first[:image]
17
+ db.prepare('insert into users (name, image) values(?, ?)').execute('test', io)
18
+
19
+ blob = db.prepare('select image from users limit 1').execute.first[:image]
19
20
 
20
21
  io.rewind
21
- assert_equal Encoding::ASCII_8BIT, value.encoding
22
- assert_equal io.read.force_encoding("ASCII-8BIT"), value
22
+ assert_kind_of StringIO, blob
23
+
24
+ data = blob.read
25
+ assert_equal Encoding::ASCII_8BIT, data.encoding
26
+ assert_equal io.read.force_encoding('ASCII-8BIT'), data
23
27
  end
24
28
  end
25
29
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 1
9
- version: 0.4.1
8
+ - 2
9
+ version: 0.4.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Shane Hanna