systemd-journal 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 978a030e0e1fbf45c4d7cf8f597fb746c125d9ed
4
- data.tar.gz: b4ead8920befcd90d27351b7552128347e165a6a
3
+ metadata.gz: 17f43d104aba0ce7b017388964e8dc82a8552ad2
4
+ data.tar.gz: 22fa6ea7f4c044f1d1e27e81b388dc390ee02066
5
5
  SHA512:
6
- metadata.gz: 16629bfb3cf7f6d58894eeec4f2e977c6eeed09eca46c09669060b6f25c1cb10237a3f2aa03551b291e974e7ae6ee10e884b11ffc4069680a30a17c76b11f51d
7
- data.tar.gz: 45339d61c9c50b4eec0fcf36ac68d9cfe9feeacd8bb07f2d47f5c235b1d2e0f1bd64ce29a6118c6f226e1918d717a8b10285abc69816e56232f5c3227f8801ca
6
+ metadata.gz: 63fda69b863ca386c990331a565ff787b3b09ca3e14db6bfb3276bc0b291f726a2b0fb89d2d6431ea2147d86cbe548fd01f92cd91af255e5490cbcc30170969b
7
+ data.tar.gz: 3455916da4baede72a14514ee20702b4451b1391e746a5e0cbc7db087fefda64d8f29533e4b41585273a37e91f98a4e5638232afb1d97803876d36b6db3f69da
@@ -21,3 +21,5 @@ before_script:
21
21
  - cd /tmp/systemd/ && make && sudo make install
22
22
  - echo "done building in $(pwd), switching back to $PREV_DIR, library path is $LD_LIBRARY_PATH"
23
23
  - cd $PREV_DIR
24
+ - >
25
+ [ -f /etc/machine-id ] || cat /dev/urandom | tr -cd 'a-f0-9' | head -c 32 | awk '{ print $1 }' | sudo tee /etc/machine-id
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -9,7 +9,7 @@ Ruby bindings for reading from the systemd journal.
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'systemd-journal', '~> 1.1.0'
12
+ gem 'systemd-journal', '~> 1.2.0'
13
13
 
14
14
  And then execute:
15
15
 
@@ -22,7 +22,8 @@ thing.
22
22
 
23
23
  Obviously you will need to have
24
24
  [systemd](http://www.freedesktop.org/wiki/Software/systemd/) installed on your
25
- system in order to use the gem. Currently we support systemd 208 or higher.
25
+ system (specifically libsystemd or the older libsystemd-journal) in order to
26
+ use the gem. Currently we support systemd 208 or higher.
26
27
 
27
28
  ## Usage
28
29
 
@@ -0,0 +1,13 @@
1
+ require 'systemd/journal'
2
+
3
+ module Systemd
4
+ # See {Systemd::Id128.machine_id}.
5
+ def self.machine_id
6
+ Systemd::Id128.machine_id
7
+ end
8
+
9
+ # See {Systemd::Id128.boot_id}.
10
+ def self.boot_id
11
+ Systemd::Id128.boot_id
12
+ end
13
+ end
@@ -9,7 +9,7 @@ module Systemd
9
9
  # from this machine.
10
10
  # @example Filter journal to the current machine.
11
11
  # j = Systemd::Journal.new
12
- # j.add_match('_MACHINE_ID', Systemd::Id128.machine_id)
12
+ # j.filter(_machine_id: Systemd::Id128.machine_id)
13
13
  # @return [String] 128-bit hex string representing the current machine.
14
14
  def self.machine_id
15
15
  @machine_id ||= read_id128(:sd_id128_get_machine)
@@ -20,7 +20,7 @@ module Systemd
20
20
  # the current boot.
21
21
  # @example Filter journal to the current boot.
22
22
  # j = Systemd::Journal.new
23
- # j.add_match('_BOOT_ID', Systemd::Id128.boot_id)
23
+ # j.filter(_boot_id: Systemd::Id128.boot_id)
24
24
  # @return [String] 128-bit hex string representing the current boot.
25
25
  def self.boot_id
26
26
  @boot_id ||= read_id128(:sd_id128_get_boot)
@@ -59,7 +59,7 @@ module Systemd
59
59
  :qwords, [:uint64, 2]
60
60
 
61
61
  def to_s
62
- ('%02x' * 16) % self[:bytes].to_a
62
+ format('%02x' * 16, *self[:bytes].to_a)
63
63
  end
64
64
 
65
65
  def self.from_s(str)
@@ -9,8 +9,8 @@ require 'systemd/journal/waitable'
9
9
  require 'systemd/journal_error'
10
10
  require 'systemd/journal_entry'
11
11
  require 'systemd/id128'
12
-
13
12
  require 'systemd/ffi_size_t'
13
+ require 'systemd'
14
14
 
15
15
  module Systemd
16
16
  # Class to allow interacting with the systemd journal.
@@ -194,17 +194,38 @@ module Systemd
194
194
  end
195
195
  end
196
196
 
197
+ # @private
198
+ def inspect
199
+ format(
200
+ '#<%s:0x%016x target: "%s", flags: 0x%08x>',
201
+ self.class.name,
202
+ object_id,
203
+ @open_target,
204
+ @open_flags
205
+ )
206
+ end
207
+
197
208
  private
198
209
 
199
210
  def open_journal(ptr, opts, flags)
211
+ @open_flags = 0
212
+
200
213
  case
201
214
  when opts[:path]
215
+ @open_target = "path:#{opts[:path]}"
202
216
  Native.sd_journal_open_directory(ptr, opts[:path], 0)
203
217
  when opts[:files]
204
- Native.sd_journal_open_files(ptr, array_to_ptrs(Array(opts[:files])), 0)
218
+ files = Array(opts[:files])
219
+ @open_target = "file#{files.one? ? '' : 's'}:#{files.join(',')}"
220
+ Native.sd_journal_open_files(ptr, array_to_ptrs(files), 0)
205
221
  when opts[:container]
222
+ raise ArgumentError.new('This libsystemd-journal version does not support sd_journal_open_container') unless Native.open_container?
223
+ @open_flags = flags
224
+ @open_target = "container:#{opts[:container]}"
206
225
  Native.sd_journal_open_container(ptr, opts[:container], flags)
207
226
  else
227
+ @open_flags = flags
228
+ @open_target = 'journal:local'
208
229
  Native.sd_journal_open(ptr, flags)
209
230
  end
210
231
  end
@@ -11,13 +11,25 @@ module Systemd
11
11
  ffi_lib %w( libsystemd.so.0 libsystemd.so
12
12
  libsystemd-journal.so.0 libsystemd-journal.so)
13
13
 
14
+ @@has_open_container = true
15
+
16
+ def self.open_container?
17
+ @@has_open_container
18
+ end
19
+
14
20
  # setup/teardown
15
21
  attach_function :sd_journal_open, [:pointer, :int], :int
16
22
  attach_function :sd_journal_open_directory, [:pointer, :string, :int], :int
17
23
  attach_function :sd_journal_close, [:pointer], :void
18
24
 
19
25
  attach_function :sd_journal_open_files, [:pointer, :pointer, :int], :int
20
- attach_function :sd_journal_open_container, [:pointer, :string, :int], :int
26
+
27
+ # not available in 208
28
+ begin
29
+ attach_function :sd_journal_open_container, [:pointer, :string, :int], :int
30
+ rescue FFI::NotFoundError
31
+ @@has_open_container = false
32
+ end
21
33
 
22
34
  # navigation
23
35
  attach_function :sd_journal_next, [:pointer], :int
@@ -29,9 +29,9 @@ module Systemd
29
29
  # Move the read pointer by `offset` entries.
30
30
  # @param [Integer] offset how many entries to move the read pointer by.
31
31
  # If this value is positive, the read pointer moves forward. Otherwise,
32
- # it moves backwards.
32
+ # it moves backwards. Defaults to moving forward one entry.
33
33
  # @return [Integer] number of entries the read pointer actually moved.
34
- def move(offset)
34
+ def move(offset = 1)
35
35
  offset > 0 ? move_next_skip(offset) : move_previous_skip(-offset)
36
36
  end
37
37
 
@@ -1,6 +1,6 @@
1
1
  module Systemd
2
2
  class Journal
3
3
  # The version of the systemd-journal gem.
4
- VERSION = '1.2.0'
4
+ VERSION = '1.2.1'
5
5
  end
6
6
  end
@@ -32,7 +32,6 @@ module Systemd
32
32
  # methods in this module will be available as class methods on
33
33
  # {Systemd::Journal}
34
34
  module ClassMethods
35
-
36
35
  # Creates a new IO stream which writes newline-seperated messages to
37
36
  # the journal.
38
37
  # @param identifier [String] this value will be passed as
@@ -44,7 +43,11 @@ module Systemd
44
43
  # priority prefixes
45
44
  # @return [IO]
46
45
  def log_stream(identifier, priority, opts = {})
47
- fd = Native.sd_journal_stream_fd(identifier, priority, !!opts[:prefix])
46
+ fd = Native.sd_journal_stream_fd(
47
+ identifier,
48
+ priority,
49
+ !opts[:prefix].nil?
50
+ )
48
51
  raise JournalError.new(fd) if fd < 0
49
52
 
50
53
  IO.new(fd, File::WRONLY, encoding: Encoding::UTF_8)
@@ -11,18 +11,23 @@ module Systemd
11
11
  # @param [Hash] entry a hash containing all the key-value pairs associated
12
12
  # with a given journal entry.
13
13
  def initialize(entry, context = {})
14
+ inspect = []
14
15
  @entry = entry
15
16
  @ctx = context
16
17
  @fields = entry.map do |key, value|
17
18
  name = key.downcase.to_sym
18
19
  define_singleton_method(name) { value } unless respond_to?(name)
20
+
21
+ inspect.push("#{name}: '#{value}'")
19
22
  name
20
23
  end
24
+ @inspect = inspect.join(', ')
21
25
  end
22
26
 
23
27
  # Returns the wall-clock time that this entry was received by the journal.
24
28
  # @return [Time]
25
29
  def realtime_timestamp
30
+ return nil unless @ctx.key?(:realtime_ts)
26
31
  @realtime_timestamp ||= Time.at(0, @ctx[:realtime_ts])
27
32
  end
28
33
 
@@ -30,9 +35,11 @@ module Systemd
30
35
  # by the journal. This should be associated with a boot_id.
31
36
  # @return [Time]
32
37
  def monotonic_timestamp
38
+ return nil unless @ctx.key?(:monotonic_ts)
33
39
  @monotonic_timestamp ||= Time.at(0, @ctx[:monotonic_ts].first)
34
40
  end
35
41
 
42
+ # @private
36
43
  def method_missing(m, *args)
37
44
  # not all journal entries will have all fields. don't raise an error
38
45
  # unless the user passed arguments.
@@ -40,15 +47,27 @@ module Systemd
40
47
  end
41
48
 
42
49
  # Get the value of a given field in the entry, or nil if it doesn't exist
50
+ # @param [String] the field name for which to look up the value. Can be a
51
+ # symbol or string, case insensitive.
52
+ # @return [String] the value for the given field, or nil if not found.
43
53
  def [](key)
44
54
  @entry[key] || @entry[key.to_s.upcase]
45
55
  end
46
56
 
57
+ # Yields each field name and value pair to the provided block.
58
+ # If no block is given, returns an enumerator.
59
+ # @return [Enumerator]
47
60
  def each
48
61
  return to_enum(:each) unless block_given?
49
62
  @entry.each { |key, value| yield [key, value] }
50
63
  end
51
64
 
65
+ # Returns the catalog message that this Journal Entry references, if any.
66
+ # @option opts [Boolean] :replace set to false to not replace placeholder
67
+ # strings in the catalog with the associated values in this Journal Entry.
68
+ # defaults to true.
69
+ # @return [String] the catalog provided message for this Journal Entry, or
70
+ # nil if non exists.
52
71
  def catalog(opts = {})
53
72
  return nil unless catalog?
54
73
 
@@ -60,12 +79,27 @@ module Systemd
60
79
  opts[:replace] ? field_substitute(cat) : cat
61
80
  end
62
81
 
82
+ # Returns true if this Journal Entry has an associated catalog message.
83
+ # @return [Boolean] whether or not this entry has an associated catalog
84
+ # message.
63
85
  def catalog?
64
86
  !self[:message_id].nil?
65
87
  end
66
88
 
89
+ # Convert this Entry into a hash.
90
+ # @return [Hash] the hash representation of this journal entry.
91
+ def to_h
92
+ @entry.each_with_object({}) { |(k, v), h| h[k] = v.dup }
93
+ end
94
+
95
+ # @private
96
+ def inspect
97
+ format('#<%s:0x%016x %s>', self.class.name, object_id, @inspect)
98
+ end
99
+
67
100
  private
68
101
 
102
+ # @private
69
103
  def field_substitute(msg)
70
104
  msg.gsub(/@[A-Z_0-9]+@/) { |field| self[field[1..-2]] || field }
71
105
  end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Systemd::Id128 do
4
+ subject(:id128){ Systemd::Id128 }
5
+
6
+ describe 'machine_id' do
7
+ it 'should be a 128 bit hexadecimal string' do
8
+ expect(id128.machine_id).to match(/[0-9a-f]{16}/)
9
+ end
10
+
11
+ it 'should match when called twice' do
12
+ m1 = id128.machine_id
13
+ m2 = id128.machine_id
14
+ expect(m1).to eq(m2)
15
+ end
16
+ end
17
+
18
+ # travis-ci does not boot with systemd so these cases
19
+ # will raise exceptions.
20
+ context 'when booted under systemd' do
21
+ describe 'boot_id' do
22
+ it 'should be a 128 bit hexadecimal string' do
23
+ expect(id128.boot_id).to match(/[0-9a-f]{16}/)
24
+ end
25
+
26
+ it 'should match when called twice' do
27
+ b1 = id128.boot_id
28
+ b2 = id128.boot_id
29
+ expect(b1).to eq(b2)
30
+ end
31
+ end
32
+ end unless ENV['TRAVIS']
33
+
34
+ describe 'random' do
35
+ it 'should be a 128 bit hexadecimal string' do
36
+ expect(id128.random).to match(/[0-9a-f]{16}/)
37
+ end
38
+
39
+ it 'should return a different value when called again' do
40
+ r1 = id128.random
41
+ r2 = id128.random
42
+ expect(r1).to_not eq(r2)
43
+ end
44
+ end
45
+ end
@@ -36,7 +36,16 @@ RSpec.describe Systemd::JournalEntry do
36
36
  end
37
37
 
38
38
  it 'yields each key/value in turn' do
39
- expect(entry.map{ |k,v| [k,v] }).to eq([['_PID', pid], ['MESSAGE', msg]])
39
+ items = entry.map { |k, v| [k, v] }
40
+ expect(items).to eq([['_PID', pid], ['MESSAGE', msg]])
41
+ end
42
+ end
43
+
44
+ describe 'to_h' do
45
+ it 'returns a deep copy of the entry' do
46
+ copy = subject.to_h
47
+ expect(copy).to eq(hash)
48
+ expect { copy['_PID'] << '3' }.to_not change { subject._pid }
40
49
  end
41
50
  end
42
51
 
@@ -16,6 +16,11 @@ RSpec.describe Systemd::Journal do
16
16
  expect { j.new(container: '', files: []) }.to raise_error(ArgumentError)
17
17
  expect { j.new(container: '', path: '/') }.to raise_error(ArgumentError)
18
18
  end
19
+
20
+ it 'throws an ArgumentError when attempting to open a container without support' do
21
+ allow(Systemd::Journal::Native).to receive(:open_container?).and_return(false)
22
+ expect { j.new(container: 'test') }.to raise_error(ArgumentError)
23
+ end
19
24
  end
20
25
 
21
26
  describe 'query_unique' do
@@ -46,6 +51,8 @@ RSpec.describe Systemd::Journal do
46
51
  it 'returns the disk usage of the example journal file' do
47
52
  pending 'blocks? bytes?'
48
53
  expect(j.disk_usage).to eq(4_005_888)
54
+ # force failure to make travis-ci happy
55
+ expect(true).to be false
49
56
  end
50
57
  end
51
58
 
@@ -326,4 +333,45 @@ RSpec.describe Systemd::Journal do
326
333
  end
327
334
  end
328
335
 
336
+ describe 'wait' do
337
+ it 'returns nil if nothing happens' do
338
+ expect(Systemd::Journal::Native)
339
+ .to receive(:sd_journal_wait)
340
+ .and_return(:nop)
341
+
342
+ expect(j.wait(1)).to be nil
343
+ end
344
+
345
+ it 'returns :append if new entries are found' do
346
+ expect(Systemd::Journal::Native)
347
+ .to receive(:sd_journal_wait)
348
+ .and_return(:append)
349
+
350
+ expect(j.wait(1)).to be :append
351
+ end
352
+
353
+ it 'raise a JournalError on error' do
354
+ expect(Systemd::Journal::Native)
355
+ .to receive(:sd_journal_wait)
356
+ .and_return(-1)
357
+
358
+ expect { j.wait(1) }.to raise_error(Systemd::JournalError)
359
+ end
360
+
361
+ it 'can use select' do
362
+ expect(Systemd::Journal::Native).to_not receive(:sd_journal_wait)
363
+ j.wait(1, select: true)
364
+ end
365
+ end
366
+
367
+ describe 'wait_select_reliable?' do
368
+ it 'should not throw an error' do
369
+ expect { j.wait_select_reliable? }.to_not raise_error
370
+ end
371
+
372
+ it 'should return a boolean' do
373
+ expect([true, false]).to include(j.wait_select_reliable?)
374
+ end
375
+ end
376
+
329
377
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Systemd do
4
+ describe 'machine_id' do
5
+ it 'is an alias for Systemd::Id128.machine_id' do
6
+ expect(Systemd::Id128).to receive(:machine_id)
7
+ Systemd.machine_id
8
+ end
9
+ end
10
+
11
+ describe 'boot_id' do
12
+ it 'is an alias for Systemd::Id128.boot_id' do
13
+ expect(Systemd::Id128).to receive(:boot_id)
14
+ Systemd.boot_id
15
+ end
16
+ end
17
+
18
+ end
@@ -4,26 +4,28 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'systemd/journal/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = "systemd-journal"
7
+ gem.name = 'systemd-journal'
8
8
  gem.version = Systemd::Journal::VERSION
9
9
  gem.license = 'MIT'
10
- gem.authors = ["John Ledbetter", "Daniel Mack"]
11
- gem.email = ["john@throttle.io"]
10
+ gem.authors = ['John Ledbetter', 'Daniel Mack']
11
+ gem.email = ['john@throttle.io']
12
12
  gem.description = %q{Provides the ability to navigate and read entries from the systemd journal in ruby, as well as write events to the journal.}
13
13
  gem.summary = %q{Ruby bindings to libsystemd-journal}
14
- gem.homepage = "https://github.com/ledbettj/systemd-journal"
14
+ gem.homepage = 'https://github.com/ledbettj/systemd-journal'
15
15
 
16
16
  gem.files = `git ls-files`.split($/)
17
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
- gem.require_paths = ["lib"]
19
+ gem.require_paths = ['lib']
20
20
 
21
- gem.add_dependency 'ffi', '~>1.9.0'
21
+ gem.required_ruby_version = '>= 1.9.3'
22
22
 
23
- gem.add_development_dependency 'rspec', '~> 3.0.0'
24
- gem.add_development_dependency 'simplecov', '~> 0.7.1'
25
- gem.add_development_dependency 'rubocop', '~> 0.23.0'
26
- gem.add_development_dependency 'rake', '~> 10.1.0'
27
- gem.add_development_dependency 'yard', '~> 0.8.7.4'
28
- gem.add_development_dependency 'pry', '~> 0.10.0'
23
+ gem.add_runtime_dependency 'ffi', '~> 1.9.0'
24
+
25
+ gem.add_development_dependency 'rspec', '~> 3.1'
26
+ gem.add_development_dependency 'simplecov', '~> 0.9'
27
+ gem.add_development_dependency 'rubocop', '~> 0.26'
28
+ gem.add_development_dependency 'rake', '~> 10.3'
29
+ gem.add_development_dependency 'yard', '~> 0.8.7'
30
+ gem.add_development_dependency 'pry', '~> 0.10'
29
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: systemd-journal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Ledbetter
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-03 00:00:00.000000000 Z
12
+ date: 2014-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -31,84 +31,84 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 3.0.0
34
+ version: '3.1'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 3.0.0
41
+ version: '3.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: simplecov
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.7.1
48
+ version: '0.9'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.7.1
55
+ version: '0.9'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rubocop
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 0.23.0
62
+ version: '0.26'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.23.0
69
+ version: '0.26'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 10.1.0
76
+ version: '10.3'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 10.1.0
83
+ version: '10.3'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: yard
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 0.8.7.4
90
+ version: 0.8.7
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 0.8.7.4
97
+ version: 0.8.7
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: pry
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: 0.10.0
104
+ version: '0.10'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: 0.10.0
111
+ version: '0.10'
112
112
  description: Provides the ability to navigate and read entries from the systemd journal
113
113
  in ruby, as well as write events to the journal.
114
114
  email:
@@ -127,6 +127,7 @@ files:
127
127
  - examples/journal_directory.rb
128
128
  - examples/ssh_watcher.rb
129
129
  - lib/systemd-journal.rb
130
+ - lib/systemd.rb
130
131
  - lib/systemd/ffi_size_t.rb
131
132
  - lib/systemd/id128.rb
132
133
  - lib/systemd/journal.rb
@@ -143,8 +144,10 @@ files:
143
144
  - spec/fixtures/test.journal
144
145
  - spec/fixtures/test.json
145
146
  - spec/spec_helper.rb
147
+ - spec/systemd/id128_spec.rb
146
148
  - spec/systemd/journal_entry_spec.rb
147
149
  - spec/systemd/journal_spec.rb
150
+ - spec/systemd_spec.rb
148
151
  - systemd-journal.gemspec
149
152
  homepage: https://github.com/ledbettj/systemd-journal
150
153
  licenses:
@@ -158,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
161
  requirements:
159
162
  - - ">="
160
163
  - !ruby/object:Gem::Version
161
- version: '0'
164
+ version: 1.9.3
162
165
  required_rubygems_version: !ruby/object:Gem::Requirement
163
166
  requirements:
164
167
  - - ">="
@@ -174,6 +177,8 @@ test_files:
174
177
  - spec/fixtures/test.journal
175
178
  - spec/fixtures/test.json
176
179
  - spec/spec_helper.rb
180
+ - spec/systemd/id128_spec.rb
177
181
  - spec/systemd/journal_entry_spec.rb
178
182
  - spec/systemd/journal_spec.rb
183
+ - spec/systemd_spec.rb
179
184
  has_rdoc: