middleman-livereload 3.4.2 → 3.4.7

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
- SHA1:
3
- metadata.gz: 217907b3c501015710ffe9d761d85be9c911ea25
4
- data.tar.gz: 0dfa34929cb855664d4c850615c481471900abab
2
+ SHA256:
3
+ metadata.gz: ac51978c5650bf89df058f304a8dd7a5f42aeb360ca9eb8642ce8619d8f3ad9c
4
+ data.tar.gz: 6999099989b1fa0fa85096f623b2b10453819e62efa6c5b26584d4008999d68b
5
5
  SHA512:
6
- metadata.gz: 482e8d1846e95ca2bbc92d0478550b91eec7b322c4dda2452252052373a829dd5f28fe73224ac442e36f21f49cb17ed1ed1a2e2fa9b7491ef8eb748474d059b9
7
- data.tar.gz: 65da27476b7bddae0b62673047c89f078c86ed6e180759224005512e30cc2ef0c5704276fef6e3c00378a19b40e42ee8d2ecfe5ac8874e836d507d4de5b97578
6
+ metadata.gz: 74eed67bfc417007cb3998c767a464d998e8b30d521153471abd575b8a247c67c89d159470360f2c622255d8b58f229172e75a38353ade602fe35c2e8e89d67a
7
+ data.tar.gz: c54f7cf4d6f46337473512d02b664f1b3c25699173b1c559c134017ac94c2342003e908bf2cf191f7d6c819b634dff2922dfe9efb3716472f3ac37f0aea6e9b1
@@ -0,0 +1,20 @@
1
+ # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.166.1/containers/ruby/.devcontainer/base.Dockerfile
2
+
3
+ # [Choice] Ruby version: 3, 3.0, 2, 2.7, 2.6, 2.5
4
+ ARG VARIANT="3"
5
+ FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT}
6
+
7
+ # [Option] Install Node.js
8
+ ARG INSTALL_NODE="true"
9
+ ARG NODE_VERSION="lts/*"
10
+ RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
11
+
12
+ # [Optional] Uncomment this section to install additional OS packages.
13
+ # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
14
+ # && apt-get -y install --no-install-recommends <your-package-list-here>
15
+
16
+ # [Optional] Uncomment this line to install additional gems.
17
+ # RUN gem install <your-gem-names-here>
18
+
19
+ # [Optional] Uncomment this line to install global node packages.
20
+ # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
@@ -0,0 +1,35 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://github.com/microsoft/vscode-dev-containers/tree/v0.166.1/containers/ruby
3
+ {
4
+ "name": "Ruby",
5
+ "build": {
6
+ "dockerfile": "Dockerfile",
7
+ "args": {
8
+ // Update 'VARIANT' to pick a Ruby version: 3, 3.0, 2, 2.7, 2.6, 2.5
9
+ "VARIANT": "2.7",
10
+ // Options
11
+ "INSTALL_NODE": "true",
12
+ "NODE_VERSION": "lts/*"
13
+ }
14
+ },
15
+
16
+ // Set *default* container specific settings.json values on container create.
17
+ "settings": {
18
+ "terminal.integrated.shell.linux": "/bin/bash"
19
+ },
20
+
21
+ // Add the IDs of extensions you want installed when the container is created.
22
+ "extensions": [
23
+ "rebornix.Ruby"
24
+ ],
25
+
26
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
27
+ // "forwardPorts": [],
28
+
29
+ // Use 'postCreateCommand' to run commands after the container is created.
30
+ // "postCreateCommand": "ruby --version",
31
+
32
+ // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
33
+ "remoteUser": "vscode"
34
+
35
+ }
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.travis.yml CHANGED
@@ -1,9 +1,12 @@
1
1
  rvm:
2
- - 1.9.3
3
- - 2.0.0
4
- - 2.1.1
5
- - jruby-19mode
6
-
2
+ - ruby-head
3
+ - 2.2.2
4
+ - 2.1
5
+ - 2.0
6
+ matrix:
7
+ fast_finish: true
8
+ allow_failures:
9
+ - rvm: ruby-head
7
10
  gemfile:
8
11
  - Gemfile
9
12
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ (unreleased)
2
+ ===
3
+
4
+ * Support secure sockets (WSS) with options for TLS certificate & private key.
5
+
1
6
  3.3.0
2
7
  ===
3
8
 
data/Gemfile CHANGED
@@ -1,9 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git "git://github.com/middleman/middleman.git", :branch => "v3-stable" do
4
- # gem "middleman"
5
- gem "middleman-core"
6
- end
3
+ gem "middleman", github: "middleman/middleman", branch: "master"
7
4
 
8
5
  # Specify your gem's dependencies in middleman-blog.gemspec
9
6
  gemspec
data/README.md CHANGED
@@ -11,7 +11,7 @@ gem install middleman
11
11
  middleman init MY_PROJECT
12
12
  ```
13
13
 
14
- If you already have a Middleman project: Add `gem "middleman-livereload", "~> 3.3.0"` to your `Gemfile` and run `bundle install`
14
+ If you already have a Middleman project: Add `gem "middleman-livereload", "~> 3.4.3"` to your `Gemfile` and run `bundle install`
15
15
 
16
16
  ## Configuration
17
17
 
@@ -22,13 +22,17 @@ activate :livereload
22
22
  The extension supports a number of options that can be given to the `activate` statement. Eg:
23
23
 
24
24
  ```
25
- activate :livereload, :apply_js_live => false
25
+ activate :livereload, apply_js_live: false
26
26
  ```
27
27
 
28
28
  #### `:host` and `:port`
29
29
 
30
30
  Livereload's listener host/port, these options get passed to ::Rack::LiveReload middleware. Defaults:`'0.0.0.0'` and `'35729'`.
31
31
 
32
+ #### `:js_host` and `:js_port`
33
+
34
+ Similar to the `:host` and `:port` options, but allow you to specify a different host and port at the frontend Javascript level than at the backend EventMachine level. Useful when running behind a proxy or on a Docker VM. Defaults to `:host` and `:port`.
35
+
32
36
  #### `:apply_js_live` and `:apply_css_live`
33
37
 
34
38
  Whether live reload should attempt to reload javascript / css 'in-place', without complete reload of the page. Both default to `true`.
@@ -39,6 +43,26 @@ Whether live reload should attempt to reload javascript / css 'in-place', withou
39
43
 
40
44
  Disable Flash polyfil for browsers that support native WebSockets.
41
45
 
46
+ #### `:ignore`
47
+
48
+ Array of patterns for paths that must be ignored. These files will not be injected with the LiveReload script.
49
+
50
+ `String#match` is used for ignoring, so you can use any valid Ruby regular expression in this array.
51
+
52
+ #### `:livereload_css_target`
53
+
54
+ CSS file to reload when detecting @imported partial was modified. Default `stylesheets/all.css`).
55
+ To opt out set `livereload_css_target: nil`.
56
+
57
+ #### `:livereload_css_pattern`
58
+
59
+ Regexp matching filenames that should trigger reload of :livereload_css_target when changed. Default: `Regexp.new('_.*\.css')`.
60
+
61
+ #### `:wss_certificate` and `:wss_private_key`
62
+
63
+ Support secure sockets (WSS) by passing TLS certificate & private key, for
64
+ example if you're using `middleman server --https` in development.
65
+
42
66
  ## Build & Dependency Status
43
67
 
44
68
  [![Gem Version](https://badge.fury.io/rb/middleman-livereload.png)][gem]
@@ -48,7 +72,7 @@ Disable Flash polyfil for browsers that support native WebSockets.
48
72
 
49
73
  ## Community
50
74
 
51
- The official community forum is available at: http://forum.middlemanapp.com
75
+ The official community forum is available at: https://forum.middlemanapp.com
52
76
 
53
77
  ## Bug Reports
54
78
 
@@ -71,9 +95,9 @@ The best way to get quick responses to your issues and swift fixes to your bugs
71
95
 
72
96
  Copyright (c) 2010-2013 Thomas Reynolds. MIT Licensed, see [LICENSE] for details.
73
97
 
74
- [middleman]: http://middlemanapp.com
98
+ [middleman]: https://middlemanapp.com
75
99
  [gem]: https://rubygems.org/gems/middleman-livereload
76
- [travis]: http://travis-ci.org/middleman/middleman-livereload
100
+ [travis]: https://travis-ci.org/middleman/middleman-livereload
77
101
  [gemnasium]: https://gemnasium.com/middleman/middleman-livereload
78
102
  [codeclimate]: https://codeclimate.com/github/middleman/middleman-livereload
79
103
  [LICENSE]: https://github.com/middleman/middleman-livereload/blob/master/LICENSE.md
data/Rakefile CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
+ begin
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ rescue LoadError
8
+ end
9
+
4
10
  require 'cucumber/rake/task'
5
11
 
6
12
  Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
@@ -14,7 +20,7 @@ end
14
20
 
15
21
  require 'rake/clean'
16
22
 
17
- task :test => ["cucumber"]
23
+ task :test => ["spec", "cucumber"]
18
24
 
19
25
  desc "Build HTML documentation"
20
26
  task :doc do
@@ -3,11 +3,18 @@ require 'middleman-livereload/reactor'
3
3
 
4
4
  module Middleman
5
5
  class LiveReloadExtension < Extension
6
- option :port, '35729', 'Port to bind the LiveReload API server to'
6
+ option :port, '35729', 'Port to bind the LiveReload API server to listen to'
7
7
  option :apply_js_live, true, 'Apply JS changes live, without reloading'
8
8
  option :apply_css_live, true, 'Apply CSS changes live, without reloading'
9
9
  option :no_swf, false, 'Disable Flash WebSocket polyfill for browsers that support native WebSockets'
10
10
  option :host, Socket.ip_address_list.find(->{ Addrinfo.ip 'localhost' }, &:ipv4_private?).ip_address, 'Host to bind LiveReload API server to'
11
+ option :ignore, [], 'Array of patterns for paths that must be ignored'
12
+ option :js_port, nil, 'Port to connect the LiveReload Javascript to (if different than :port)'
13
+ option :js_host, nil, 'Host to connect LiveReload Javascript to (if different than :host)'
14
+ option :livereload_css_target, 'stylesheets/all.css', 'CSS file to load when a @imported CSS partials are modified'
15
+ option :livereload_css_pattern, Regexp.new('_.*\.css'), 'Regexp matching filenames that trigger live reloading target'
16
+ option :wss_certificate, nil, 'Path to an X.509 certificate to use for the websocket server'
17
+ option :wss_private_key, nil, 'Path to an RSA private key for the websocket certificate'
11
18
 
12
19
  def initialize(app, options_hash={}, &block)
13
20
  super
@@ -18,49 +25,62 @@ module Middleman
18
25
  return unless app.environment == :development
19
26
  end
20
27
 
21
- @reactor = nil
22
-
23
28
  port = options.port.to_i
24
29
  host = options.host
30
+ js_port = options.js_port || port
31
+ js_host = options.js_host || host
25
32
  no_swf = options.no_swf
33
+ ignore = options.ignore
26
34
  options_hash = options.to_h
35
+ livereload_css_target = options.livereload_css_target
36
+ livereload_css_pattern = options.livereload_css_pattern
37
+
38
+ extension = self
27
39
 
28
40
  app.ready do
29
- if @reactor
30
- @reactor.app = self
31
- else
32
- @reactor = ::Middleman::LiveReload::Reactor.new(options_hash, self)
41
+ reactor = ::Middleman::LiveReload::Reactor.create(options_hash, self)
42
+
43
+ ignored = lambda do |file|
44
+ return true if app.files.respond_to?(:ignored?) && app.files.send(:ignored?, file)
45
+ ignore.any? { |i| file.to_s.match(i) }
33
46
  end
34
47
 
35
- files.changed do |file|
36
- next if files.respond_to?(:ignored?) && files.send(:ignored?, file)
48
+ app.files.changed do |file|
49
+ next if ignored.call(file)
37
50
 
38
51
  logger.debug "LiveReload: File changed - #{file}"
39
52
 
40
53
  reload_path = "#{Dir.pwd}/#{file}"
41
54
 
42
- file_url = sitemap.file_to_path(file)
55
+ file_url = app.sitemap.file_to_path(file)
43
56
  if file_url
44
- file_resource = sitemap.find_resource_by_path(file_url)
57
+ file_resource = app.sitemap.find_resource_by_path(file_url)
45
58
  if file_resource
46
59
  reload_path = file_resource.url
47
60
  end
48
61
  end
49
62
 
50
- @reactor.reload_browser(reload_path)
63
+ # handle imported partials
64
+ # load target file instead of triggering full page refresh
65
+ if livereload_css_pattern.match(file.to_s) and not livereload_css_target.nil?
66
+ logger.info("LiveReload: CSS import changed, reloading target")
67
+ reload_path = livereload_css_target
68
+ end
69
+
70
+ reactor.reload_browser(reload_path)
51
71
  end
52
72
 
53
- files.deleted do |file|
54
- next if files.respond_to?(:ignored?) && files.send(:ignored?, file)
73
+ app.files.deleted do |file|
74
+ next if ignored.call(file)
55
75
 
56
76
  logger.debug "LiveReload: File deleted - #{file}"
57
77
 
58
- @reactor.reload_browser("#{Dir.pwd}/#{file}")
78
+ reactor.reload_browser("#{Dir.pwd}/#{file}")
59
79
  end
60
80
 
61
81
  # Use the vendored livereload.js source rather than trying to get it from Middleman
62
82
  # https://github.com/johnbintz/rack-livereload#which-livereload-script-does-it-use
63
- use ::Rack::LiveReload, :port => port, :host => host, :no_swf => no_swf, :source => :vendored
83
+ app.use ::Rack::LiveReload, port: js_port, host: js_host, no_swf: no_swf, source: :vendored, ignore: ignore
64
84
  end
65
85
  end
66
86
  end
@@ -1,24 +1,36 @@
1
1
  require 'em-websocket'
2
2
  require 'json'
3
+ require 'middleman-livereload/wss'
3
4
 
4
5
  module Middleman
5
6
  module LiveReload
6
7
  class Reactor
7
8
  attr_reader :thread, :web_sockets, :app
8
9
 
10
+ def self.create(options, app)
11
+ if @reactor
12
+ @reactor.app = app
13
+ else
14
+ @reactor = new(options, app)
15
+ end
16
+
17
+ @reactor
18
+ end
19
+
9
20
  def initialize(options, app)
10
21
  @app = app
11
22
  @web_sockets = []
12
23
  @options = options
13
24
  @thread = start_threaded_reactor(options)
25
+ @mutex = Thread::Mutex.new
14
26
  end
15
27
 
16
28
  def app= app
17
- Thread.exclusive { @app = app }
29
+ @mutex.synchronize { @app = app }
18
30
  end
19
31
 
20
32
  def logger
21
- Thread.exclusive { @app.logger }
33
+ @mutex.synchronize { @app.logger }
22
34
  end
23
35
 
24
36
  def stop
@@ -40,10 +52,11 @@ module Middleman
40
52
  end
41
53
 
42
54
  def start_threaded_reactor(options)
55
+ wss = Wss.new(@options[:wss_certificate], @options[:wss_private_key])
43
56
  Thread.new do
44
57
  EventMachine.run do
45
- logger.info "== LiveReload accepting connections from http://#{options[:host]}:#{options[:port]}"
46
- EventMachine.start_server(options[:host], options[:port], EventMachine::WebSocket::Connection, {}) do |ws|
58
+ logger.info "== LiveReload accepting connections from #{wss.scheme}://#{options[:host]}:#{options[:port]}"
59
+ EventMachine.start_server(options[:host], options[:port], EventMachine::WebSocket::Connection, wss.to_options) do |ws|
47
60
  ws.onopen do
48
61
  begin
49
62
  ws.send "!!ver:1.6"
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module LiveReload
3
- VERSION = "3.4.2"
3
+ VERSION = "3.4.7"
4
4
  end
5
5
  end
@@ -0,0 +1,42 @@
1
+ module Middleman
2
+ module LiveReload
3
+ class Wss
4
+ def initialize(certificate, private_key)
5
+ @certificate = certificate
6
+ @private_key = private_key
7
+ validate!
8
+ end
9
+
10
+ def valid?
11
+ @certificate && @private_key
12
+ end
13
+
14
+ def to_options
15
+ return {} unless valid?
16
+ {
17
+ secure: true,
18
+ tls_options: {
19
+ private_key_file: @private_key,
20
+ cert_chain_file: @certificate
21
+ }
22
+ }
23
+ end
24
+
25
+ def scheme
26
+ valid? ? "wss" : "ws"
27
+ end
28
+
29
+ private
30
+
31
+ def present?
32
+ @certificate || @private_key
33
+ end
34
+
35
+ def validate!
36
+ if present? && !valid?
37
+ raise ArgumentError.new, "You must provide both :wss_certificate and :wss_private_key"
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,77 @@
1
+ require "spec_helper"
2
+ require "middleman-livereload/wss"
3
+
4
+ module Middleman
5
+ module LiveReload
6
+ RSpec.describe Wss do
7
+ let(:wss) { Wss.new certificate, private_key }
8
+
9
+ it "prevents missing certificate or private_key" do
10
+ expect { Wss.new nil, "y" }.to raise_error(ArgumentError, /both :wss_certificate and :wss_private_key/)
11
+ end
12
+
13
+ describe "#scheme" do
14
+ subject { wss.scheme }
15
+
16
+ context "no certificate and no private key" do
17
+ let(:certificate) { nil }
18
+ let(:private_key) { nil }
19
+
20
+ it { is_expected.to eq "ws" }
21
+ end
22
+
23
+ context "certificate and private key" do
24
+ let(:certificate) { "x" }
25
+ let(:private_key) { "y" }
26
+
27
+ it { is_expected.to eq "wss" }
28
+ end
29
+ end
30
+
31
+ describe "#to_options" do
32
+ subject { wss.to_options }
33
+
34
+ context "no certificate and no private key" do
35
+ let(:certificate) { nil }
36
+ let(:private_key) { nil }
37
+
38
+ it { is_expected.to eq Hash.new }
39
+ end
40
+
41
+ context "certificate and private key" do
42
+ let(:certificate) { "x" }
43
+ let(:private_key) { "y" }
44
+ let(:options) do
45
+ {
46
+ secure: true,
47
+ tls_options: {
48
+ private_key_file: private_key,
49
+ cert_chain_file: certificate
50
+ }
51
+ }
52
+ end
53
+
54
+ it { is_expected.to eq options }
55
+ end
56
+ end
57
+
58
+ describe "#valid?" do
59
+ subject { wss.valid? }
60
+
61
+ context "no certificate and no private key" do
62
+ let(:certificate) { nil }
63
+ let(:private_key) { nil }
64
+
65
+ it { is_expected.to be_falsey }
66
+ end
67
+
68
+ context "certificate and private key" do
69
+ let(:certificate) { "x" }
70
+ let(:private_key) { "y" }
71
+
72
+ it { is_expected.to be_truthy }
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,17 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = 'random'
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-livereload
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds
@@ -10,48 +10,48 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-12-26 00:00:00.000000000 Z
13
+ date: 2021-04-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: middleman-core
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.3'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rack-livereload
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 0.3.15
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 0.3.15
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: em-websocket
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
49
  version: 0.5.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ~>
54
+ - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: 0.5.1
57
57
  description: LiveReload support for Middleman
@@ -63,8 +63,11 @@ executables: []
63
63
  extensions: []
64
64
  extra_rdoc_files: []
65
65
  files:
66
- - .gitignore
67
- - .travis.yml
66
+ - ".devcontainer/Dockerfile"
67
+ - ".devcontainer/devcontainer.json"
68
+ - ".gitignore"
69
+ - ".rspec"
70
+ - ".travis.yml"
68
71
  - CHANGELOG.md
69
72
  - CONTRIBUTING.md
70
73
  - Gemfile
@@ -77,8 +80,11 @@ files:
77
80
  - lib/middleman-livereload/extension_3_1.rb
78
81
  - lib/middleman-livereload/reactor.rb
79
82
  - lib/middleman-livereload/version.rb
83
+ - lib/middleman-livereload/wss.rb
80
84
  - lib/middleman_extension.rb
81
85
  - middleman-livereload.gemspec
86
+ - spec/middleman-livereload/wss_spec.rb
87
+ - spec/spec_helper.rb
82
88
  homepage: https://github.com/middleman/middleman-livereload
83
89
  licenses:
84
90
  - MIT
@@ -89,21 +95,17 @@ require_paths:
89
95
  - lib
90
96
  required_ruby_version: !ruby/object:Gem::Requirement
91
97
  requirements:
92
- - - '>='
98
+ - - ">="
93
99
  - !ruby/object:Gem::Version
94
100
  version: 1.9.3
95
101
  required_rubygems_version: !ruby/object:Gem::Requirement
96
102
  requirements:
97
- - - '>='
103
+ - - ">="
98
104
  - !ruby/object:Gem::Version
99
105
  version: '0'
100
106
  requirements: []
101
- rubyforge_project:
102
- rubygems_version: 2.2.2
107
+ rubygems_version: 3.1.6
103
108
  signing_key:
104
109
  specification_version: 4
105
110
  summary: LiveReload support for Middleman
106
- test_files:
107
- - features/.gitkeep
108
- - fixtures/.gitkeep
109
- has_rdoc:
111
+ test_files: []