Giter VIP home page Giter VIP logo

resque-web's Introduction

resque-web

Gem Version Build Status Dependency Status Code Climate Coverage Status

A Rails-based frontend to the Resque job queue system. This provides a similar interface to the existing Sinatra application that comes bundled with Resque, but deploys like a Rails application and leverages Rails conventions for factoring things like controllers, helpers, and views.

NOTICE

Note this is NOT the old sinatra interface that comes with Resque 1-x. This is a new project based on rails. If you have any issues with old web server, please file an issue on the resque project. Note that the sinatra web interface will be gone in Resque 2.0 and this is meant to be the replacement.

More documentation coming soon!

Starting

Resque web is built as a rails engine.

Add it to your gemfile.

gem 'resque-web', require: 'resque_web'

Mount it in your config/routes.rb.

require "resque_web"

MyApp::Application.routes.draw do
  mount ResqueWeb::Engine => "/resque_web"
end

If RAILS_RESQUE_REDIS is set in ENV and is not the empty string, this gem will set Resque.redis equal to ENV['RAILS_RESQUE_REDIS'] in an initializer.

If you need to set a password for your redis server, use this env variable.

RAILS_RESQUE_REDIS_PASSWORD=secure_pass

For info on configuring Resque itself (and accepted values of Resque.redis) see the Configuration section of the Resque README.

Security

You almost certainly want to limit access when using resque-web in production. Using routes constraints is one way to achieve this:

# config/routes.rb

resque_web_constraint = lambda { |request| request.remote_ip == '127.0.0.1' }
constraints resque_web_constraint do
  mount ResqueWeb::Engine => "/resque_web"
end

Another example of a route constraint using the current user when using Devise or another warden based authentication system:

# config/routes.rb
resque_web_constraint = lambda do |request|
  current_user = request.env['warden'].user
  current_user.present? && current_user.respond_to?(:is_admin?) && current_user.is_admin?
end

constraints resque_web_constraint do
  mount ResqueWeb::Engine => "/resque_web"
end

HTTP Basic Authentication

HTTP Basic Authentication is supported out of the box. Simply set the environment variables RESQUE_WEB_HTTP_BASIC_AUTH_USER and RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD to turn it on. If you're using Resque with Heroku run heroku config:set RESQUE_WEB_HTTP_BASIC_AUTH_USER=user RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=secret to get ResqueWeb secured.

Plugins

In the past with the sinatra app it was fairly simple to just monkey-patch the server to add more functionality/tabs. With this rails version you have to write an engine under a specific namespace. Read more in PLUGINS.md.

Existing plugins

Screenshot

Screenshot

Developing

We use Appraisal to test gem across multiple rails version.

To run tests locally you need to install generic dependencies and dependencies for each appraisal version by running:

bundle install
appraisal install

And then you can use following command for testing lib with latest rails version 5.0:

appraisal rails50 rake test

If you want to run tests for all rails version like Travis do check out this library: WWTD.

resque-web's People

Contributors

ajkerr avatar avnercohen avatar begriffs avatar buffym avatar darinkrauss avatar dark-prince avatar dwilkie avatar gabceb avatar glensc avatar grk avatar hbd225 avatar jdatti avatar jeremy avatar jpaas avatar jstenhouse avatar kirillplatonov avatar kpshek avatar marciotrindade avatar martynovs avatar mattgibson avatar maxkwallace avatar mcfiredrill avatar msimkins avatar nickmerwin avatar omarqureshi avatar rafaelfranca avatar reprah avatar steveklabnik avatar tarcieri avatar triptate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

resque-web's Issues

Possible error filtering?

Filtering errors would be awesome for us QA people that keep an eye on these things. Mainly being able to filter by exception type would be wonderful!

failures page 500 error on Rails 5.0.0.rc1

I'm using resque-web 0.0.8 with Rails 5.0.0.rc1. Everything seems to work ok except the failures page which results in this error:

ActionView::Template::Error (Attempting to generate a URL from non-sanitized request parameters! An attacker can inject malicious data into the generated URL, such as changing the host. Whitelist and sanitize passed parameters to be secure.):
    28:     <% end %>
    29:   </ul>
    30: 
    31:   <%= pagination(start: failure_start_at, total: failure_size) unless params[:class] %>
    32: <% end %>

actionpack (5.0.0.rc1) lib/action_dispatch/routing/url_for.rb:176:in `url_for'
actionview (5.0.0.rc1) lib/action_view/routing_url_for.rb:96:in `url_for'
actionview (5.0.0.rc1) lib/action_view/helpers/url_helper.rb:196:in `link_to'
resque-web (0.0.8) app/helpers/resque_web/application_helper.rb:54:in `pagination'
resque-web (0.0.8) app/views/resque_web/failures/index.html.erb:31:in `___sers_jpaas__rvm_gems_ruby_______karma_gems_resque_web_______app_views_resque_web_failures_index_html_erb__510230725911668492_70343140603500'
actionview (5.0.0.rc1) lib/action_view/template.rb:158:in `block in render'
activesupport (5.0.0.rc1) lib/active_support/notifications.rb:166:in `instrument'
actionview (5.0.0.rc1) lib/action_view/template.rb:348:in `instrument'
actionview (5.0.0.rc1) lib/action_view/template.rb:156:in `render'
actionview (5.0.0.rc1) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
actionview (5.0.0.rc1) lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
activesupport (5.0.0.rc1) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.0.rc1) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.0.rc1) lib/active_support/notifications.rb:164:in `instrument'
actionview (5.0.0.rc1) lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
actionview (5.0.0.rc1) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
actionview (5.0.0.rc1) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
actionview (5.0.0.rc1) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
actionview (5.0.0.rc1) lib/action_view/renderer/template_renderer.rb:14:in `render'
actionview (5.0.0.rc1) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (5.0.0.rc1) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (5.0.0.rc1) lib/action_view/rendering.rb:103:in `_render_template'
actionpack (5.0.0.rc1) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (5.0.0.rc1) lib/action_view/rendering.rb:83:in `render_to_body'
actionpack (5.0.0.rc1) lib/action_controller/metal/rendering.rb:52:in `render_to_body'
actionpack (5.0.0.rc1) lib/action_controller/metal/renderers.rb:144:in `render_to_body'
actionpack (5.0.0.rc1) lib/abstract_controller/rendering.rb:26:in `render'
actionpack (5.0.0.rc1) lib/action_controller/metal/rendering.rb:36:in `render'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
activesupport (5.0.0.rc1) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
/Users/jpaas/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/benchmark.rb:308:in `realtime'
activesupport (5.0.0.rc1) lib/active_support/core_ext/benchmark.rb:12:in `ms'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
activerecord (5.0.0.rc1) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:43:in `render'
actionpack (5.0.0.rc1) lib/action_controller/metal/implicit_render.rb:36:in `default_render'
actionpack (5.0.0.rc1) lib/action_controller/metal/basic_implicit_render.rb:4:in `block in send_action'
actionpack (5.0.0.rc1) lib/action_controller/metal/basic_implicit_render.rb:4:in `tap'
actionpack (5.0.0.rc1) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
actionpack (5.0.0.rc1) lib/abstract_controller/base.rb:181:in `process_action'
actionpack (5.0.0.rc1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.0.0.rc1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:126:in `call'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:506:in `block (2 levels) in compile'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:455:in `call'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:101:in `__run_callbacks__'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:750:in `_run_process_action_callbacks'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.rc1) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.0.0.rc1) lib/action_controller/metal/rescue.rb:31:in `process_action'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (5.0.0.rc1) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.0.rc1) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.0.rc1) lib/active_support/notifications.rb:164:in `instrument'
actionpack (5.0.0.rc1) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (5.0.0.rc1) lib/action_controller/metal/params_wrapper.rb:248:in `process_action'
activerecord (5.0.0.rc1) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (5.0.0.rc1) lib/abstract_controller/base.rb:126:in `process'
actionview (5.0.0.rc1) lib/action_view/rendering.rb:30:in `process'
actionpack (5.0.0.rc1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (5.0.0.rc1) lib/action_controller/metal.rb:262:in `dispatch'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/route_set.rb:725:in `call'
railties (5.0.0.rc1) lib/rails/engine.rb:522:in `call'
railties (5.0.0.rc1) lib/rails/railtie.rb:193:in `public_send'
railties (5.0.0.rc1) lib/rails/railtie.rb:193:in `method_missing'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/mapper.rb:17:in `block in <class:Constraints>'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/mapper.rb:46:in `serve'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.0.rc1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.rc1) lib/action_dispatch/routing/route_set.rb:725:in `call'
actionview (5.0.0.rc1) lib/action_view/digestor.rb:12:in `call'
http_accept_language (2.0.5) lib/http_accept_language/middleware.rb:14:in `call'
rack (2.0.0.rc1) lib/rack/etag.rb:25:in `call'
rack (2.0.0.rc1) lib/rack/conditional_get.rb:25:in `call'
rack (2.0.0.rc1) lib/rack/head.rb:12:in `call'
rack (2.0.0.rc1) lib/rack/session/abstract/id.rb:222:in `context'
rack (2.0.0.rc1) lib/rack/session/abstract/id.rb:216:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.0.rc1) lib/active_record/migration.rb:552:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.0.rc1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.1.1) lib/web_console/middleware.rb:131:in `call_app'
web-console (3.1.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.1.1) lib/web_console/middleware.rb:18:in `catch'
web-console (3.1.1) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.0.rc1) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.0.rc1) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.0.rc1) lib/active_support/tagged_logging.rb:70:in `block in tagged'
activesupport (5.0.0.rc1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.0.rc1) lib/active_support/tagged_logging.rb:70:in `tagged'
railties (5.0.0.rc1) lib/rails/rack/logger.rb:24:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.0.rc1) lib/rack/method_override.rb:22:in `call'
rack (2.0.0.rc1) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.0.rc1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.rc1) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.0.rc1) lib/rack/sendfile.rb:111:in `call'
rack-cors (0.4.0) lib/rack/cors.rb:80:in `call'
railties (5.0.0.rc1) lib/rails/engine.rb:522:in `call'
puma (3.4.0) lib/puma/configuration.rb:224:in `call'
puma (3.4.0) lib/puma/server.rb:569:in `handle_request'
puma (3.4.0) lib/puma/server.rb:406:in `process_client'
puma (3.4.0) lib/puma/server.rb:271:in `block in run'
puma (3.4.0) lib/puma/thread_pool.rb:114:in `block in spawn_thread'

API Call to get info

Hi,
is it possible to use some API or call to get info about what can see resque-web ?
Like how many queues (items in the queue) ? How many process ? on which servers ?

Regards,
Eric

ApplicationHelper not loading

I have ResqueWeb mounted in a rails 4.0.0 app. Resque web works for the first few times after the server starts up but quickly after, any class to ApplicationHelper methods throw errors such as:
<%= pagination :start => failure_start_at, :total => failure_size unless params[:class] %>

NoMethodError at /failed

When I access to failed page on resque-web, I got the error below:

undefined methodto_yaml' for 2:Fixnum
file: server.rb location: block in show_args line: 94
`

undefined method `host_with_port' for nil:NilClass

root_pah int the application.html.erb fails and crashes the overview page.

Relevant stacktrace
https://gist.github.com/andrejj/c2c523e82d1e2645126a

Gemfile

gem "resque", "~> 2.0.0.pre.1", github: "resque/resque"
gem "resque-web", :git => 'https://github.com/resque/resque-web.git', :ref => '825e2eb480ec6cd83a12aea1d8820bd0a365007c', require: 'resque_web'

routes.rb

Oma30::Application.routes.draw do
  mount ResqueWeb::Engine => "/resque_web"

layouts/resque_web/application.html.erb

24: <%= link_to "Resque.", ResqueWeb::Engine.app.url_helpers.root_path, :class => "brand" %>

Failures show page does not work with multiple failed queues

Trying to get multiple failed queues to show up on resque-web 0.0.7, i'm using a fork of resque at 1.25.2 with resque/resque#1234 applied to it as the multiple queue failure backend was not functional

In doing so and trying to go to /failures/:id I get the following error:

Showing /mnt/resque-web/app/views/resque_web/failures/show.html.erb where line #3 raised:

undefined method `any?' for nil:NilClass
Extracted source (around line #3):

1. <h1>Failed Jobs <%= "on '#{params[:id]}'" if params[:id] %> <%= "with class '#{params[:class]}'" if params[:class] %></h1>
2.
3. <% if @jobs.any? %>
4.  <%= form_tag("/failures/#{params[:id] if params[:id]}", :method => :delete) do %>
5.    <%= submit_tag "Clear #{params[:id] ? "'#{params[:id]}'" : 'Failed'} Jobs", :confirm => "Are you sure?", :class => 'btn btn-danger' %>
6.  <% end %>

Rails.root: /mnt/resque-web-container

The underlying stack trace looks pretty unhelpful, however, the error makes sense as @jobs is not defined anywhere other than in the workers helper.

What's interesting is that going to /failures?queue=:queue somewhat works, in that extracts the right failed jobs for the right failed queue however the counts are wrong.

I'll be putting together a pull request which emulates the behaviour of the index view with working pagination if that's ok, unless you have a better solution for me to working towards?

add polling back?

The 'live polling' feature in the old web interface was kind of convenient for debugging whether your jobs were being run or not. ๐Ÿ˜ท

Release new version?

Hey there, look, I'm using resque-web again! :O

If I use the released gem, I get the following error:

LoadError: Missing helper file helpers/resque/failure/redis_multi_queue.rb

I do not encounter this problem on master.

Form Code Visible on Page

I deployed resque-web and everything seems to work great, however when viewing a queue page, it shows form html on the page, its the "Clear Pending Jobs" button/form. Is there something wrong somewhere in resque-web or is it on my end, and what info can I give to help diagnose.

Assets not precompiled

Hello,

I just upgraded to 0.0.8 and now cannot access the web interface anymore. I get:

Sprockets::Rails::Helper::AssetNotPrecompiled in ResqueWeb::Overview#show

Showing /home/sebastian/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/resque-web-0.0.8/app/views/layouts/resque_web/application.html.erb where line #41 raised:

Asset was not declared to be precompiled in production.
Add `Rails.application.config.assets.precompile += %w( resque_web/lifebuoy.png )` to `config/initializers/assets.rb` and restart your server

After extending config/initializers/assets.rb with:

Rails.application.config.assets.precompile += %w(resque_web/*.png)

everything works as expected.

What's wrong? Shouldn't the line above be part of resque-web somehow?

better authentication

Routing constraints are ok but I'd like something where I can redirect and show an error message. Perhaps we can provide a hook into ResqueWeb::ApplicationController's before_filters ?

/jobs/failed showing wrong ending job # on header

When listing failing jobs, the upper end of the job range shown in the header is one higher than it should be, due to the header referencing the following:

def failure_end_at
  if failure_start_at + failure_per_page > failure_size
    failure_size
  else
    failure_start_at + failure_per_page
  end
end

Both the pagination and non-pagination cases appear wrong.

Note: This all assumes that the convention of addressing jobs starting with zero is intentional.

plugins

I am actually not using resque-web in all of my apps because I rely on plugins that add tabs to the old web interface. How could plugins be made compatible with the new resque-web? Could they be implemented as small engines? Or is there an easier way?

Can't view failures for a specific class

TypeError in Failures#index

Showing resque-web/app/views/failures/index.html.erb where line #23 raised:

can't convert String into Integer
Extracted source (around line #23):

20: <p class="sub">Showing <%= failure_start_at %> to <%= failure_end_at %> of <b><%= failure_size %></b> jobs</p>
21: 
22: <ul class="failed">
23:   <% each_failure do |id, job| %>
24:     <%= render :partial => 'failed_job', :locals => {:id => id, :job => job} %>
25:   <% end %>
26: </ul>

Rails without Asset Pipeline Bug: Still requires precompile

As noted in comments on #38 (comment) it looks like this gem still requires assets to be pre-compiled locally if you are running rails without sprockets.

In order to get resque web to run I had to add this to my environments/development.rb file:

# This is required for Resque Web
config.assets.compile = true

and this line to my initializers/resque.rb file:

Rails.application.config.assets.precompile += %w(resque_web/*.png) 

Branding

When I started this project I foolishly called it "resque-web" which is the same as the Sinatra app presently embedded in the resque gem.

This has caused some confusion. See eg #34

Perhaps this project needs a different name, if only in the documentation? "resque-web NG"? resque-web 2.0?

Authentication

It'd be good to support some kind of pluggable authentication. I'd ideally like to reuse the authentication from the app we're mounting Resque Web inside of. Perhaps we can provide an API with a proc/block to authenticate a user that returns true/false if they're allowed?

Discuss: Recent Failures

So the /failures will display, in a paged mode, all the failed jobs in a system.
Ordering of items in this list is FIFO and too often what I actually want to see is the Recent failures.

Since the list of items is rather coupled with the Resque api:
https://github.com/resque/resque/blob/v1.24.1/lib/resque/failure/redis.rb#L41
Which goes just forward I am not exactly sure what would be the best way to implement this.

Two approaches I considered as a workaround to ease the pain are:

  • Add an expandable section that will show X recent failures above the current table, will be defaulted to remain hidden.
  • A short cut button that will take you to the last page.

I'd appreciate suggestions for a solution in the spirit of what you guys like to see in resque-web, and if this even makes sense to other users..

Rails 4 Mounting

I don't seem to be able to mount this in a new Rails 4 app,

require "resque_web"

Compare::Application.routes.draw do
  root "application#index"

  resources :products
   mount ResqueWeb::Engine => "/resque_web"
end

image

Misleading Workers view

/workers hostname column is wrong and misleading as it displays worker id instead of hostname

mutiple instances of resque-web and redis

We're currently in transition between a Ruby/RoR 1.9/3.2 and a rewritten 2.0/4.0 app on the same server. Since I don't want to mess with the current resque configuration and risk updating any gems that might break production, I elected to setup a separate Redis server on a new port and use the newest version of Resque with it. Resque appears to be running fine; if I manually launch a worker rake resque:work QUEUE='*' and watch the process it runs a queued job from resque-scheduler. However the worker does not show up in resque-web. The stats page of resque-web shows it's looking at the second redis instance. I haven't found anything nor received any answers on stack overflow in the last month and so am escalating. Feel free to let me know what idiotic thing I'm missing (outside of installing two instances on one server; I already know that's idiotic).

/config/initializers/resque.rb on 2.0/4.0.1:

    require 'resque_scheduler'
    rails_root = ENV["RAILS_ROOT"] || File.dirname(__FILE__) + "/../.."
    rails_env = ENV["RAILS_ENV"] || "demo"
    resque_config = YAML.load_file(rails_root + "/config/resque.yml")
    Resque.redis = resque_config[rails_env]
    Resque.redis.namespace = "resque-reos:#{rails_env}"

/config/resque.yml on 2.0/4.0.1

    demo: localhost:6380

Gemfile.lock on 2.0/4.0.1 server:

    resque (1.25.1)
      mono_logger (~> 1.0)
      multi_json (~> 1.0)
      redis-namespace (~> 1.2)
      sinatra (>= 0.9.2)
      vegas (~> 0.1.2)
    resque-scheduler (2.3.1)
      redis (>= 3.0.0)
      resque (~> 1.25)
      rufus-scheduler (~> 2.0)

Gemfile.lock on 1.9.3/3.2.12 server

    resque (1.23.0)
      multi_json (~> 1.0)
      redis-namespace (~> 1.0)
      sinatra (>= 0.9.2)
      vegas (~> 0.1.2)
    resque-lock (1.0.0)
    resque-scheduler (2.0.0)
      redis (>= 2.0.1)
      resque (>= 1.20.0)
      rufus-scheduler 

Switching to semver

@mcfiredrill What do you think about switching this project to semver? I think it will be useful for everybody who use this project in production.

resque-web do not show failed jobs

I just gem install resque-web and try to put some jobs to queue 'default', resque-web is good to show me how many jobs was processed in the queue, but I can't see any filed jobs even through I put a wrong class job to the queue on purpose.

This is my resque-web panel:

screen shot 2015-04-24 at 2 02 37 am

And the tab of stats
screen shot 2015-04-24 at 2 05 13 am

No failed jobs... but actually my redis server show me there are truly failed jobs.
screen shot 2015-04-24 at 2 06 15 am

screen shot 2015-04-24 at 2 06 25 am

It's very thankful if anyone can give me some advices.

thanks

NoMethodError on GET /failed


NoMethodError at /failed
undefined method `to_yaml' for {"pid_range"=>"processor-test-fixture1:699938201223"}:Hash

    file: server.rb
    location: block in show_args
    line: 94

BACKTRACE

(expand)

JUMP TO: GET POST COOKIES ENV

    /Users/justin/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb in service
        si.service(req, res)
    /Users/justin/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb in run
        server.service(req, res)
    /Users/justin/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb in block in start_thread
        block ? block.call(sock) : run(sock)

GET

No GET data.
POST

No POST data.
COOKIES

No cookie data.

License missing from gemspec

RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.

via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can imagine, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.

There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.

I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!

Appendix:

If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies

p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post about this project for more information.

Assets

After I deploy resque-web to Heroku and visit resque-web I get the following errors.

ActionController::RoutingError (No route matches [GET] "/images/working.png"):

I can see that the assets are in https://github.com/resque/resque-web/tree/master/app/assets/images/resque_web but I wonder if something else needs to be configured in the Engine config itself. E.g. http://guides.rubyonrails.org/asset_pipeline.html#adding-assets-to-your-gems

I don't have much experience with Engines myself just wondering if anyone knows what could be the problem here.

redis authentication

Hello, I'm trying to get this newer version of the application working, however I'm having a tough time finding how to add a password for redis authentication. previously I had added the following(below) to the /config/environment.rb to override values. Can you help point me in the right direction?
Resque.redis = Redis.new(:host => "redis.server.local", :port => 6379, :password => "foo")

Annoying message on app startup

Every time the Rails environment is loaded (including e.g. running rake tasks) the following message is displayed:

"Starting resque-web against Resque server - 127.0.0.1:6379"

This is annoying and not particularly helpful. I think it should probably just be removed.

Navigation menu are not highlighting when clicking

Navigation menu are not highlighting when clicking a specific link (ex. Overview, Working, Failures, etc.). This is the screen shoot of my screen.

I used resque-web master branch with twitter bootstrap 2. Please solve it.

Error from Twitter Bootstrap

Showing /Users/sookcha/.rvm/gems/ruby-2.1.2/gems/resque-web-0.0.5/app/views/layouts/resque_web/application.html.erb where line #9 raised:

couldn't find file 'poll.png'
  (in /Users/sookcha/.rvm/gems/ruby-2.1.2/gems/resque-web-0.0.5/app/assets/stylesheets/resque_web/bootstrap_and_overrides.css.scss)
Extracted source (around line #9):
6 <meta name="description" content="">
7  <meta name="viewport" content="width=device-width">
8  <title>Resque.</title>
9   <%= stylesheet_link_tag    "resque_web/application", :media => "all" %>
10 <%= javascript_include_tag "resque_web/application" %>
11 <%= csrf_meta_tags %>
12  </head>

What is wrong?

undefined method 'poll'

I get this error very frequently just going to localhost:3000/resque and I have to restart the app. Once it is restarted, that webpage works again.

Showing /usr/local/rvm/gems/ruby-2.1.2@cfs-web/gems/resque-web-0.0.6/app/views/resque_web/overview/show.html.erb where line #4 raised:

undefined method `poll' for #<#<Class:0x000000077cf6d0>:0x000000077ce208>
Extracted source (around line #4):

1: <%= render 'resque_web/queues/queues' %>
2: <hr>
3: <%= render 'resque_web/working/working' %>
4: <%= poll(polling) %>

could use some help maintaining this project!

I volunteered to take over this project some time ago. I turned it into a ruby-engine and released it as a Gem.

Unfortunately approximately 0 of my current projects even use Resque anymore. :(

I don't want the people who are using this project or other Resque projects to suffer, I feel like the best thing for me to do now is to ask for help.

Is there anyone willing to help out?
Also @tarcieri who originally gave me commit access, what do you think about giving additional people commit access?

No such file to load -- resque_web/application_controller

When I deploy an application that uses resque-web 0.0.7 in production mode I get the following error.

 Message from application: No such file to load -- resque_web/application_controller (LoadError)
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:360:in `require_or_load'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:317:in `depend_on'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:233:in `require_dependency'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:471:in `each'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:471:in `block in eager_load!'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:469:in `each'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:469:in `eager_load!'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/engine.rb:346:in `eager_load!'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `each'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:55:in `block in run_initializers'
  /usr/local/lib/ruby/2.2.0/tsort.rb:226:in `block in tsort_each'
  /usr/local/lib/ruby/2.2.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
  /usr/local/lib/ruby/2.2.0/tsort.rb:429:in `each_strongly_connected_component_from'
  /usr/local/lib/ruby/2.2.0/tsort.rb:347:in `block in each_strongly_connected_component'
  /usr/local/lib/ruby/2.2.0/tsort.rb:345:in `each'
  /usr/local/lib/ruby/2.2.0/tsort.rb:345:in `call'
  /usr/local/lib/ruby/2.2.0/tsort.rb:345:in `each_strongly_connected_component'
  /usr/local/lib/ruby/2.2.0/tsort.rb:224:in `tsort_each'
  /usr/local/lib/ruby/2.2.0/tsort.rb:203:in `tsort_each'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:54:in `run_initializers'
  /opt/goldenseal/shared/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/application.rb:352:in `initialize!'
  /opt/goldenseal/releases/20160104213118/config/environment.rb:5:in `<top (required)>'
  config.ru:3:in `require'

I can achieve the same effect by generating a new application, adding resque-web to the gemfile, running bundle install, then rails console and entering:

require 'resque_web'
=> true
irb(main):003:0> ResqueWeb::Engine.eager_load!
LoadError: No such file to load -- resque_web/application_controller
...

Navigations links are missing

Here's my panel:

screen shot 2015-10-29 at 2 21 39 pm

The nav links are actually there if I inspect the header, but they don't show. Looks like a CSS issue.

Is anyone still working on this project?

why does the travis ci badge say "unaccessible"

If you actually go to the build page, the build is totally passing. I'm not sure whats wrong with the badge code.

[![Build Status](https://img.shields.io/travis/resque/resque_web/master.svg)](https://travis-ci.org/resque/resque-web)

Retry from failure doesn't trigger after_enqueue hook

I noticed that if I retry a job from the failure queue with the Retry button, the after_enqueue hook is not executed.
I don't know if this is intended or it's a bug or resque / resque-web.
IMHO, it should trigger all the hooks relative to the queue.

Tabs not present

Hi,

I can't show any tabs in resque-web
capture decran 2014-08-13 a 08 26 13

If I inspect code, tabs is present, but like in mobile version. I find the link to roll the menu (this button is in black on black)

capture d ecran 2014-08-13 a 08 26 23

Can I have a conflict with other CSS ?

I use resque-web 'master' or the last stable version

schedule view doesn't update on scheduled job removal

I am using dynamic loading.
When browsing to the /schedule I can see job scheduled.
But then I remove specific job from the scheduled queue it is not removed from the /schedule view.
Only after restart of the web service the job disappears

Sprockets::FileNotFound in ResqueWeb::Overview#show :: couldn't find file 'poll.png'

Ruby 2.1.1
Rails 4.1.4
Resque 1.25.1
Resque-Web 0.0.5

This is in the development environment.

Any direction here would be appreciated, as I'm more than happy to make a PR if this is not something on my end.

Error:

couldn't find file 'poll.png'
  (in /home/jph/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/resque-web-0.0.5/app/assets/stylesheets/resque_web/bootstrap_and_overrides.css.scss)

Offending line:

     <%= stylesheet_link_tag    "resque_web/application", :media => "all" %>

Full trace:

sprockets (2.11.0) lib/sprockets/base.rb:153:in `resolve'
sprockets (2.11.0) lib/sprockets/context.rb:108:in `resolve'
sprockets (2.11.0) lib/sprockets/context.rb:119:in `depend_on'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:174:in `check_dependencies!'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:66:in `compute_asset_path'
actionview (4.1.4) lib/action_view/helpers/asset_url_helper.rb:132:in `asset_path'
actionview (4.1.4) lib/action_view/helpers/asset_url_helper.rb:281:in `image_path'
sprockets (2.11.0) lib/sprockets/sass_functions.rb:18:in `image_url'
sass (3.2.19) lib/sass/script/funcall.rb:113:in `_perform'
sass (3.2.19) lib/sass/script/node.rb:40:in `perform'
sass (3.2.19) lib/sass/script/funcall.rb:99:in `block in _perform'
sass (3.2.19) lib/sass/script/funcall.rb:99:in `map'
sass (3.2.19) lib/sass/script/funcall.rb:99:in `_perform'
sass (3.2.19) lib/sass/script/node.rb:40:in `perform'
sass (3.2.19) lib/sass/script/list.rb:71:in `block in _perform'
sass (3.2.19) lib/sass/script/list.rb:71:in `map'
sass (3.2.19) lib/sass/script/list.rb:71:in `_perform'
sass (3.2.19) lib/sass/script/node.rb:40:in `perform'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:298:in `visit_prop'
sass (3.2.19) lib/sass/tree/visitors/base.rb:37:in `visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:100:in `visit'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `map'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `visit_children'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:121:in `with_environment'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:108:in `visit_children'
sass (3.2.19) lib/sass/tree/visitors/base.rb:37:in `block in visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:320:in `visit_rule'
sass (3.2.19) lib/sass/tree/visitors/base.rb:37:in `visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:100:in `visit'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `map'
sass (3.2.19) lib/sass/tree/visitors/base.rb:53:in `visit_children'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:121:in `with_environment'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:108:in `visit_children'
sass (3.2.19) lib/sass/tree/visitors/base.rb:37:in `block in visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:128:in `visit_root'
sass (3.2.19) lib/sass/tree/visitors/base.rb:37:in `visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:100:in `visit'
sass (3.2.19) lib/sass/tree/visitors/perform.rb:7:in `visit'
sass (3.2.19) lib/sass/tree/root_node.rb:20:in `render'
sass (3.2.19) lib/sass/engine.rb:315:in `_render'
sass (3.2.19) lib/sass/engine.rb:262:in `render'
sass-rails (4.0.3) lib/sass/rails/template.rb:22:in `evaluate'
tilt (1.4.1) lib/tilt/template.rb:103:in `render'
sprockets (2.11.0) lib/sprockets/context.rb:197:in `block in evaluate'
sprockets (2.11.0) lib/sprockets/context.rb:194:in `each'
sprockets (2.11.0) lib/sprockets/context.rb:194:in `evaluate'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:12:in `initialize'
sprockets (2.11.0) lib/sprockets/base.rb:374:in `new'
sprockets (2.11.0) lib/sprockets/base.rb:374:in `block in build_asset'
sprockets (2.11.0) lib/sprockets/base.rb:395:in `circular_call_protection'
sprockets (2.11.0) lib/sprockets/base.rb:373:in `build_asset'
sprockets (2.11.0) lib/sprockets/index.rb:94:in `block in build_asset'
sprockets (2.11.0) lib/sprockets/caching.rb:58:in `cache_asset'
sprockets (2.11.0) lib/sprockets/index.rb:93:in `build_asset'
sprockets (2.11.0) lib/sprockets/base.rb:287:in `find_asset'
sprockets (2.11.0) lib/sprockets/index.rb:61:in `find_asset'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:111:in `block in resolve_dependencies'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:105:in `each'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:105:in `resolve_dependencies'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:97:in `build_required_assets'
sprockets (2.11.0) lib/sprockets/processed_asset.rb:16:in `initialize'
sprockets (2.11.0) lib/sprockets/base.rb:374:in `new'
sprockets (2.11.0) lib/sprockets/base.rb:374:in `block in build_asset'
sprockets (2.11.0) lib/sprockets/base.rb:395:in `circular_call_protection'
sprockets (2.11.0) lib/sprockets/base.rb:373:in `build_asset'
sprockets (2.11.0) lib/sprockets/index.rb:94:in `block in build_asset'
sprockets (2.11.0) lib/sprockets/caching.rb:58:in `cache_asset'
sprockets (2.11.0) lib/sprockets/index.rb:93:in `build_asset'
sprockets (2.11.0) lib/sprockets/base.rb:287:in `find_asset'
sprockets (2.11.0) lib/sprockets/index.rb:61:in `find_asset'
sprockets (2.11.0) lib/sprockets/bundled_asset.rb:16:in `initialize'
sprockets (2.11.0) lib/sprockets/base.rb:377:in `new'
sprockets (2.11.0) lib/sprockets/base.rb:377:in `build_asset'
sprockets (2.11.0) lib/sprockets/index.rb:94:in `block in build_asset'
sprockets (2.11.0) lib/sprockets/caching.rb:58:in `cache_asset'
sprockets (2.11.0) lib/sprockets/index.rb:93:in `build_asset'
sprockets (2.11.0) lib/sprockets/base.rb:287:in `find_asset'
sprockets (2.11.0) lib/sprockets/index.rb:61:in `find_asset'
sprockets (2.11.0) lib/sprockets/environment.rb:75:in `find_asset'
sprockets (2.11.0) lib/sprockets/base.rb:295:in `[]'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:214:in `lookup_asset_for_path'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:182:in `check_errors_for'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:156:in `block in stylesheet_link_tag'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:155:in `map'
sprockets-rails (2.1.3) lib/sprockets/rails/helper.rb:155:in `stylesheet_link_tag'
resque-web (0.0.5) app/views/layouts/resque_web/application.html.erb:9:in `__home_james__rbenv_versions_______lib_ruby_gems_______gems_resque_web_______app_views_layouts_resque_web_application_html_erb___4207381482870245977_23474880594800'
actionview (4.1.4) lib/action_view/template.rb:145:in `block in render'
activesupport (4.1.4) lib/active_support/notifications.rb:161:in `instrument'
actionview (4.1.4) lib/action_view/template.rb:339:in `instrument'
actionview (4.1.4) lib/action_view/template.rb:143:in `render'
actionview (4.1.4) lib/action_view/renderer/template_renderer.rb:67:in `render_with_layout'
actionview (4.1.4) lib/action_view/renderer/template_renderer.rb:53:in `render_template'
actionview (4.1.4) lib/action_view/renderer/template_renderer.rb:17:in `render'
actionview (4.1.4) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (4.1.4) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (4.1.4) lib/action_view/rendering.rb:99:in `_render_template'
actionpack (4.1.4) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (4.1.4) lib/action_view/rendering.rb:82:in `render_to_body'
actionpack (4.1.4) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
actionpack (4.1.4) lib/action_controller/metal/renderers.rb:32:in `render_to_body'
actionpack (4.1.4) lib/abstract_controller/rendering.rb:25:in `render'
actionpack (4.1.4) lib/action_controller/metal/rendering.rb:16:in `render'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render'
activesupport (4.1.4) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
/home/james/.rbenv/versions/2.1.1/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'
activesupport (4.1.4) lib/active_support/core_ext/benchmark.rb:12:in `ms'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:41:in `block in render'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime'
activerecord (4.1.4) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:40:in `render'
resque-web (0.0.5) app/controllers/resque_web/overview_controller.rb:4:in `show'
actionpack (4.1.4) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.1.4) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.1.4) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.1.4) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:86:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:86:in `run_callbacks'
actionpack (4.1.4) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.1.4) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.1.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.1.4) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.1.4) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.1.4) lib/abstract_controller/base.rb:136:in `process'
actionview (4.1.4) lib/action_view/rendering.rb:30:in `process'
actionpack (4.1.4) lib/action_controller/metal.rb:196:in `dispatch'
actionpack (4.1.4) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.1.4) lib/action_controller/metal.rb:232:in `block in action'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:82:in `call'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:50:in `call'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:678:in `call'
railties (4.1.4) lib/rails/engine.rb:514:in `call'
railties (4.1.4) lib/rails/railtie.rb:194:in `public_send'
railties (4.1.4) lib/rails/railtie.rb:194:in `method_missing'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:678:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/flash.rb:254:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.1.4) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.1.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
activerecord (4.1.4) lib/active_record/migration.rb:380:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.1.4) lib/active_support/callbacks.rb:82:in `run_callbacks'
actionpack (4.1.4) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.1.4) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.1.4) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.1.4) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/static.rb:64:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.1.4) lib/rails/engine.rb:514:in `call'
railties (4.1.4) lib/rails/application.rb:144:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/home/jph/.rbenv/versions/2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
/home/jph/.rbenv/versions/2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
/home/jph/.rbenv/versions/2.1.1/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

api for failures,stats,etc

I recently learned there is a /stats.txt route in the old resque web server, its used by a hubot resque script. It might be nice to bring this back and include additional API endpoints like /faliures.txt etc, and maybe just use a json format.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.