oj 3.16.7 → 3.16.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71fccfc65816b5412064b2295b66c038029cbea37dcae9475002753850d47740
4
- data.tar.gz: f559a6cbe6ebce9443564d679ade4e527da6784d35c7a71bf7a85c4e2c0b2f75
3
+ metadata.gz: dd892ffebade1cd09db195de3776e8243b6cff9da4cb75ab57bc80c7b41d7adc
4
+ data.tar.gz: ba7345e84005d76de67001c6d42dd7be457b8ca62c35fd3f03ea90779d818d3f
5
5
  SHA512:
6
- metadata.gz: 5cc33a15e43c946351d281b65f1f692a9ad8b4055c3848f8f540f9b7f1043a1f4f8844b67ff17ffe072193d4a1922a596f4b941ee3a93c2f4eb4b52fedf191ec
7
- data.tar.gz: 1314ce1b2d92fe30dd971832a294ee2052ac1434a3f026fa534573c55488a60de3f2ff0f81bb1577c0dc8941c84c75e5a18ac8d79d2f86c9b52c56fc225a4eca
6
+ metadata.gz: 6bd02aae21bc2ccb6855a86ee68f3810caa76df4db695fb1d400e7c200813e4ed8f8244c88545ca16f8bf8c39063d5f38ac6f76afafdf655939868a683b66cb3
7
+ data.tar.gz: 939ffdbf9336eda7e261c8acbab50a55b868be7c3574daaa9520deae51e5bcf615759265cd0ad54886f7faf49634c31db7ae7523e18edb3c0632f43fc199841f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.16.8 - 2024-12-14
4
+
5
+ - Fixed StreamWriter to write to non-file IO thanks to @jscheid.
6
+
3
7
  ## 3.16.7 - 2024-11-01
4
8
 
5
9
  - Changed string_writer_as_json to allow multiple arguments.
@@ -42,7 +42,8 @@ static void stream_writer_write(StreamWriter sw) {
42
42
 
43
43
  switch (sw->type) {
44
44
  case STRING_IO:
45
- case STREAM_IO: {
45
+ case STREAM_IO:
46
+ case FILE_IO: {
46
47
  volatile VALUE rs = rb_str_new(sw->sw.out.buf, size);
47
48
 
48
49
  // Oddly enough, when pushing ASCII characters with UTF-8 encoding or
@@ -53,11 +54,6 @@ static void stream_writer_write(StreamWriter sw) {
53
54
  rb_funcall(sw->stream, oj_write_id, 1, rs);
54
55
  break;
55
56
  }
56
- case FILE_IO:
57
- if (size != write(sw->fd, sw->sw.out.buf, size)) {
58
- rb_raise(rb_eIOError, "Write failed. [_%d_:%s]\n", errno, strerror(errno));
59
- }
60
- break;
61
57
  default: rb_raise(rb_eArgError, "expected an IO Object.");
62
58
  }
63
59
  stream_writer_reset_buf(sw);
data/lib/oj/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Oj
2
2
  # Current version of the module.
3
- VERSION = '3.16.7'
3
+ VERSION = '3.16.8'
4
4
  end
data/test/test_writer.rb CHANGED
@@ -4,6 +4,7 @@
4
4
  $LOAD_PATH << __dir__
5
5
 
6
6
  require 'helper'
7
+ require 'open3'
7
8
 
8
9
  class OjWriter < Minitest::Test
9
10
 
@@ -377,4 +378,19 @@ class OjWriter < Minitest::Test
377
378
  w.pop()
378
379
  assert_equal(%|{"nothing":null}\n|, output.string())
379
380
  end
381
+
382
+ def test_stream_writer_subprocess
383
+ skip if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
384
+
385
+ Open3.popen3("/bin/bash", "-c", "cat > /dev/null") do |stdin, _stdout, _stderr, _wait_thr|
386
+ w = Oj::StreamWriter.new(stdin, :indent => 0)
387
+ w.push_array()
388
+ chunk = "{\"foo\":\"#{"bar"*1000}\"}"
389
+ 1000.times do |_|
390
+ w.push_json(chunk)
391
+ end
392
+ w.pop()
393
+ stdin.close
394
+ end
395
+ end
380
396
  end # OjWriter
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oj
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.16.7
4
+ version: 3.16.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Ohler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-01 00:00:00.000000000 Z
11
+ date: 2024-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal