log4r-sequel 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 22db2c5c31f8fbb61fac792ab52976a26e6e0984
4
+ data.tar.gz: 2ea605f5b25ebc37a19c912403e6e502ca7751a4
5
+ SHA512:
6
+ metadata.gz: eb146d274d9e4bddeb666218f54edb4bda8d26fd95d5b36479c05f42727fb70ea7ce341d1a293b8d089723eb101e897d094dea0fd3720c54933a63ae9cc5f053
7
+ data.tar.gz: a791ae9d859a3854a88b38f174e8774d2ec53f577c5aa3d291fb4022a1a87c03d2f69053f76101ba8bc8be3a01c3bc0e2cde389819df095507cbe9dd9989f836
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - 2.2.2
7
+ - 2.3.0
8
+
9
+ notifications:
10
+ email: false
11
+
12
+ bundler_args: --without test --jobs 3 --retry 3
13
+ script: bundle exec rake test
data/Gemfile ADDED
@@ -0,0 +1,29 @@
1
+ ## travis really doesn't like this
2
+ #ruby '2.0.0'
3
+
4
+ source 'https://rubygems.org'
5
+
6
+ gem 'log4r', '~> 1.1.9', '> 1.1'
7
+
8
+ # ugh this is so stupid - jeweler pulls in the latest version of this -
9
+ # through it's own dependency, causing a hard requirement on ruby 2.3.x,
10
+ # locking it down this way
11
+ gem 'rack', '= 1.6.4'
12
+
13
+ gem 'sequel', '~> 4.6', '>= 4.6.0'
14
+
15
+ # making ruby 2.3.0 happy
16
+ gem 'hoe', '~> 3.15', '>= 3.15.1'
17
+
18
+ group :development do
19
+ gem 'jeweler', '~> 2.0', '>= 2.0.0'
20
+ gem 'test-unit', '~> 2.0', '>= 2.0.0'
21
+ end
22
+
23
+ group :sqlite do
24
+ gem 'sqlite3', '~> 1.3', '>= 1.3.11'
25
+ end
26
+
27
+ group :postgres do
28
+ gem 'pg', '~> 0.18', '>= 0.18.4'
29
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,70 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ addressable (2.4.0)
5
+ builder (3.2.2)
6
+ descendants_tracker (0.0.4)
7
+ thread_safe (~> 0.3, >= 0.3.1)
8
+ faraday (0.9.2)
9
+ multipart-post (>= 1.2, < 3)
10
+ git (1.3.0)
11
+ github_api (0.13.1)
12
+ addressable (~> 2.4.0)
13
+ descendants_tracker (~> 0.0.4)
14
+ faraday (~> 0.8, < 0.10)
15
+ hashie (>= 3.4)
16
+ multi_json (>= 1.7.5, < 2.0)
17
+ oauth2
18
+ hashie (3.4.4)
19
+ highline (1.7.8)
20
+ hoe (3.15.1)
21
+ rake (>= 0.8, < 12.0)
22
+ jeweler (2.0.1)
23
+ builder
24
+ bundler (>= 1.0)
25
+ git (>= 1.2.5)
26
+ github_api
27
+ highline (>= 1.6.15)
28
+ nokogiri (>= 1.5.10)
29
+ rake
30
+ rdoc
31
+ json (1.8.3)
32
+ jwt (1.5.1)
33
+ log4r (1.1.10)
34
+ mini_portile2 (2.0.0)
35
+ multi_json (1.12.1)
36
+ multi_xml (0.5.5)
37
+ multipart-post (2.0.0)
38
+ nokogiri (1.6.7.2)
39
+ mini_portile2 (~> 2.0.0.rc2)
40
+ oauth2 (1.1.0)
41
+ faraday (>= 0.8, < 0.10)
42
+ jwt (~> 1.0, < 1.5.2)
43
+ multi_json (~> 1.3)
44
+ multi_xml (~> 0.5)
45
+ rack (>= 1.2, < 3)
46
+ pg (0.18.4)
47
+ rack (1.6.4)
48
+ rake (11.2.2)
49
+ rdoc (4.2.2)
50
+ json (~> 1.4)
51
+ sequel (4.37.0)
52
+ sqlite3 (1.3.11)
53
+ test-unit (2.0.0.0)
54
+ thread_safe (0.3.5)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ hoe (~> 3.15, >= 3.15.1)
61
+ jeweler (~> 2.0, >= 2.0.0)
62
+ log4r (~> 1.1.9, > 1.1)
63
+ pg (~> 0.18, >= 0.18.4)
64
+ rack (= 1.6.4)
65
+ sequel (~> 4.6, >= 4.6.0)
66
+ sqlite3 (~> 1.3, >= 1.3.11)
67
+ test-unit (~> 2.0, >= 2.0.0)
68
+
69
+ BUNDLED WITH
70
+ 1.12.5
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # log4r-sequel
2
+ Log4r outputter to a Sequel database handle
3
+
4
+ ## usage
5
+
6
+ ### pre-built gem installation (stable)
7
+
8
+ [![Gem Version](https://badge.fury.io/rb/log4r-sequel.png)](https://rubygems.org/gems/log4r-sequel)
9
+
10
+ ```sh
11
+ gem install log4r-sequel
12
+ irb
13
+ ...
14
+ irb(main):001:0> require 'log4r/outputter/sequeloutputter'
15
+ => true
16
+ irb(main):002:0> logger = Log4r::Logger.new('foo')
17
+ => #<Log4r::Logger:0x007f889b056df8 @fullname="foo" ...>
18
+ ```
19
+
20
+
21
+ ### from-source installation (latest)
22
+
23
+ [![build status](https://travis-ci.org/chorankates/log4r-sequel.svg)](https://travis-ci.org/chorankates/log4r-sequel)
24
+
25
+ ```sh
26
+ git clone https://github.com/chorankates/log4r-sequel.git
27
+ cd log4r-sequel
28
+ rake clean build
29
+ gem install --local pkg/log4r-sequel*.gem
30
+ irb
31
+ ...
32
+ irb(main):001:0> require 'log4r/outputter/sequeloutputter'
33
+ => true
34
+ ```
35
+
36
+ ## supported databases
37
+ * sqlite3
38
+ * Postgres
39
+
40
+ ## TODO
41
+ * allow database name to be semi-dynamically generated - via YAML config, not just by passing the hash directly
42
+ * tests
43
+ * unit tests
44
+ * marketing
45
+ * screencast / sample output in README.md
data/Rakefile ADDED
@@ -0,0 +1,34 @@
1
+ require 'jeweler'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+
6
+ CLEAN.include('**/*.sqlite')
7
+ CLEAN.include('pkg/*')
8
+
9
+ Jeweler::Tasks.new do |gem|
10
+ gem.name = 'log4r-sequel'
11
+ gem.summary = 'Log4r::Outputter::Sequel'
12
+ gem.description = 'Log4r::Outputter that writes to a Sequel database'
13
+ gem.email = ['conor.code@gmail.com']
14
+ gem.homepage = 'http://github.com/chorankates/log4r-sequel'
15
+ gem.authors = ['Conor Horan-Kates']
16
+ gem.licenses = 'MIT'
17
+
18
+ gem.files.exclude 'examples/*'
19
+ gem.files.exclude 'pkg/*'
20
+ end
21
+ Jeweler::RubygemsDotOrgTasks.new
22
+
23
+ namespace :test do
24
+
25
+ Rake::TestTask.new do |t|
26
+ t.name = 'functional'
27
+ t.libs << 'lib'
28
+ t.test_files = FileList['test/functional/**/test_*.rb']
29
+ #t.verbose = true
30
+ end
31
+
32
+ end
33
+ desc 'run all tests'
34
+ task :test => ['clean', 'test:functional'] do; end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,18 @@
1
+ $LOAD_PATH << sprintf('%s/../lib', File.dirname(__FILE__))
2
+
3
+ #require 'log4r-sequel'
4
+ require 'log4r/outputter/sequeloutputter'
5
+
6
+ file = sprintf('%s/log4r-postgres.yaml', File.dirname(__FILE__))
7
+ Log4r::YamlConfigurator.load_yaml_file(file)
8
+
9
+ logger = Log4r::Logger.get('bar')
10
+
11
+ [logger].each do |l|
12
+ ## log some garbage
13
+ l.debug('this is a debug message')
14
+ l.info('this is an info message')
15
+ l.warn('this is a warning')
16
+ l.error('this is an error')
17
+ l.fatal('this is a fatal')
18
+ end
@@ -0,0 +1,22 @@
1
+ $LOAD_PATH << sprintf('%s/../lib', File.dirname(__FILE__))
2
+
3
+ require 'sqlite3'
4
+
5
+ #require 'log4r-sequel'
6
+ require 'log4r/outputter/sequeloutputter'
7
+ require 'log4r/yamlconfigurator'
8
+
9
+ ## instantiate a logger following the log4r pattern
10
+ file = sprintf('%s/log4r-sqlite.yaml', File.dirname(__FILE__))
11
+ Log4r::YamlConfigurator.load_yaml_file(file)
12
+
13
+ logger = Log4r::Logger.get('foo')
14
+
15
+ [logger].each do |l|
16
+ ## log some garbage
17
+ l.debug('this is a debug message')
18
+ l.info('this is an info message')
19
+ l.warn('this is a warning')
20
+ l.error('this is an error')
21
+ l.fatal('this is a fatal')
22
+ end
@@ -0,0 +1,53 @@
1
+ ---
2
+ log4r_config:
3
+ loggers:
4
+ - name: 'bar'
5
+ outputters:
6
+ - sequel
7
+ - stdout
8
+ outputters:
9
+ # not needed, but feedback is useful
10
+ - type: StdoutOutputter
11
+ name: stdout
12
+ formatter:
13
+ type: PatternFormatter
14
+ date_pattern: '%Y/%m/%d %H:%M.%s'
15
+ pattern: '%d | %C | %l | %m'
16
+
17
+ - type: SequelOutputter
18
+ # traditional Log4r settings
19
+ name: sequel
20
+ level: DEBUG
21
+ formatter:
22
+ type: PatternFormatter
23
+ date_pattern: '%Y/%m/%d %H:%M.%s'
24
+ pattern: '%d!@#$%l!@#$%C!@#$%c!@#$%h!@#$%p!@#$%m' # kitchen sink
25
+ # log4r-sequel settings
26
+ engine: postgres
27
+ server: localhost
28
+ port: 5432
29
+ database: logs
30
+ table: logs
31
+ username: postgres
32
+ password: postgres
33
+ delimiter: '!@#$' # this is used to determine columns needed based on log4 configuration
34
+ map:
35
+ 0: 'date'
36
+ 1: 'level'
37
+ 2: 'class'
38
+ 3: 'relative_class'
39
+ 4: 'thread'
40
+ 5: 'pid'
41
+ 6: 'message'
42
+
43
+ # truncated map from http://log4r.rubyforge.org/rdoc/Log4r/PatternFormatter.html
44
+ # %c - event short name
45
+ # %C - event fullname
46
+ # %d - date
47
+ # %g - Global Diagnostic Context (GDC)
48
+ # %t - trace
49
+ # %m - message
50
+ # %h - thread name
51
+ # %p - process ID aka PID
52
+ # %M - formatted message
53
+ # %l - Level in string form
@@ -0,0 +1,46 @@
1
+ ---
2
+ log4r_config:
3
+ loggers:
4
+ - name: 'foo'
5
+ outputters:
6
+ - sequel
7
+ - stdout
8
+ outputters:
9
+ # not needed, but feedback is useful
10
+ - type: StdoutOutputter
11
+ name: stdout
12
+ formatter:
13
+ type: PatternFormatter
14
+ date_pattern: '%Y/%m/%d %H:%M.%s'
15
+ pattern: '%d | %C | %l | %m'
16
+
17
+ - type: SequelOutputter
18
+ # traditional Log4r settings
19
+ name: sequel
20
+ level: DEBUG
21
+ formatter:
22
+ type: PatternFormatter
23
+ date_pattern: '%Y/%m/%d %H:%M.%s'
24
+ pattern: '%d!@#$%C!@#$%l!@#$%m' # date|level|event/class fullname|message
25
+ # log4r-sequel settings
26
+ engine: sqlite
27
+ file: log.sqlite
28
+ table: logs
29
+ delimiter: '!@#$' # this is used to determine columns needed based on log4 configuration
30
+ map:
31
+ 0: 'date'
32
+ 1: 'level'
33
+ 2: 'class'
34
+ 3: 'message'
35
+
36
+ # truncated map from http://log4r.rubyforge.org/rdoc/Log4r/PatternFormatter.html
37
+ # %c - event short name
38
+ # %C - event fullname
39
+ # %d - date
40
+ # %g - Global Diagnostic Context (GDC)
41
+ # %t - trace
42
+ # %m - message
43
+ # %h - thread name
44
+ # %p - process ID aka PID
45
+ # %M - formatted message
46
+ # %l - Level in string form
@@ -0,0 +1,127 @@
1
+ require 'log4r'
2
+ require 'log4r/yamlconfigurator'
3
+ require 'sequel'
4
+ require 'yaml'
5
+
6
+ # TODO should we move this to ../logger.rb
7
+ # TODO .. or should we remove this entirely? it was implemented to let us call connect/configure, but since we do that in initiliaze now, maybe we just pull it
8
+ class Log4r::Logger
9
+ # +method+ String or Symbol representing the name of the method in the Log4r::Outputter::SequelOutputter class you want to use
10
+ # +parameters+ arbitrary data type to be passed to :methods
11
+ def sequel(method, parameters = { })
12
+ # TODO support methods that take more than one parameter
13
+ self.outputters.each do |op|
14
+ next unless op.is_a?(SequelOutputter)
15
+ return op.send(method.to_sym, parameters)
16
+ end
17
+ end
18
+
19
+ # no parameters, returns the first Log4r::Outputter::Sequel object
20
+ # TODO is there ever a case where there would be more than one?
21
+ def get_outputter
22
+ self.outputters.each do |op|
23
+ next unless op.is_a?(SequelOutputter)
24
+ return op
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ class SequelOutputter < Log4r::Outputter
31
+
32
+ KNOWN_ENGINES = [
33
+ :postgres,
34
+ :sqlite,
35
+ ]
36
+
37
+ attr_reader :database, :delimiter, :engine, :file, :map, :table
38
+ attr_accessor :dbh
39
+
40
+ def initialize(name, hash)
41
+ super(name, hash) # make us a real Log4r::Outputter object
42
+ dbh = configure(hash) # validate settings passed
43
+ connect(dbh) # actually connect to the DBH
44
+ end
45
+
46
+ # +input+ Hash of configuration options
47
+ def configure(input)
48
+ config = input
49
+
50
+ # convert all keys to symbols
51
+ new_config = Hash.new
52
+ config.keys.each do |key|
53
+ new_config[key.to_sym] = config[key]
54
+ end
55
+ config = new_config
56
+
57
+ @engine = config[:engine].to_sym
58
+
59
+ # error checking on table/column settings
60
+ @table = config[:table].to_sym
61
+ @map = config[:map]
62
+ @delimiter = config[:delimiter]
63
+ [@delimiter, @map, @table].each do |required|
64
+ raise Log4r::ConfigError.new(sprintf("required '%s' key missing from configuration", required)) if required.nil?
65
+ end
66
+
67
+ if @engine.eql?(:postgres)
68
+ @database = config[:database]
69
+ @file = nil
70
+ server = config[:server]
71
+ port = config[:port]
72
+ username = config[:username]
73
+ password = config[:password]
74
+ @dbh = Sequel.connect(sprintf('postgres://%s:%s@%s:%s/%s', username, password, server, port, @database))
75
+ elsif @engine.eql?(:sqlite)
76
+ @database = nil # sqlite has one DB per file
77
+ @file = config[:file]
78
+ @dbh = Sequel.connect(sprintf('sqlite://%s', @file))
79
+ else
80
+ raise Log4r::ConfigError.new(sprintf('unable to use engine[%s], allowed[%s]', @engine, KNOWN_ENGINES))
81
+ end
82
+
83
+ @dbh
84
+ end
85
+
86
+ # +dbh+ a Sequel::Database handle
87
+ ## while not really supported, if you take care of the database/table creation, you could hack it in here by <your_logger>.outputters[<sequel outputter>].connect(<dbh>)
88
+ def connect(dbh)
89
+ raise StandardError.new(sprintf('invalid parameter class[%s] expecting[Sequel::Database]', dbh.class)) unless dbh.is_a?(Sequel::Database)
90
+
91
+ @dbh = dbh
92
+
93
+ # idempotently create table/columns
94
+ initialize_db
95
+ end
96
+
97
+ def connected?
98
+ # this is sufficient since we throw an exception during #connect if we don't get a good handle
99
+ ! @dbh.nil?
100
+ end
101
+
102
+ private
103
+
104
+ def write(data)
105
+ raise StandardError.new(sprintf('%s is not connected, run %s.connect(yaml_file)', self.class, self.class)) unless connected?
106
+ # INSERT INTO `logs`(`id`,`date`,`level`,`class`,`message`) VALUES (1,NULL,NULL,NULL,NULL);
107
+ tokens = data.split(@delimiter)
108
+ hash = Hash.new
109
+
110
+ tokens.each_with_index do |token, i|
111
+ hash[@map[i].to_sym] = token
112
+ end
113
+
114
+ @dbh[@table].insert(hash)
115
+ end
116
+
117
+ def initialize_db
118
+ map = @map # we're in a different class in the block below, can't access
119
+ @dbh.create_table? @table do
120
+ primary_key :id
121
+ map.values.each do |v|
122
+ String v.to_sym
123
+ end
124
+ end
125
+ end
126
+
127
+ end
@@ -0,0 +1,49 @@
1
+ $LOAD_PATH << sprintf('%s/../../lib', File.dirname(__FILE__))
2
+ require 'log4r/outputter/sequeloutputter'
3
+
4
+
5
+ require 'test/unit'
6
+
7
+ class TestSqlite < Test::Unit::TestCase
8
+
9
+ def setup
10
+ @good_config = sprintf('%s/../log4r-sqlite_test.yaml', File.expand_path(File.dirname(__FILE__)))
11
+ @table = :logs
12
+ end
13
+
14
+ def teardown
15
+ # TODO remove the database.. assume it's just '*.sqlite' in this path?
16
+ end
17
+
18
+
19
+ def test_happy_yaml
20
+ file = @good_config
21
+ Log4r::YamlConfigurator.load_yaml_file(file)
22
+
23
+ logger = nil
24
+
25
+ assert_nothing_raised do
26
+ logger = Log4r::Logger.get('test')
27
+ end
28
+
29
+ assert_not_nil(logger)
30
+ assert_equal(0, logger.get_outputter.dbh[@table].count)
31
+
32
+ assert_nothing_raised do
33
+ logger.debug('this is a debug message')
34
+ logger.info('this is an info message')
35
+ logger.warn('this is a warning')
36
+ logger.error('this is an error')
37
+ logger.fatal('this is a fatal')
38
+ end
39
+
40
+ assert_not_equal(0, logger.get_outputter.dbh[@table].count)
41
+
42
+ end
43
+
44
+ def test_sad_config
45
+ # TODO pass in bad configs as hashes
46
+ end
47
+
48
+
49
+ end
@@ -0,0 +1,46 @@
1
+ ---
2
+ log4r_config:
3
+ loggers:
4
+ - name: 'test'
5
+ outputters:
6
+ - sequel
7
+ - stdout
8
+ outputters:
9
+ # not needed, but feedback is useful
10
+ - type: StdoutOutputter
11
+ name: stdout
12
+ formatter:
13
+ type: PatternFormatter
14
+ date_pattern: '%Y/%m/%d %H:%M.%s'
15
+ pattern: '%d | %C | %l | %m'
16
+
17
+ - type: SequelOutputter
18
+ # traditional Log4r settings
19
+ name: sequel
20
+ level: DEBUG
21
+ formatter:
22
+ type: PatternFormatter
23
+ date_pattern: '%Y/%m/%d %H:%M.%s'
24
+ pattern: '%d!@#$%C!@#$%l!@#$%m' # date|level|event/class fullname|message
25
+ # log4r-sequel settings
26
+ engine: sqlite
27
+ file: log.sqlite
28
+ table: logs
29
+ delimiter: '!@#$' # this is used to determine columns needed based on log4 configuration
30
+ map:
31
+ 0: 'date'
32
+ 1: 'level'
33
+ 2: 'class'
34
+ 3: 'message'
35
+
36
+ # truncated map from http://log4r.rubyforge.org/rdoc/Log4r/PatternFormatter.html
37
+ # %c - event short name
38
+ # %C - event fullname
39
+ # %d - date
40
+ # %g - Global Diagnostic Context (GDC)
41
+ # %t - trace
42
+ # %m - message
43
+ # %h - thread name
44
+ # %p - process ID aka PID
45
+ # %M - formatted message
46
+ # %l - Level in string form
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: log4r-sequel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Conor Horan-Kates
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: log4r
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>'
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.1.9
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>'
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.9
33
+ - !ruby/object:Gem::Dependency
34
+ name: rack
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '='
38
+ - !ruby/object:Gem::Version
39
+ version: 1.6.4
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.6.4
47
+ - !ruby/object:Gem::Dependency
48
+ name: sequel
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 4.6.0
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '4.6'
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: 4.6.0
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: '4.6'
67
+ - !ruby/object:Gem::Dependency
68
+ name: hoe
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: 3.15.1
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '3.15'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: 3.15.1
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: '3.15'
87
+ - !ruby/object:Gem::Dependency
88
+ name: jeweler
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 2.0.0
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '2.0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.0
104
+ - - ~>
105
+ - !ruby/object:Gem::Version
106
+ version: '2.0'
107
+ - !ruby/object:Gem::Dependency
108
+ name: test-unit
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: 2.0.0
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: 2.0.0
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: '2.0'
127
+ description: Log4r::Outputter that writes to a Sequel database
128
+ email:
129
+ - conor.code@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files:
133
+ - README.md
134
+ files:
135
+ - .travis.yml
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - README.md
139
+ - Rakefile
140
+ - VERSION
141
+ - example/log2postgres.rb
142
+ - example/log2sqlite.rb
143
+ - example/log4r-postgres.yaml
144
+ - example/log4r-sqlite.yaml
145
+ - lib/log4r/outputter/sequeloutputter.rb
146
+ - test/functional/test_sqlite.rb
147
+ - test/log4r-sqlite_test.yaml
148
+ homepage: http://github.com/chorankates/log4r-sequel
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.4.8
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: Log4r::Outputter::Sequel
172
+ test_files: []