diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/dispositions_controller.rb | 21 | ||||
| -rw-r--r-- | app/models/disposition.rb | 1 | ||||
| -rw-r--r-- | app/workers/events_worker.rb | 5 | ||||
| -rw-r--r-- | app/workers/poke.rb | 16 |
4 files changed, 24 insertions, 19 deletions
diff --git a/app/controllers/dispositions_controller.rb b/app/controllers/dispositions_controller.rb index 2e5a1a3..2581d80 100644 --- a/app/controllers/dispositions_controller.rb +++ b/app/controllers/dispositions_controller.rb @@ -26,30 +26,21 @@ class DispositionsController < ApplicationController # POST /dispositions # POST /dispositions.json def create - @disposition = Disposition.new(disposition_params) + Publisher.publish("poke", disposition_params) respond_to do |format| - if @disposition.save - format.html { redirect_to @disposition, notice: 'Disposition was successfully created.' } - format.json { render :show, status: :created, location: @disposition } - else - format.html { render :new } - format.json { render json: @disposition.errors, status: :unprocessable_entity } - end + format.html { redirect_to dispositions_path, notice: 'Disposition was successfully created.' } + format.json { head :no_content } end end # PATCH/PUT /dispositions/1 # PATCH/PUT /dispositions/1.json def update + Publisher.publish("poke", disposition_params) respond_to do |format| - if @disposition.update(disposition_params) - format.html { redirect_to @disposition, notice: 'Disposition was successfully updated.' } - format.json { render :show, status: :ok, location: @disposition } - else - format.html { render :edit } - format.json { render json: @disposition.errors, status: :unprocessable_entity } - end + format.html { redirect_to dispositions_path, notice: 'Disposition was successfully updated.' } + format.json { head :no_content } end end diff --git a/app/models/disposition.rb b/app/models/disposition.rb index 84dae18..1bf43c7 100644 --- a/app/models/disposition.rb +++ b/app/models/disposition.rb @@ -3,6 +3,7 @@ class Disposition < ActiveRecord::Base attr_readonly :fingerprint validates_uniqueness_of :fingerprint + validates_presence_of :fingerprint, :state def to_param fingerprint diff --git a/app/workers/events_worker.rb b/app/workers/events_worker.rb index 3fcb2c8..dc85009 100644 --- a/app/workers/events_worker.rb +++ b/app/workers/events_worker.rb @@ -2,10 +2,7 @@ require 'json' class EventsWorker include Sneakers::Worker - from_queue "worker.events", - threads: 50, - prefetch: 50, - timeout_job_after: 1 + from_queue "worker.events" def work(event_json) logger.info event_json diff --git a/app/workers/poke.rb b/app/workers/poke.rb new file mode 100644 index 0000000..f7142ff --- /dev/null +++ b/app/workers/poke.rb @@ -0,0 +1,16 @@ +require 'json' + +class Poke + include Sneakers::Worker + from_queue "worker.poke" + + def work(json) + attributes = JSON.parse(json) + + disposition = Disposition.find_or_create_by(fingerprint: attributes["fingerprint"]) + disposition.state = attributes["state"] + disposition.save! + + ack! + end +end |
