Skip to content

Conversation

@voxik
Copy link
Owner

@voxik voxik commented Aug 1, 2025

Use custom UtilLinuxLogger instead syslog

syslog used to be part of StdLib. But beginning with Ruby 3.4, it was extracted into default gems. This is problematic when Ruby is executed with --disable-gems, because there is no easy way to require syslog.

Therefore, this commit introduces custom UtilLinuxLogger. This use logger command from util-linux and implemnts just minimal Syslog interface required.

While this could have been used just as a fallback, when syslog can't be required, it will be easier to use it every time.

Fixes #12

voxik added 2 commits August 1, 2025 13:22
Ruby 3.4 started use singlequote instead of opening backtick in the
error messages [[1]]. This exhibited in error:

~~~
 2) ABRT handles exception in 'abrt.rb' with RubyGems enabled
     Failure/Error:
       expect { system "ruby --disable-gems -rrubygems #{abrt_rb}" }
         .to output(/\A\Z/).to_stdout_from_any_process
         .and output(output_message_pattern).to_stderr_from_any_process

       expected block to output /\A\/mnt\/abrt\/spec\/..\/lib\/abrt.rb:\d+:in `<main>': can't modify frozen Array(: \[1, 2, 3\])? \((FrozenError|RuntimeError)\)\n\Z/ to stderr, but output "/mnt/abrt/spec/../lib/abrt.rb:15:in '<main>': can't modify frozen Array: [1, 2, 3] (FrozenError)\n"
       Diff for (output /\A\/mnt\/abrt\/spec\/..\/lib\/abrt.rb:\d+:in `<main>':...):
       @@ -1 +1 @@
       -/\A\/mnt\/abrt\/spec\/..\/lib\/abrt.rb:\d+:in `<main>': can't modify frozen Array(: \[1, 2, 3\])? \((FrozenError|RuntimeError)\)\n\Z/
       +/mnt/abrt/spec/../lib/abrt.rb:15:in '<main>': can't modify frozen Array: [1, 2, 3] (FrozenError)

     # ./spec/abrt_spec.rb:16:in 'block (3 levels) in <top (required)>'
~~~

[1]: https://bugs.ruby-lang.org/issues/16495
`syslog` used to be part of StdLib. But beginning with  Ruby 3.4, it was
extracted into default gems. This is problematic when Ruby is executed
with `--disable-gems`, because there is no easy way to require `syslog`.

Therefore, this commit introduces custom `UtilLinuxLogger`. This use
`logger` command from util-linux and implemnts just minimal `Syslog`
interface required.

While this could have been used just as a fallback, when `syslog` can't
be required, it will be easier to use it every time.

Fixes #12
@voxik
Copy link
Owner Author

voxik commented Aug 1, 2025

Obsolete by #15

@voxik voxik closed this Aug 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add dependency on syslog for Ruby 3.4 compatibility

2 participants