From b664dd6ccbc953bb1f390cca87c6dff970a0543e Mon Sep 17 00:00:00 2001 From: Daniel Shannon Date: Mon, 2 Jun 2014 15:31:47 -0400 Subject: [PATCH 1/2] Restart w/ the new `passenger-config restart-app` command when available. * Updates Guard::Passenger::Runner such that if the user is running a version of Passenger that includes the new `passenger-config restart-app` command, the runner will prefer restarting that way to touching tmp/restart.txt. * Checks for an installed Passenger using Gem.latest_spec_for, to make it possible to distinguish between versions. * Adds (passing!) tests for the above behaviors. * Adds development dependency on RSpec::Mocks to help stub out Passenger versions. * Updates and loosens one or two development dependencies, just a hair. * Switches the Gemfile's old and deprecated `Config` module call to the newer `RbConfig`. --- Gemfile | 6 +-- guard-passenger.gemspec | 5 +- lib/guard/passenger/runner.rb | 19 ++++--- spec/guard/passenger/runner_spec.rb | 83 +++++++++++++++++++++++------ spec/spec_helper.rb | 3 +- 5 files changed, 83 insertions(+), 33 deletions(-) diff --git a/Gemfile b/Gemfile index e0dbe03..5f9c086 100644 --- a/Gemfile +++ b/Gemfile @@ -6,10 +6,10 @@ gemspec gem 'rake' require 'rbconfig' -if Config::CONFIG['target_os'] =~ /darwin/i +if RbConfig::CONFIG['target_os'] =~ /darwin/i gem 'rb-fsevent', '>= 0.3.2' gem 'growl', '~> 1.0.3' -elsif Config::CONFIG['target_os'] =~ /linux/i +elsif RbConfig::CONFIG['target_os'] =~ /linux/i gem 'rb-inotify', '>= 0.5.1' gem 'libnotify', '~> 0.1.3' -end \ No newline at end of file +end diff --git a/guard-passenger.gemspec b/guard-passenger.gemspec index 5787721..0037adb 100644 --- a/guard-passenger.gemspec +++ b/guard-passenger.gemspec @@ -17,8 +17,9 @@ Gem::Specification.new do |s| s.add_dependency 'guard', '>= 1.1.0.beta ' - s.add_development_dependency 'bundler', '~> 1.1.3' - s.add_development_dependency 'rspec', '~> 2.10.0' + s.add_development_dependency 'bundler', '~> 1.1' + s.add_development_dependency 'rspec', '~> 2.11.0' + s.add_development_dependency 'rspec-mocks', '~> 2.11.0' s.add_development_dependency 'guard-rspec', '~> 0.7.3' s.add_development_dependency 'guard-bundler', '~> 0.1.3' diff --git a/lib/guard/passenger/runner.rb b/lib/guard/passenger/runner.rb index 40ddddd..4789f5d 100644 --- a/lib/guard/passenger/runner.rb +++ b/lib/guard/passenger/runner.rb @@ -1,10 +1,16 @@ module Guard class Passenger module Runner - class << self + PASSENGER_VERSION = Gem.latest_spec_for('passenger').version + class << self def restart_passenger - succeed = system("touch tmp/restart.txt") + if PASSENGER_VERSION >= Gem::Version.new('4.0.31') + succeed = system("passenger-config restart-app #{ Dir.getwd }") + else + succeed = system("touch tmp/restart.txt") + end + if succeed UI.info "Passenger successfully restarted." else @@ -27,7 +33,6 @@ def start_passenger(cli, sudo = '') else UI.error "Passenger standalone is not installed. You need at least Passenger version >= 3.0.0.\nPlease run 'gem install passenger' or add it to your Gemfile." throw :task_has_failed - false end end @@ -43,14 +48,8 @@ def stop_passenger(cli, sudo = '') end def passenger_standalone_installed? - begin - gem "passenger", ">=3.0.0" - rescue Gem::LoadError - return false - end - true + PASSENGER_VERSION >= Gem::Version.new('3') end - end end end diff --git a/spec/guard/passenger/runner_spec.rb b/spec/guard/passenger/runner_spec.rb index 9a65486..6540bbb 100644 --- a/spec/guard/passenger/runner_spec.rb +++ b/spec/guard/passenger/runner_spec.rb @@ -57,13 +57,13 @@ end describe '#passenger_standalone_installed?' do - it 'should not have passenger >= 3 installed' do - subject.should_receive(:gem).with("passenger", ">=3.0.0").and_raise(Gem::LoadError) + it 'should not have passenger < 3 installed' do + stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('1') subject.passenger_standalone_installed?.should be_false end it 'should have passenger >= 3 installed' do - subject.should_receive(:gem).with("passenger", ">=3.0.0").and_return(true) + stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('4') subject.passenger_standalone_installed?.should be_true end end @@ -100,15 +100,43 @@ end describe '#restart_passenger' do - it 'should call "touch tmp/restart.txt"' do + it 'should call "touch tmp/restart.txt" for Passenger < 4.0.31' do + stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('3') + subject.should_receive(:system).with('touch tmp/restart.txt') expect { quietly { subject.restart_passenger } }.to throw_symbol(:task_has_failed) end + it 'should call "passenger-config restart-app" for Passenger >= 4.0.31' do + stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('5') + + subject.should_receive(:system).with("passenger-config restart-app #{ Dir.getwd }") + expect { + quietly { subject.restart_passenger } + }.to throw_symbol(:task_has_failed) + end + context "restart succeed" do - before(:each) { subject.should_receive(:system).with('touch tmp/restart.txt').and_return(true) } + context 'for Passenger < 4.0.31' do + before(:each) { stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('3') } + before(:each) { subject.should_receive(:system).with('touch tmp/restart.txt').and_return(true) } + + it 'should display a message' do + Guard::UI.should_receive(:info).with("Passenger successfully restarted.") + subject.restart_passenger + end + + it 'should return true if restart succeeds' do + subject.restart_passenger.should be_true + end + end + end + + context 'for Passenger >= 4.0.31' do + before(:each) { stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('5') } + before(:each) { subject.should_receive(:system).with("passenger-config restart-app #{ Dir.getwd }").and_return(true) } it 'should display a message' do Guard::UI.should_receive(:info).with("Passenger successfully restarted.") @@ -120,20 +148,41 @@ end end - context "restart succeed" do - before(:each) { subject.should_receive(:system).with('touch tmp/restart.txt').and_return(false) } - - it 'should display a message' do - Guard::UI.should_receive(:error).with("Passenger failed to restart!") - expect { - quietly { subject.restart_passenger } - }.to throw_symbol(:task_has_failed) + context "restart failed" do + context 'for Passenger < 4.0.31' do + before(:each) { stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('3') } + before(:each) { subject.should_receive(:system).with('touch tmp/restart.txt').and_return(false) } + + it 'should display a message' do + Guard::UI.should_receive(:error).with("Passenger failed to restart!") + expect { + quietly { subject.restart_passenger } + }.to throw_symbol(:task_has_failed) + end + + it 'should return false if restart fails' do + expect { + quietly { subject.restart_passenger.should be_false } + }.to throw_symbol(:task_has_failed) + end end - it 'should return false if restart fails' do - expect { - quietly { subject.restart_passenger.should be_false } - }.to throw_symbol(:task_has_failed) + context 'for Passenger >= 4.0.31' do + before(:each) { stub_const 'Guard::Passenger::Runner::PASSENGER_VERSION', Gem::Version.new('5') } + before(:each) { subject.should_receive(:system).with("passenger-config restart-app #{ Dir.getwd }").and_return(false) } + + it 'should display a message' do + Guard::UI.should_receive(:error).with("Passenger failed to restart!") + expect { + quietly { subject.restart_passenger } + }.to throw_symbol(:task_has_failed) + end + + it 'should return false if restart fails' do + expect { + quietly { subject.restart_passenger.should be_false } + }.to throw_symbol(:task_has_failed) + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2e75ca6..b45593e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,7 @@ require 'rubygems' require 'guard/passenger' require 'rspec' +require 'rspec/mocks' ENV["GUARD_ENV"] = 'test' @@ -24,4 +25,4 @@ def quietly(&block) ensure $stdout.reopen(orig_stdout) end -end \ No newline at end of file +end From 95d8c8105a7fd8391feb421914a26099b569eb24 Mon Sep 17 00:00:00 2001 From: Fabio Kuhn Date: Mon, 11 Aug 2014 17:33:07 -0400 Subject: [PATCH 2/2] Update Changelog and bump version number --- .gitignore | 1 + CHANGELOG.rdoc | 10 +++++++++- lib/guard/passenger/version.rb | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 68a69b9..da35c06 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ pkg/* *.gem .bundle Gemfile.lock +.ruby-version .rvmrc ## MAC OS diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index c8be7a1..49864a4 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -1,3 +1,11 @@ +== 0.6.0, (Aug 1, 2014) + +Features: + - Faster restart for newer Passenger versions with passenger-config restart-app $PWD [by phyllisstein] + +Fixes: + - Corrects small typo in cli_stop. [by phyllisstein] + == 0.5.0, (May 31, 2012) Changes: @@ -43,4 +51,4 @@ Changes: Features: - Add touching - - Activate Passenger standalone by default \ No newline at end of file + - Activate Passenger standalone by default diff --git a/lib/guard/passenger/version.rb b/lib/guard/passenger/version.rb index ce6437b..86da17a 100644 --- a/lib/guard/passenger/version.rb +++ b/lib/guard/passenger/version.rb @@ -1,5 +1,5 @@ module Guard module PassengerVersion - VERSION = '0.5.0' + VERSION = '0.6.0' end -end \ No newline at end of file +end