Ruby: added stream IO "close" required by Rack specification.

This closes #654 issue on Github.
This commit is contained in:
Zhidao HONG
2022-05-13 19:33:40 +08:00
parent 1fe389c2e2
commit 5883a2670f
2 changed files with 16 additions and 0 deletions

View File

@@ -49,6 +49,12 @@ compatibility with GCC 12.
</para> </para>
</change> </change>
<change type="bugfix">
<para>
Ruby Sinatra applications don't work without custom logging.
</para>
</change>
<change type="bugfix"> <change type="bugfix">
<para> <para>
the controller process could crash when a chain with more than 4 the controller process could crash when a chain with more than 4

View File

@@ -18,6 +18,7 @@ static VALUE nxt_ruby_stream_io_puts(VALUE obj, VALUE args);
static VALUE nxt_ruby_stream_io_write(VALUE obj, VALUE args); static VALUE nxt_ruby_stream_io_write(VALUE obj, VALUE args);
nxt_inline long nxt_ruby_stream_io_s_write(nxt_ruby_ctx_t *rctx, VALUE val); nxt_inline long nxt_ruby_stream_io_s_write(nxt_ruby_ctx_t *rctx, VALUE val);
static VALUE nxt_ruby_stream_io_flush(VALUE obj); static VALUE nxt_ruby_stream_io_flush(VALUE obj);
static VALUE nxt_ruby_stream_io_close(VALUE obj);
VALUE VALUE
@@ -38,6 +39,7 @@ nxt_ruby_stream_io_input_init(void)
rb_define_method(stream_io, "each", nxt_ruby_stream_io_each, 0); rb_define_method(stream_io, "each", nxt_ruby_stream_io_each, 0);
rb_define_method(stream_io, "read", nxt_ruby_stream_io_read, -2); rb_define_method(stream_io, "read", nxt_ruby_stream_io_read, -2);
rb_define_method(stream_io, "rewind", nxt_ruby_stream_io_rewind, 0); rb_define_method(stream_io, "rewind", nxt_ruby_stream_io_rewind, 0);
rb_define_method(stream_io, "close", nxt_ruby_stream_io_close, 0);
return stream_io; return stream_io;
} }
@@ -60,6 +62,7 @@ nxt_ruby_stream_io_error_init(void)
rb_define_method(stream_io, "puts", nxt_ruby_stream_io_puts, -2); rb_define_method(stream_io, "puts", nxt_ruby_stream_io_puts, -2);
rb_define_method(stream_io, "write", nxt_ruby_stream_io_write, -2); rb_define_method(stream_io, "write", nxt_ruby_stream_io_write, -2);
rb_define_method(stream_io, "flush", nxt_ruby_stream_io_flush, 0); rb_define_method(stream_io, "flush", nxt_ruby_stream_io_flush, 0);
rb_define_method(stream_io, "close", nxt_ruby_stream_io_close, 0);
return stream_io; return stream_io;
} }
@@ -257,3 +260,10 @@ nxt_ruby_stream_io_flush(VALUE obj)
{ {
return Qnil; return Qnil;
} }
static VALUE
nxt_ruby_stream_io_close(VALUE obj)
{
return Qnil;
}