From 76afb89d65aa4a6412a0ab955618e08f5de7e672 Mon Sep 17 00:00:00 2001 From: Richard Nixon Date: Tue, 27 Jan 2015 21:13:35 +0000 Subject: [PATCH] Compatibility with guard v2.x - Extend Guard::Plugin instead of Guard::Guard - Fix RSpecs to avoid problem with uninitialised guard internals Guard 2.8.x deprecated the use of Guard::Guard over a year ago. Use of guard-kitchen generates deprecation warnings. Guard 2.9.x removed guard/guard.rb breaking anything that extends Guard::Guard (such as guard-kitchen --- guard-kitchen.gemspec | 2 +- lib/guard/kitchen.rb | 10 ++++++++-- lib/guard/kitchen/version.rb | 6 +++--- spec/unit/guard/kitchen_spec.rb | 15 +++++++++++++++ 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/guard-kitchen.gemspec b/guard-kitchen.gemspec index ad9b090..7356ae2 100644 --- a/guard-kitchen.gemspec +++ b/guard-kitchen.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_dependency "guard" + spec.add_dependency "guard", "> 2.0.0" spec.add_dependency "mixlib-shellout" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" diff --git a/lib/guard/kitchen.rb b/lib/guard/kitchen.rb index 0afe377..fe48d92 100644 --- a/lib/guard/kitchen.rb +++ b/lib/guard/kitchen.rb @@ -15,11 +15,17 @@ # require "guard" -require "guard/guard" +require "guard/plugin" require "mixlib/shellout" module Guard - class Kitchen < Guard + class Kitchen < Plugin + def initialize(options = {}) + super + # you can still access the watchers with options[:watchers] + # rest of the implementation... + end + def start ::Guard::UI.info("Guard::Kitchen is starting") cmd = Mixlib::ShellOut.new("kitchen create", :timeout => 10800) diff --git a/lib/guard/kitchen/version.rb b/lib/guard/kitchen/version.rb index 7897575..001bb25 100644 --- a/lib/guard/kitchen/version.rb +++ b/lib/guard/kitchen/version.rb @@ -1,8 +1,8 @@ require 'guard' -require 'guard/guard' +require 'guard/plugin' module Guard - class Kitchen < Guard - VERSION = "0.0.3" + class Kitchen < Plugin + VERSION = "0.0.4" end end diff --git a/spec/unit/guard/kitchen_spec.rb b/spec/unit/guard/kitchen_spec.rb index 4da4a86..79ede8d 100644 --- a/spec/unit/guard/kitchen_spec.rb +++ b/spec/unit/guard/kitchen_spec.rb @@ -1,6 +1,21 @@ require 'spec_helper' require 'guard/kitchen' +# Breaking change in guard 2.x for RSPEC caused by the fact +# we didn't initialize guard's internals before Guard::Kitchen.new() +# See https://github.com/guard/guard/issues/693 +# +# The recommended way fix it is to install guard-compat and use that +# instead of real guard for testing. That adds a development dependency, +# so for now just monkey patch to stub out Guard::Plugin#initialize +module Guard + class Plugin + def initialize(options={}) + end + end +end +# End of Monkey Patch + describe "Guard::Kitchen" do let(:kitchen) do Guard::Kitchen.new