jekyll_plugin_logger 2.0.0

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
+ SHA256:
3
+ metadata.gz: a7a503b502ebd28c7bfe8ed9237ae721560135f1620054da34ece8275cfb5118
4
+ data.tar.gz: 5285da27eebe3005f00562260e38117a8d685a8f10b8ab5bf444ee804d17cf46
5
+ SHA512:
6
+ metadata.gz: ebc0a877d7bf80fe01e1609123ea93900ce9a23e96c877e3d304128543946c1fe31613c3af9b50324fa5fdf030170a06f5f2b79ba02d3fd079f7797931639088
7
+ data.tar.gz: 516fb3f7250fce0bacf7f5a2e782111e358ab0e979cd98950a7105faa0516d657423e88499dfd9534c05c9c70dec00431475a8c1f72be1b166b2164cc0018c56
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ require: rubocop-jekyll
2
+ inherit_gem:
3
+ rubocop-jekyll: .rubocop.yml
4
+
5
+ AllCops:
6
+ Exclude:
7
+ - vendor/**/*
8
+ - Gemfile*
9
+ - '*.gemspec' # This does nothing. Why?
10
+ NewCops: enable
11
+ TargetRubyVersion: 2.6
12
+
13
+ Jekyll/NoPutsAllowed:
14
+ Exclude:
15
+ - spec/**/*
16
+
17
+ Layout/LineLength:
18
+ Max: 150
19
+
20
+ # Gemspec/RequireMFA:
21
+ # enable: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ ## 2.0.0 / 2022-03-16
2
+ * Completely rewrote this plugin, now not a class, but a module that monkey patches the existing Jekyll logger for compatibility.
3
+ * Renamed the gem from `jekyll_logger_factory` to `jekyll_plugin_logger`.
4
+ * Automatically obtains plugin class name and uses that as `progname`.
5
+ * `:into` level output is colored cyan.
6
+
7
+ ## 1.0.0 / 2022-03-16
8
+ * Published as a gem.
9
+ * New instances are now created with `new` instead of `create_logger`.
10
+ * Now subclasses Jekyll's Stevenson logger.
11
+ * Documentation improved, clarifies that the only supported levels are those provided by the Stevenson logger: `:debug`, `:info`, and `:error`.
12
+ * No longer supports control over where log output goes; STDERR and STDOUT are automatically selected according to log level.
13
+
14
+ ## 2020-12-28
15
+ * Initial version published at https://www.mslinn.com/blog/2020/12/28/custom-logging-in-jekyll-plugins.html
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Mike Slinn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,120 @@
1
+ `jekyll_plugin_logger`
2
+ [![Gem Version](https://badge.fury.io/rb/jekyll_plugin_logger.svg)](https://badge.fury.io/rb/jekyll_plugin_logger)
3
+ ===========
4
+
5
+ `jekyll_plugin_logger` is a Jekyll plugin, packaged as a Ruby gem, that provides colored console logs for Jekyll plugins.
6
+
7
+
8
+ ## Usage
9
+
10
+ It looks within `_config.yml` for a key corresponding to the plugin progname.
11
+ For example, if the plugin's class is called `"MyPlugin"` then an entry called `plugin_loggers.MyPlugin`
12
+ will be read from the config file, if present.
13
+ If the entry exists, its value overrides the value specified when created.
14
+ If no such entry is found then the `log_level` value passed to `new` is used.
15
+
16
+ Here are examples of how to use this plugin:
17
+ ```ruby
18
+ # These log messages are always computed, needed or not:
19
+ Jekyll.logger.info("Info message 1")
20
+ Jekyll.logger.info('MyPlugin', "Info message 2")
21
+
22
+ # The following blocks are not evaluated unless log_level requires them to be
23
+
24
+ Jekyll.logger.info('MyPlugin') { "Info message 3" }
25
+ Jekyll.info { "Info message 4" }
26
+
27
+ Jekyll.logger.warn('MyPlugin') { "Warn message 1" }
28
+ Jekyll.warn { "Warn message 2" }
29
+
30
+ Jekyll.logger.error('MyPlugin') { "Error message 1" }
31
+ Jekyll.error { "Error message 2" }
32
+ ```
33
+
34
+ For more information about the logging feature in the Ruby standard library,
35
+ see https://ruby-doc.org/stdlib-2.7.2/libdoc/logger/rdoc/Logger.html
36
+
37
+
38
+
39
+ ## Installation
40
+
41
+ Add this line to your Jekyll website's `_config.yml`:
42
+
43
+ ```ruby
44
+ group :jekyll_plugins do
45
+ gem 'jekyll_plugin_logger'
46
+ end
47
+ ```
48
+
49
+ Install all of the dependent gems of your Jekyll website by typing:
50
+
51
+ $ bundle install
52
+
53
+ Or install just this one gem by typing:
54
+
55
+ $ gem install jekyll_plugin_logger
56
+
57
+
58
+ ## Additional Information
59
+ More information is available on Mike Slinn's web site about
60
+ [Jekyll plugins](https://www.mslinn.com/blog/index.html#Jekyll).
61
+
62
+
63
+ ## Development
64
+
65
+ After checking out the repo, run `bin/setup` to install dependencies, including development dependencies.
66
+
67
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
68
+
69
+ ### Build and Install Locally
70
+ To build and install this gem onto your local machine, run:
71
+ ```shell
72
+ $ rake install:local
73
+ ```
74
+
75
+ The following also does the same thing:
76
+ ```shell
77
+ $ bundle exec rake install
78
+ jekyll_plugin_logger 1.0.0 built to pkg/jekyll_plugin_logger-0.1.0.gem.
79
+ jekyll_plugin_logger (1.0.0) installed.
80
+ ```
81
+
82
+ Examine the newly built gem:
83
+ ```shell
84
+ $ gem info jekyll_plugin_logger
85
+
86
+ *** LOCAL GEMS ***
87
+
88
+ jekyll_plugin_logger (1.0.0)
89
+ Author: Mike Slinn
90
+ Homepage:
91
+ https://github.com/mslinn/jekyll_plugin_logger
92
+ License: MIT
93
+ Installed at: /home/mslinn/.gems
94
+
95
+ Generates Jekyll logger with colored output.
96
+ ```
97
+
98
+ ### Build and Push to RubyGems
99
+ To release a new version,
100
+ 1. Update the version number in `version.rb`.
101
+ 2. Commit all changes to git; if you don't the next step might fail with an unexplainable error message.
102
+ 3. Run the following:
103
+ ```shell
104
+ $ bundle exec rake release
105
+ ```
106
+ The above creates a git tag for the version, commits the created tag,
107
+ and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
108
+
109
+
110
+ ## Contributing
111
+
112
+ 1. Fork the project
113
+ 2. Create a descriptively named feature branch
114
+ 3. Add your feature
115
+ 4. Submit a pull request
116
+
117
+
118
+ ## License
119
+
120
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ task :default => :spec
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/jekyll_plugin_logger/version"
4
+
5
+ # rubocop:disable Metrics/BlockLength
6
+ Gem::Specification.new do |spec|
7
+ github = "https://github.com/mslinn/jekyll_plugin_logger"
8
+
9
+ spec.authors = ["Mike Slinn"]
10
+ spec.bindir = "exe"
11
+ spec.description = <<~END_OF_DESC
12
+ Generates Jekyll logger with colored output.
13
+ END_OF_DESC
14
+ spec.email = ["mslinn@mslinn.com"]
15
+ spec.files = Dir[".rubocop.yml", "LICENSE.*", "Rakefile", "{lib,spec}/**/*", "*.gemspec", "*.md"]
16
+ spec.homepage = "https://www.mslinn.com/blog/2020/12/28/custom-logging-in-jekyll-plugins.html"
17
+ spec.license = "MIT"
18
+ spec.metadata = {
19
+ "allowed_push_host" => "https://rubygems.org",
20
+ "bug_tracker_uri" => "#{github}/issues",
21
+ "changelog_uri" => "#{github}/CHANGELOG.md",
22
+ "homepage_uri" => spec.homepage,
23
+ "source_code_uri" => github,
24
+ }
25
+ spec.name = "jekyll_plugin_logger"
26
+ spec.post_install_message = <<~END_MESSAGE
27
+
28
+ Thanks for installing #{spec.name}!
29
+
30
+ END_MESSAGE
31
+ spec.require_paths = ["lib"]
32
+ spec.required_ruby_version = ">= 2.6.0"
33
+ spec.summary = "Generates Jekyll logger with colored output."
34
+ spec.test_files = spec.files.grep(%r!^(test|spec|features)/!)
35
+ spec.version = JekyllPluginLogger::VERSION
36
+
37
+ spec.add_dependency "jekyll", ">= 3.5.0"
38
+
39
+ spec.add_development_dependency "debase"
40
+ # spec.add_development_dependency "rubocop-jekyll"
41
+ # spec.add_development_dependency "rubocop-rake"
42
+ # spec.add_development_dependency "rubocop-rspec"
43
+ spec.add_development_dependency "ruby-debug-ide"
44
+ end
45
+ # rubocop:enable Metrics/BlockLength
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllPluginLogger
4
+ VERSION = "2.0.0"
5
+ end
@@ -0,0 +1,197 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "colorator"
4
+ require "logger"
5
+ require "singleton"
6
+ require "yaml"
7
+ require_relative "jekyll_plugin_logger/version"
8
+
9
+ module JekyllPluginLoggerName
10
+ PLUGIN_NAME = "jekyll_plugin_logger"
11
+ end
12
+
13
+ # Once the meta-logger is made (see `PluginMetaLogger``, below) new instances of `PluginLogger` can be created with log levels set by `config` entries.
14
+ # @example Create new `PluginLogger`s like this:
15
+ # @logger = PluginMetaLogger.instance.new_logger(self)
16
+ #
17
+ # self can be a class, a string, or a symbol.
18
+ #
19
+ # Best practice is to invoke `info``, `warn, `debug`` and `error`` methods by passing blocks that contain the message.
20
+ # The blocks will only be evaluated if output for that level is enabled.
21
+ # @example Use `PluginLogger`s like this:
22
+ # @logger.info { "This is only evaluated if info level debugging is enabled" }
23
+ #
24
+ # For more information about the logging feature in the Ruby standard library,
25
+ # @see https://ruby-doc.org/stdlib-2.7.1/libdoc/logger/rdoc/Logger.html
26
+ class PluginLogger
27
+ include JekyllPluginLogger
28
+
29
+ # This method should only be called by PluginMetaLogger
30
+ # @param log_level [String, Symbol, Integer] can be specified as $stderr or $stdout,
31
+ # or an integer from 0..3 (inclusive),
32
+ # or as a case-insensitive string
33
+ # (`debug`, `info`, `warn`, `error`, or `DEBUG`, `INFO`, `WARN`, `ERROR`),
34
+ # or as a symbol (`:debug`, `:info`, `:warn`, `:error` ).
35
+ #
36
+ # @param config [YAML] is normally created by reading a YAML file such as Jekyll's `_config.yml`.
37
+ # When invoking from a Jekyll plugin, provide `site.config`,
38
+ # which is available from all types of Jekyll plugins as `Jekyll.configuration({})`.
39
+ #
40
+ # @example If `progname` has value `abc`, then the YAML to override the programmatically set log_level to `debug` is:
41
+ # logger_factory:
42
+ # abc: debug
43
+ def initialize(klass, config, stream_name = $stdout)
44
+ @logger = Logger.new(stream_name)
45
+ @logger.progname = derive_progname(klass)
46
+ @logger.level = :info
47
+ plugin_loggers = config["plugin_loggers"]
48
+ @logger.level ||= plugin_loggers["PluginMetaLogger"] if plugin_loggers
49
+ # puts "PluginLogger.initialize: @logger.progname=#{@logger.progname} set to #{@logger.level}".red
50
+ @logger.formatter = proc { |severity, _, prog_name, msg|
51
+ "#{severity} #{prog_name}: #{msg}\n"
52
+ }
53
+ end
54
+
55
+ def debug(progname = nil, &block)
56
+ if block
57
+ @logger.debug(@logger.progname) { (yield block).to_s.magenta }
58
+ else
59
+ @logger.debug(@logger.progname) { progname.to_s.magenta }
60
+ end
61
+ end
62
+
63
+ def info(progname = nil, &block)
64
+ if block
65
+ @logger.info(@logger.progname) { (yield block).to_s.cyan }
66
+ else
67
+ @logger.info(@logger.progname) { progname.to_s.cyan }
68
+ end
69
+ end
70
+
71
+ def level=(value)
72
+ @logger.level = value
73
+ end
74
+
75
+ def level
76
+ @logger.level
77
+ end
78
+
79
+ def progname=(value)
80
+ @logger.progname = value
81
+ end
82
+
83
+ def progname
84
+ @logger.progname
85
+ end
86
+
87
+ def warn(progname = nil, &block)
88
+ if block
89
+ @logger.warn(@logger.progname) { (yield block).to_s.yellow }
90
+ else
91
+ @logger.warn(@logger.progname) { progname.to_s.yellow }
92
+ end
93
+ end
94
+
95
+ def error(progname = nil, &block)
96
+ if block
97
+ @logger.error(@logger.progname) { (yield block).to_s.red }
98
+ else
99
+ @logger.error(@logger.progname) { progname.to_s.red }
100
+ end
101
+ end
102
+
103
+ private
104
+
105
+ def derive_progname(klass)
106
+ full_name = case klass.class
107
+ when String
108
+ klass
109
+ when Symbol
110
+ klass.to_s
111
+ else
112
+ klass.class.name
113
+ end
114
+ full_name.split("::").last
115
+ end
116
+
117
+ # Available colors are: :black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, and the modifier :bold
118
+ def level_as_sym
119
+ return :unknown if @logger.level.negative? || level > 4
120
+
121
+ [:debug, :info, :warn, :error, :fatal, :unknown][@logger.level]
122
+ end
123
+ end
124
+
125
+ # Makes a meta-logger instance (a singleton) with level set by `site.config`.
126
+ # Saves `site.config` for later use when creating plugin loggers; these loggers each have their own log levels.
127
+ #
128
+ # For example, if the plugin's progname has value `MyPlugin` then an entry called `plugin_loggers.MyPlugin`
129
+ # will be read from `config`, if present.
130
+ # If no such entry is found then the meta-logger log_level is set to `:info`.
131
+ # If you want to see messages that indicate the loggers and log levels as they are created,
132
+ # set the log level for `PluginMetaLogger` to `debug` in `_config.yml`
133
+ #
134
+ # @example
135
+ # # Create and initialize the meta-logger singleton in a high priority Jekyll `site` `:after_init` hook:
136
+ # PluginMetaLogger.instance.setup(site.config).info { "Meta-logger has been created" }
137
+ #
138
+ # # In `config.yml`:
139
+ # plugin_loggers:
140
+ # PluginMetaLogger: info
141
+ # MyPlugin: warn
142
+ # MakeArchive: error
143
+ # ArchiveDisplayTag: debug
144
+ #
145
+ # # In a Jekyll plugin:
146
+ # @logger = PluginMetaLogger.instance.new_logger(self)
147
+ # @logger.info { "This is a log message from a Jekyll plugin" }
148
+ # #
149
+ # PluginMetaLogger.instance.info { "MyPlugin vX.Y.Z has been loaded" }
150
+ class PluginMetaLogger
151
+ include Singleton
152
+ attr_reader :logger
153
+
154
+ def initialize
155
+ super
156
+ @config = nil
157
+ @logger = new_logger(self)
158
+ end
159
+
160
+ def info
161
+ @logger.info(self) { yield }
162
+ end
163
+
164
+ def debug
165
+ @logger.debug(self) { yield }
166
+ end
167
+
168
+ def warn
169
+ @logger.warn(self) { yield }
170
+ end
171
+
172
+ def error
173
+ @logger.error(self) { yield }
174
+ end
175
+
176
+ def new_logger(klass, stream_name = $stdout)
177
+ if @config.nil?
178
+ puts { "Error: PluginMetaLogger has not been initialized by calling setup yet.".red }
179
+ PluginLogger.new(klass, {}, stream_name)
180
+ else
181
+ PluginLogger.new(klass, @config, stream_name)
182
+ end
183
+ end
184
+
185
+ def setup(config, stream_name = $stdout)
186
+ @config = config
187
+ @logger = new_logger(self, stream_name)
188
+ @logger
189
+ end
190
+ end
191
+
192
+ Jekyll::Hooks.register(:site, :after_init, :priority => :high) do |site|
193
+ instance = PluginMetaLogger.instance
194
+ logger = instance.setup(site.config)
195
+ logger.info { "Loaded #{JekyllPluginLoggerName::PLUGIN_NAME} v#{JekyllPluginLogger::VERSION} plugin." }
196
+ logger.debug { "Logger for #{instance.progname} created at level #{instance.level_as_sym}" }
197
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "colorator"
4
+ require "jekyll"
5
+ require_relative "../lib/jekyll_plugin_logger"
6
+
7
+ # Output should be:
8
+
9
+ # Info message 1 (cyan)
10
+ # MyPlugin Info message 2 (cyan)
11
+ # MyPlugin: Info message 3 (cyan)
12
+ # MyTestPlugin: Info message 4 (cyan)
13
+ # .
14
+ # MyPlugin: Warn message 1 (yellow)
15
+ # MyTestPlugin: Warn message 2 (yellow)
16
+ # MyPlugin: Error message 1 (red)
17
+ # MyTestPlugin: Error message 2 (red)
18
+
19
+ class MyTestPlugin
20
+ instance = PluginMetaLogger.instance
21
+ logger = instance.new_logger(self) # Should generate a warning
22
+ instance.setup({})
23
+ PluginMetaLogger.instance.info { "How now, brown cow" }
24
+ PluginMetaLogger.instance.debug { "How now, brown cow" }
25
+ PluginMetaLogger.instance.warn { "How now, brown cow" }
26
+ PluginMetaLogger.instance.error { "How now, brown cow" }
27
+
28
+ logger = PluginMetaLogger.instance.new_logger(self)
29
+ logger.debug { "3 fleas fleeing freedom" }
30
+ logger.info { "3 fleas fleeing freedom" }
31
+ logger.warn { "3 fleas fleeing freedom" }
32
+ logger.error { "3 fleas fleeing freedom" }
33
+
34
+ _yaml = <<~END_YAML
35
+ plugin_loggers:
36
+ PluginMetaLogger: debug
37
+ SiteInspector: warn
38
+ MakeArchive: error
39
+ ArchiveDisplayTag: debug
40
+ END_YAML
41
+
42
+ def self.exercise(logger)
43
+ puts
44
+ # puts "\ncalling_class_name=#{logger.send(:calling_class_name)}"
45
+ logger.debug("Debug message 1")
46
+ # logger.debug("MyPlugin", "Debug message 2")
47
+ # logger.debug("MyPlugin") { "Debug message 3" }
48
+ logger.debug { "Debug message 4" }
49
+
50
+ logger.info("Info message 1")
51
+ # logger.info("MyPlugin", "Info message 2")
52
+ # logger.info("MyPlugin") { "Info message 3" }
53
+ logger.info { "Info message 4" }
54
+
55
+ logger.warn("Warn message 1")
56
+ # logger.warn("MyPlugin", "Warn message 2")
57
+ # logger.warn("MyPlugin") { "Warn message 3" }
58
+ logger.warn { "Warn message 4" }
59
+
60
+ logger.error("Error message 1")
61
+ # logger.error("MyPlugin", "Error message 2")
62
+ # logger.error("MyPlugin") { "Error message 3" }
63
+ logger.error { "Error message 4" }
64
+ end
65
+
66
+ RSpec.describe JekyllPluginLogger do
67
+ it "outputs at debug level" do
68
+ MyTestPlugin.exercise(PluginMetaLogger.instance.new_logger(self, $stdout))
69
+ end
70
+
71
+ it "uses config warn" do
72
+ logger = PluginMetaLogger.instance.new_logger("SiteInspector", $stdout)
73
+ MyTestPlugin.exercise(logger)
74
+ end
75
+
76
+ it "uses config error" do
77
+ logger = PluginMetaLogger.instance.new_logger(:MakeArchive)
78
+ MyTestPlugin.exercise(logger)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jekyll"
4
+ require_relative "../lib/jekyll_plugin_logger"
5
+
6
+ Jekyll.logger.log_level = :info
7
+
8
+ RSpec.configure do |config|
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+ config.order = "random"
12
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll_plugin_logger
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mike Slinn
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-03-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.5.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.5.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: debase
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ruby-debug-ide
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: 'Generates Jekyll logger with colored output.
56
+
57
+ '
58
+ email:
59
+ - mslinn@mslinn.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".rubocop.yml"
65
+ - CHANGELOG.md
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - jekyll_plugin_logger.gemspec
70
+ - lib/jekyll_plugin_logger.rb
71
+ - lib/jekyll_plugin_logger/version.rb
72
+ - spec/jekyll_plugin_logger.rb
73
+ - spec/spec_helper.rb
74
+ homepage: https://www.mslinn.com/blog/2020/12/28/custom-logging-in-jekyll-plugins.html
75
+ licenses:
76
+ - MIT
77
+ metadata:
78
+ allowed_push_host: https://rubygems.org
79
+ bug_tracker_uri: https://github.com/mslinn/jekyll_plugin_logger/issues
80
+ changelog_uri: https://github.com/mslinn/jekyll_plugin_logger/CHANGELOG.md
81
+ homepage_uri: https://www.mslinn.com/blog/2020/12/28/custom-logging-in-jekyll-plugins.html
82
+ source_code_uri: https://github.com/mslinn/jekyll_plugin_logger
83
+ post_install_message: |2+
84
+
85
+ Thanks for installing jekyll_plugin_logger!
86
+
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 2.6.0
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubygems_version: 3.1.4
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: Generates Jekyll logger with colored output.
105
+ test_files:
106
+ - spec/jekyll_plugin_logger.rb
107
+ - spec/spec_helper.rb