diff --git a/Gemfile.lock b/Gemfile.lock index 778951f..439db35 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,11 +49,11 @@ GEM rack-test (>= 0.5.4) selenium-webdriver (~> 2.0) xpath (~> 1.0.0) - childprocess (0.3.9) + childprocess (0.5.6) ffi (~> 1.0, >= 1.0.11) diff-lcs (1.1.3) erubis (2.7.0) - ffi (1.4.0) + ffi (1.9.8) hike (1.2.1) i18n (0.6.1) journey (1.0.4) @@ -63,7 +63,7 @@ GEM mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.21) - multi_json (1.7.1) + multi_json (1.11.0) nokogiri (1.5.8) polyglot (0.3.3) rack (1.4.5) @@ -101,12 +101,12 @@ GEM rspec-expectations (2.10.0) diff-lcs (~> 1.1.3) rspec-mocks (2.10.1) - rubyzip (0.9.9) - selenium-webdriver (2.31.0) - childprocess (>= 0.2.5) + rubyzip (1.1.7) + selenium-webdriver (2.45.0) + childprocess (~> 0.5) multi_json (~> 1.0) - rubyzip - websocket (~> 1.0.4) + rubyzip (~> 1.0) + websocket (~> 1.0) sinatra (1.4.6) rack (~> 1.4) rack-protection (~> 1.4) @@ -130,7 +130,7 @@ GEM tzinfo (0.3.34) vegas (0.1.11) rack (>= 1.0.0) - websocket (1.0.7) + websocket (1.2.2) xpath (1.0.0) nokogiri (~> 1.3) diff --git a/lib/beanstalkd_view/beanstalkd_utils.rb b/lib/beanstalkd_view/beanstalkd_utils.rb index 655525e..48187e4 100644 --- a/lib/beanstalkd_view/beanstalkd_utils.rb +++ b/lib/beanstalkd_view/beanstalkd_utils.rb @@ -82,7 +82,7 @@ def guess_max_peek_range(min) (min+GUESS_PEEK_RANGE)-1 end - def close_connections + def close_connection begin beanstalk.close rescue Beaneater::NotConnected diff --git a/lib/beanstalkd_view/server.rb b/lib/beanstalkd_view/server.rb index ac774e8..4e3aad5 100644 --- a/lib/beanstalkd_view/server.rb +++ b/lib/beanstalkd_view/server.rb @@ -27,7 +27,7 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end @@ -48,29 +48,32 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end - get "/tube/:tube" do + get "/tube/*" do begin - @tube = beanstalk.tubes[params[:tube]] + @tube = beanstalk.tubes[params[:splat].first] @stats = @tube.stats erb :tube_stats rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end - get "/peek/:tube/:type" do + get "/peek/*" do content_type :json + parts = params[:splat].first.split('/') + tube = parts[0...-1].join('/') + type = parts.last begin - tube = beanstalk.tubes[params[:tube]] - response = tube.peek(params[:type]) + tube = beanstalk.tubes[tube] + response = tube.peek(type) if response job_to_hash(response).to_json else @@ -79,7 +82,7 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error { :error => @error.to_s }.to_json rescue Beaneater::NotConnected => @error - close_connections + close_connection { :error => @error.to_s }.to_json end end @@ -112,28 +115,31 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end - get "/delete/:tube/:job_id" do + get "/delete/*" do + parts = params[:splat].first.split('/') + tube = parts[0...-1].join('/') + job_id = parts.last begin response = nil - job = beanstalk.jobs.find(params[:job_id].to_i) + job = beanstalk.jobs.find(job_id.to_i) raise Beaneater::NotFoundError.new("Job not found with specified id", 'find') if job.nil? response = job.delete if response - cookies[:beanstalkd_view_notice] = "Deleted Job #{params[:job_id]}" - redirect url("/tube/#{escaped_tube_param}") + cookies[:beanstalkd_view_notice] = "Deleted Job #{job_id}" + redirect url("/tube/#{escaped_tube_param(tube)}") else - cookies[:beanstalkd_view_notice] = "Error deleting Job #{params[:job_id]}" - redirect url("/tube/#{escaped_tube_param}") + cookies[:beanstalkd_view_notice] = "Error deleting Job #{job_id}" + redirect url("/tube/#{escaped_tube_param(tube)}") end rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end @@ -152,7 +158,7 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end @@ -173,7 +179,7 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end @@ -193,7 +199,7 @@ class Server < Sinatra::Base rescue Beaneater::NotFoundError => @error erb :error rescue Beaneater::NotConnected => @error - close_connections + close_connection erb :error end end @@ -205,8 +211,8 @@ def url_path(*path_parts) private - def escaped_tube_param - CGI::escape(params[:tube]) + def escaped_tube_param(tube = nil) + CGI::escape(tube || params[:tube]) end def path_prefix diff --git a/spec/support/queue_browser_shared_examples.rb b/spec/support/queue_browser_shared_examples.rb index fe28095..ed78066 100644 --- a/spec/support/queue_browser_shared_examples.rb +++ b/spec/support/queue_browser_shared_examples.rb @@ -40,7 +40,7 @@ end it "should be able to pause a tube", :js => true do - visit "#{site_root}/tube/#{CGI::escape(tube_name)}" + visit "#{site_root}tube/#{CGI::escape(tube_name)}" form = find('#pause_form') form.fill_in 'delay', :with => 1 click_button "Pause" @@ -62,7 +62,7 @@ end it "should be able to clear a tube", :js => true do - visit "#{site_root}/tube/#{CGI::escape(tube_name)}" + visit "#{site_root}tube/#{CGI::escape(tube_name)}" form = find('#clear_form') form.select 'Buried', :from => 'state' click_button "Clear"