add cable but not complete

This commit is contained in:
Yan
2017-05-30 19:02:40 +06:30
parent c7a4adc7cc
commit e46fe1ec7c
12 changed files with 90 additions and 10 deletions

View File

@@ -11,6 +11,10 @@ gem 'rails', '~> 5.1.0'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
#gem 'pg'
# redis server for cable
gem 'redis', '~> 3.0'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets

View File

@@ -48,9 +48,9 @@ GEM
sass (>= 3.4.19)
builder (3.2.3)
byebug (9.0.6)
coffee-rails (4.2.1)
coffee-rails (4.2.2)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.2.x)
railties (>= 4.0.0)
coffee-script (2.4.1)
coffee-script-source
execjs
@@ -97,7 +97,7 @@ GEM
minitest (5.10.2)
multi_json (1.12.1)
mysql2 (0.4.6)
nio4r (2.0.0)
nio4r (2.1.0)
nokogiri (1.7.2)
mini_portile2 (~> 2.1.0)
pdf-core (0.7.0)
@@ -238,6 +238,7 @@ DEPENDENCIES
puma (~> 3.0)
rack-cors
rails (~> 5.1.0)
redis (~> 3.0)
rspec-rails (~> 3.5)
sass-rails (~> 5.0)
schema_to_scaffold
@@ -255,4 +256,4 @@ DEPENDENCIES
web-console (>= 3.3.0)
BUNDLED WITH
1.14.6
1.15.0

View File

@@ -1,5 +1,5 @@
// Action Cable provides the framework to deal with WebSockets in Rails.
// You can generate new channels where WebSocket features live using the rails generate channel command.
// You can generate new channels where WebSocket features live using the `rails generate channel` command.
//
//= require action_cable
//= require_self

View File

@@ -0,0 +1,24 @@
App.order_queue_station = App.cable.subscriptions.create("OrderQueueStationChannel", {
connected: function() {},
disconnected: function() {},
received: function(message) {
alert(message);
},
order: function(message) {
return this.perform('order', {
message: message
});
}
});
// $(function(){
// $("#submit_order").on('click', function(event) {
// var orderData=$("#new_order").serializeObject();
// App.order_station.order(orderData);
// //orderData='';
// return event.preventDefault();
// });
// });

View File

@@ -1,4 +1,14 @@
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
class Channel < ActionCable::Channel::Base
end
# Order Queue Station Channel
class OrderChannel < ActionCable::Channel::Base
end
# Order Queue Station Channel
class OQSChannel < ActionCable::Channel::Base
end
end

View File

@@ -0,0 +1,13 @@
class OrderQueueStationChannel < ApplicationCable::Channel
def subscribed
stream_from "order_queue_station_channel"
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
def order(message)
# ToDo
end
end

View File

@@ -0,0 +1,8 @@
class OrderBroadcastJob < ApplicationJob
queue_as :default
def perform(message)
order = Order.find(message) # message come as order_id
ApplicationCable.server.broadcast "order_queue_station_channel", order: order
end
end

View File

@@ -3,8 +3,9 @@ class OrderQueueProcessorJob < ApplicationJob
def perform(order_id)
# Do something later
#Order ID
#Order ID
order = Order.find(order_id)
#Loop through the order stations and process the items
#Execute orders and send to order stations
if order

View File

@@ -8,7 +8,6 @@ class Order < ApplicationRecord
#internal references attributes for business logic control
attr_accessor :items, :guest, :table_id, :new_booking, :booking_type, :employee_name, :booking_id
#Main Controller method to create new order - validate all inputs and generate new order
# order_item : {
# order_item_code : "",
@@ -43,6 +42,9 @@ class Order < ApplicationRecord
#Send order to queue one it done!
process_order_queue
#send order to broadcast job
send_order_broadcast
return true, booking
end
@@ -198,7 +200,13 @@ class Order < ApplicationRecord
#Process order items and send to order queue
def process_order_queue
#Send to background job for processing
#Send to background job for processing
OrderQueueProcessorJob.perform_later(self.id)
end
#send order items and send to order queue
def send_order_broadcast
#Send to background job for processing
OrderBroadcastJob.perform_later(self.id)
end
end

View File

@@ -51,4 +51,7 @@ Rails.application.configure do
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
# Set Cable URL
config.action_cable.url = "ws://192.168.1.140:3002/cable"
end

View File

@@ -5,6 +5,9 @@ Rails.application.routes.draw do
root 'home#index'
mount Sidekiq::Web => '/kiq'
# Action Cable Creation
mount ActionCable.server => "/cable"
#--------- SmartSales Installation ------------#
get 'install' => 'install#index'
post 'install' => 'install#create'

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe OrderBroadcastJob, type: :job do
pending "add some examples to (or delete) #{__FILE__}"
end