diff options
| -rw-r--r-- | app/controllers/events_controller.rb | 29 | ||||
| -rw-r--r-- | app/services/publisher.rb | 16 | ||||
| -rw-r--r-- | config/routes.rb | 56 |
3 files changed, 27 insertions, 74 deletions
diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 63ca73d..f5b7b0c 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -24,17 +24,8 @@ class EventsController < ApplicationController # POST /events # POST /events.json def create - @event = Event.new(event_params) - - respond_to do |format| - if @event.save - format.html { redirect_to @event, notice: 'Event was successfully created.' } - format.json { render :show, status: :created, location: @event } - else - format.html { render :new } - format.json { render json: @event.errors, status: :unprocessable_entity } - end - end + Publisher.publish("events", event_params) + redirect_to events_path, notice: 'Event was successfully created.' end # PATCH/PUT /events/1 @@ -62,13 +53,13 @@ class EventsController < ApplicationController end private - # Use callbacks to share common setup or constraints between actions. - def set_event - @event = Event.find(params[:id]) - end + # Use callbacks to share common setup or constraints between actions. + def set_event + @event = Event.find(params[:id]) + end - # Never trust parameters from the scary internet, only allow the white list through. - def event_params - params.require(:event).permit(:name, :data) - end + # Never trust parameters from the scary internet, only allow the white list through. + def event_params + params.require(:event).permit(:name, :data) + end end diff --git a/app/services/publisher.rb b/app/services/publisher.rb new file mode 100644 index 0000000..ef940e8 --- /dev/null +++ b/app/services/publisher.rb @@ -0,0 +1,16 @@ +class Publisher + def self.publish(exchange, message = {}) + exchange = channel.fanout("malwer.#{exchange}") + exchange.publish(message.to_json) + end + + def self.channel + @channel ||= connection.create_channel + end + + def self.connection + @connection ||= Bunny.new.tap do |connection| + connection.start + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 4aca907..be45f8d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,58 +1,4 @@ Rails.application.routes.draw do resources :events - - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". - - # You can have the root of your site routed with "root" - # root 'welcome#index' - - # Example of regular route: - # get 'products/:id' => 'catalog#view' - - # Example of named route that can be invoked with purchase_url(id: product.id) - # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase - - # Example resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Example resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Example resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Example resource route with more complex sub-resources: - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', on: :collection - # end - # end - - # Example resource route with concerns: - # concern :toggleable do - # post 'toggle' - # end - # resources :posts, concerns: :toggleable - # resources :photos, concerns: :toggleable - - # Example resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end + root 'events#index' end |
