seller_dashboard_message_publisher 0.1.3-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # SellerDashboard Message Publisher
2
+
3
+ Testing tool to publish messages to a private Manheim queue (such as Tibco)
4
+
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'seller_dashboard_message_publisher'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install seller_dashboard_message_publisher
21
+
22
+ Then in the Sellerdashboard, add change the config.ru file:
23
+
24
+ ```ruby
25
+ # This file is used by Rack-based servers to start the application.
26
+
27
+ require ::File.expand_path('../config/environment', __FILE__)
28
+ require 'seller_dashboard_message_publisher'
29
+
30
+ app = Rack::Builder.new do
31
+ map '/publisher' do
32
+ run SellerDashboardMessagePublisher::App.new
33
+ end
34
+
35
+ map '/' do
36
+ run Rails.application
37
+ end
38
+ end
39
+
40
+ run app
41
+ ```
42
+
43
+ Once you start up the app, it will be accessible at the '/publisher' path
44
+
45
+ ## Usage
46
+
47
+ FIXME: Current usage is broken because the java jars are not being imported properly
48
+
49
+ ## Development
50
+
51
+ After checking out the repo, run `bin/setup` to install dependencies.
52
+
53
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
54
+
55
+ ## Contributing
56
+
57
+ 1. Fork it ( http://github.ove.local/aokpokowur/seller_dashboard_message_publisher/fork )
58
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
59
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
60
+ 4. Push to the branch (`git push origin my-new-feature`)
61
+ 5. Create a new Pull Request
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "seller_dashboard_message_publisher"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,99 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Generic script for running ruby scripts as daemons using
8
+ # jsvc and a java class to control the daemon.
9
+
10
+ # Things you'll need to set on a per script/daemon basis:
11
+ # SCRIPT_NAME - Path to the ruby script which creates a Daemon
12
+ # object for jsvc to control
13
+ # APP_NAME - Name of your application
14
+ # MODULE_NAME
15
+ # JRUBY_JSVC_JAR
16
+ # DAEMON_JAR
17
+ # Things you can set:
18
+ # PROG_OPTS - Arguments to send to the program. A few defaults are appended to this.
19
+
20
+ export JRUBY_DAEMON_DEV=true
21
+ export SCRIPT_NAME=bin/wrapper
22
+ export MODULE_NAME="SellerDashboardMessagePublisher"
23
+ export JRUBY_JSVC_JAR=/vendor/jar/jruby-jsvc-0.5.0.jar
24
+ export DAEMON_JAR=/vendor/jar/commons-daemon-1.0.15.jar
25
+
26
+ export JRUBY_HOME="/usr/local/jruby-1.7.4/"
27
+ export BUNDLE_GEMFILE=Gemfile
28
+
29
+ # if [ -z ${SCRIPT_NAME} ]; then
30
+ # echo "SCRIPT_NAME not set"
31
+ # exit 1
32
+ # fi
33
+
34
+ # if [ -z ${MODULE_NAME} ]; then
35
+ # echo "MODULE_NAME not set"
36
+ # exit 1
37
+ # fi
38
+
39
+ # Local development - uncomment these to use jsvc-daemon from a working copy
40
+ if [ "${JRUBY_DAEMON_DEV}" ]; then
41
+ echo "jsvc-wrapper, in development mode"
42
+ JSVC=`which jsvc`
43
+ if [ -z ${JAVA_HOME} ]; then
44
+ JAVA_HOME=`jruby -e 'puts Java::JavaLang::System.get_property("java.home")'`
45
+ fi
46
+ if [ -z ${JRUBY_HOME} ]; then
47
+ JRUBY_HOME=`jruby -e 'puts Java::JavaLang::System.get_property("jruby.home")'`
48
+ fi
49
+ # Uncomment for debugging the daemon script
50
+ JSVC_ARGS_EXTRA="-debug "
51
+ JAVA_PROPS="-DJRubyDaemon.debug=true"
52
+ echo "JAVA_HOME : $JAVA_HOME"
53
+ echo "JRUBY_HOME : $JRUBY_HOME"
54
+ else
55
+ # Standard install
56
+ JSVC=/usr/bin/jsvc
57
+ JAVA_HOME=/etc/alternatives/jre_1.7.0
58
+ USER=overun
59
+ fi
60
+
61
+ # If you want your programs to run as or not as daemons pass a flag to tell them which they are
62
+ PROG_OPTS="$PROG_OPTS --daemon"
63
+
64
+ # Implements the jsvc Daemon interface.
65
+ MAIN_CLASS=com.msp.jsvc.JRubyDaemon
66
+ echo $MAIN_CLASS
67
+
68
+ RUBY_SCRIPT=$SCRIPT_NAME.rb
69
+
70
+ # Set some jars variables if they aren't already there
71
+ if [ ${#JRUBY_JSVC_JAR} -eq 0 ]; then
72
+ JRUBY_JSVC_JAR=/usr/share/java/jruby-jsvc.jar
73
+ fi
74
+ if [ ${#DAEMON_JAR} -eq 0 ]; then
75
+ DAEMON_JAR=/usr/share/java/commons-daemon.jar
76
+ fi
77
+
78
+ CLASSPATH=$JRUBY_HOME/lib/jruby.jar:$JRUBY_HOME/lib/profile.jar:$DAEMON_JAR:$JRUBY_JSVC_JAR
79
+
80
+ echo "CLASSPATH : $CLASSPATH"
81
+
82
+ JAVA_PROPS="$JAVA_PROPS -Djruby.memory.max=500m \
83
+ -Djruby.stack.max=1024k \
84
+ -Djna.boot.library.path=$JRUBY_HOME/lib/native/linux-i386:$JRUBY_HOME/lib/native/linux-amd64 \
85
+ -Djffi.boot.library.path=$JRUBY_HOME/lib/native/i386-Linux:$JRUBY_HOME/jruby/lib/native/s390x-Linux:$JRUBY_HOME/lib/native/x86_64-Linux \
86
+ -Djruby.home=$JRUBY_HOME \
87
+ -Djruby.lib=$JRUBY_HOME/lib \
88
+ -Djruby.script=jruby \
89
+ -Djruby.compat.version=RUBY1_9 \
90
+ -Djruby.shell=/bin/sh \
91
+ -Djruby.daemon.module.name=$MODULE_NAME"
92
+
93
+ JAVA_OPTS="-XX:MaxPermSize=128m -Xmx500m -Xss1024k -Xbootclasspath/a:$JRUBY_HOME/lib/jruby.jar:$JRUBY_HOME/lib/bsf.jar"
94
+
95
+ JSVC_ARGS="-home $JAVA_HOME \
96
+ $JSVC_ARGS_EXTRA \
97
+ -wait 20 \
98
+ -user $USER \
99
+ -jvm server "
data/bin/wrapper.sh ADDED
@@ -0,0 +1,94 @@
1
+ #! /bin/sh
2
+ # Generic script for running ruby scripts as daemons using
3
+ # jsvc and a java class to control the daemon.
4
+ #
5
+ # Contains common parameters and start/stop
6
+
7
+ # Things you'll need to set on a per script/daemon basis:
8
+ # SCRIPT_NAME - Path to the ruby script which creates a Daemon
9
+ # object for jsvc to control
10
+ # APP_NAME - Name of your application
11
+ # MODULE_NAME
12
+ # JRUBY_JSVC_JAR
13
+ # DAEMON_JAR
14
+ # Things you can set:
15
+ # PROG_OPTS - Arguments to send to the program. A few defaults are appended to this.
16
+
17
+ # if [ -z ${SCRIPT_NAME} ]; then
18
+ # echo "SCRIPT_NAME not set"
19
+ # exit 1
20
+ # fi
21
+
22
+ # if [ -z ${MODULE_NAME} ]; then
23
+ # echo "MODULE_NAME not set"
24
+ # exit 1
25
+ # fi
26
+
27
+ # Local development - uncomment these to use jsvc-daemon from a working copy
28
+ if [ "${JRUBY_DAEMON_DEV}" ]; then
29
+ echo "jsvc-wrapper, in development mode"
30
+ JSVC=`which jsvc`
31
+ if [ -z ${JAVA_HOME} ]; then
32
+ JAVA_HOME=`jruby -e 'puts Java::JavaLang::System.get_property("java.home")'`
33
+ fi
34
+ if [ -z ${JRUBY_HOME} ]; then
35
+ JRUBY_HOME=`jruby -e 'puts Java::JavaLang::System.get_property("jruby.home")'`
36
+ fi
37
+ # Uncomment for debugging the daemon script
38
+ JSVC_ARGS_EXTRA="-debug "
39
+ JAVA_PROPS="-DJRubyDaemon.debug=true"
40
+ echo "JAVA_HOME : $JAVA_HOME"
41
+ echo "JRUBY_HOME : $JRUBY_HOME"
42
+ else
43
+ # Standard install
44
+ JSVC=/usr/bin/jsvc
45
+ JAVA_HOME=/etc/alternatives/jre_1.7.0
46
+ USER=overun
47
+ fi
48
+
49
+ # If you want your programs to run as or not as daemons pass a flag to tell them which they are
50
+ PROG_OPTS="$PROG_OPTS --daemon"
51
+
52
+ # Implements the jsvc Daemon interface.
53
+ MAIN_CLASS=com.msp.jsvc.JRubyDaemon
54
+ echo $MAIN_CLASS
55
+
56
+ RUBY_SCRIPT=$SCRIPT_NAME.rb
57
+
58
+ # Set some jars variables if they aren't already there
59
+ if [ ${#JRUBY_JSVC_JAR} -eq 0 ]; then
60
+ JRUBY_JSVC_JAR=/usr/share/java/jruby-jsvc.jar
61
+ fi
62
+ if [ ${#DAEMON_JAR} -eq 0 ]; then
63
+ DAEMON_JAR=/usr/share/java/commons-daemon.jar
64
+ fi
65
+
66
+ CLASSPATH=$JRUBY_HOME/lib/jruby.jar:$JRUBY_HOME/lib/profile.jar:$DAEMON_JAR:$JRUBY_JSVC_JAR
67
+
68
+ echo "CLASSPATH : $CLASSPATH"
69
+
70
+ JAVA_PROPS="$JAVA_PROPS -Djruby.memory.max=500m \
71
+ -Djruby.stack.max=1024k \
72
+ -Djna.boot.library.path=$JRUBY_HOME/lib/native/linux-i386:$JRUBY_HOME/lib/native/linux-amd64 \
73
+ -Djffi.boot.library.path=$JRUBY_HOME/lib/native/i386-Linux:$JRUBY_HOME/jruby/lib/native/s390x-Linux:$JRUBY_HOME/lib/native/x86_64-Linux \
74
+ -Djruby.home=$JRUBY_HOME \
75
+ -Djruby.lib=$JRUBY_HOME/lib \
76
+ -Djruby.script=jruby \
77
+ -Djruby.compat.version=RUBY1_9 \
78
+ -Djruby.shell=/bin/sh \
79
+ -Djruby.daemon.module.name=$MODULE_NAME"
80
+
81
+ JAVA_OPTS="-XX:MaxPermSize=128m -Xmx500m -Xss1024k -Xbootclasspath/a:$JRUBY_HOME/lib/jruby.jar:$JRUBY_HOME/lib/bsf.jar"
82
+
83
+ JSVC_ARGS="-home $JAVA_HOME \
84
+ $JSVC_ARGS_EXTRA \
85
+ -wait 20 \
86
+ -user $USER \
87
+ -jvm server "
88
+
89
+ #
90
+ # Stop/Start
91
+ #
92
+
93
+ # STOP_COMMAND="$JSVC $JSVC_ARGS -stop $MAIN_CLASS"
94
+ # START_COMMAND="$JSVC $JSVC_ARGS -cp $CLASSPATH $JAVA_PROPS $JAVA_OPTS $MAIN_CLASS $RUBY_SCRIPT $PROG_OPTS"
@@ -0,0 +1,80 @@
1
+ require 'sinatra'
2
+
3
+ module SellerDashboardMessagePublisher
4
+ class App < Sinatra::Base
5
+ get '/' do
6
+ @title = 'Pubnub Publisher'
7
+
8
+ @message_types = ['sold', 'startrun', 'nosale', 'vehchg']
9
+ @ods_message_types = ['ods_no_sale', 'ods_purchased', 'ods_purchase_offer']
10
+ @environments = ['development', 'ci1', 'ci2', 'ba', 'uat', 'production']
11
+
12
+ haml :'/index'
13
+ end
14
+
15
+ post '/publish' do
16
+ @title = 'Published Simulcast Message'
17
+ @auction = params['auction'].upcase
18
+ @noop = params['noop']
19
+
20
+ @message_type = params['message_type']
21
+ @vin = params['vin']
22
+ @sale = params['sale']
23
+ @lane = params['lane']
24
+ @run = params['run']
25
+ @bid = params['bid']
26
+
27
+ @time = Time.now
28
+ @message_attributes = {
29
+ 'vin' => @vin,
30
+ 'sale' => @sale,
31
+ 'lane' => @lane,
32
+ 'run' => @run,
33
+ 'bid' => @bid
34
+ }
35
+
36
+ logger = Logger.new(STDOUT)
37
+ config = ConfigLoader.load(logger, ENV['ENV'])['queues']
38
+
39
+ publisher = MessagePublisher.new(config, logger).connect
40
+
41
+ message = Message.new
42
+ message = MessageBuilder.build_from_form(@message_type, @auction, @message_attributes)
43
+
44
+ if @message_type == 'sold'
45
+ data_manager = DataManager.build(logger, @noop)
46
+ listing = data_manager.load_listing(message[:sale], message[:lane], message[:run])
47
+ data_manager.sell(listing, message[:bid])
48
+ end
49
+
50
+ require 'pry'; binding.pry
51
+
52
+ publisher.publish message
53
+ publisher.close_all_connections
54
+
55
+ haml :'/message'
56
+ end
57
+
58
+ post '/publish_ods' do
59
+ @title = 'Published ODS Message'
60
+ @auction = params['auction'].upcase
61
+ @message_type = params['message_type']
62
+ @lane = params['lane']
63
+ @message_attributes = {
64
+ 'lane' => @lane
65
+ }
66
+
67
+ logger = Logger.new(STDOUT)
68
+ config = ConfigLoader.load(logger, ENV['ENV'])['queues']
69
+
70
+
71
+ message = MessageBuilder.build_from_form(@message_type, @auction, @message_attributes)
72
+
73
+ publisher = MessagePublisher.new(config, logger).connect
74
+ publisher.publish message
75
+ publisher.close_all_connections
76
+
77
+ haml :'/ods_message'
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,65 @@
1
+ class DataManager
2
+ attr_reader :logger
3
+
4
+ def self.build(logger, noop)
5
+ data_manager = noop ? NullDataManager.new(logger) : self.new(logger)
6
+ data_manager.log_noop_message
7
+ data_manager
8
+ end
9
+
10
+ def initialize(logger)
11
+ @logger = logger
12
+ end
13
+
14
+ def load_lane(sale, lane)
15
+ DataFactory::As400::Car.where('SSALE# = ? AND SLANE# = ?', sale, lane).order('SRUN# ASC')
16
+ end
17
+
18
+ def load_listing(sale, lane, run)
19
+ DataFactory::As400::Car.where('SSALE# = ? AND SLANE#= ? AND SRUN# = ?', sale, lane, run).limit(1).first
20
+ end
21
+
22
+ def sell(listing, price=nil)
23
+ price = rand(5_000) + 10_000 if price.nil?
24
+ listing.sale_code = 'SS'
25
+ listing.seller_price = price
26
+ listing.sifsle = ' '
27
+ listing.times_run = 1
28
+
29
+ listing.save!
30
+
31
+ FactoryGirl.create(:high_bid,
32
+ vehicle_unique_number: listing.vehicle_unique_number,
33
+ high_bid: price,
34
+ sale_date: Time.now.strftime('%Y%m%d').to_i)
35
+
36
+ logger.info 'Persisted vehicle sell to the AS400'
37
+
38
+ price
39
+ end
40
+
41
+ def log_noop_message
42
+ logger.warn 'NOOP is OFF: the AS400 will be updated with any necessary data.'
43
+ end
44
+
45
+ end
46
+
47
+ class NullDataManager < DataManager
48
+ attr_reader :logger
49
+
50
+ def initialize(logger)
51
+ @logger = logger
52
+ end
53
+
54
+ def log_noop_message
55
+ logger.info 'NOOP is ON: only a message will be sent. The AS400 will not be updated.'
56
+ end
57
+
58
+ def sell(listing=nil, price=nil)
59
+ log_noop_message
60
+ end
61
+
62
+ def method_missing(*args, &block)
63
+ nil
64
+ end
65
+ end
@@ -0,0 +1,43 @@
1
+ module SellerDashboardMessagePublisher
2
+ class Message
3
+ DEFAULT_OTHER_ATTRIBUTES = {
4
+ startrun: {
5
+ run_number: 10,
6
+ timestamp: Time.now
7
+ },
8
+ nosale: {
9
+ run_number: 10,
10
+ timestamp: Time.now
11
+ },
12
+ sold: {
13
+ run_number: 10,
14
+ bid: 12500,
15
+ timestamp: Time.now
16
+ },
17
+ vehchg: {
18
+ timestamp: Time.now
19
+ }
20
+ }
21
+
22
+ attr_reader :message_type, :message_attributes
23
+
24
+ def initialize(message_type = '', message_attributes = {})
25
+ @message_type = message_type
26
+
27
+ message_attributes.reject! { |_, value| value.nil? }
28
+ @message_attributes = DEFAULT_OTHER_ATTRIBUTES.fetch(message_type.to_sym, {})
29
+ .merge(message_attributes)
30
+ end
31
+
32
+ def [](attribute)
33
+ message_attributes[attribute]
34
+ end
35
+
36
+ def create_message_body
37
+ file = File.read(File.join(File.dirname(__FILE__), "../../messages/#{message_type}.xml.erb"))
38
+ ERB.new(file, nil, '<>').result(binding)
39
+ end
40
+ end
41
+
42
+ end
43
+
@@ -0,0 +1,23 @@
1
+ module SellerDashboardMessagePublisher
2
+ class MessageBuilder
3
+
4
+ REQUIRED_ATTRIBUTES = {
5
+ startrun: [:vin, :lane, :run],
6
+ nosale: [:vin, :lane, :run],
7
+ sold: [:vin, :sale, :lane, :run, :bid],
8
+ vehchg: [:sale, :lane, :run],
9
+ ods_no_sale: [:lane],
10
+ ods_purchased: [:lane],
11
+ ods_purchase_offer: [:lane]
12
+ }
13
+
14
+ def self.build_from_form(message_type, auction, message_values)
15
+ message_attributes = REQUIRED_ATTRIBUTES[message_type.to_sym].inject({}) do |message_attributes, attribute|
16
+ message_attributes.merge(attribute => message_values[attribute.to_s])
17
+ end
18
+ Message.new(message_type, message_attributes.merge(auction: auction))
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,68 @@
1
+ require 'java'
2
+
3
+ module SellerDashboardMessagePublisher
4
+ class MessagePublisher
5
+ # FIXME: NameError: cannot load Java class javax.jms.Session
6
+ # ACK_MODE = Java::JavaxJms::Session.CLIENT_ACKNOWLEDGE
7
+ ACK_MODE = 2
8
+
9
+ attr_reader :config, :logger, :connection, :session, :producer, :ods_producer
10
+
11
+ def initialize(config, logger)
12
+ @config = config
13
+ @logger = logger
14
+ end
15
+
16
+ def connect
17
+ factory = Java::ComTibcoTibjms::TibjmsQueueConnectionFactory.new(config['servers'].join(','))
18
+ @connection = factory.createQueueConnection(config['username'], config['password'])
19
+ @session = connection.createQueueSession(false, ACK_MODE)
20
+
21
+ queue = session.createQueue(config['name'])
22
+ ods_queue = session.createQueue(config['ods_name'])
23
+
24
+ @producer = session.createProducer(queue)
25
+ @ods_producer = session.createProducer(ods_queue)
26
+
27
+ self
28
+ end
29
+
30
+ def assemble(message)
31
+ queue_message = session.createTextMessage(message.create_message_body)
32
+ queue_message.setStringProperty('AUCTION_ID', message[:auction])
33
+ queue_message.setStringProperty('MSG_TYPE', message_type_header_for(message.message_type))
34
+
35
+ logger.info "Publishing message #{queue_message}"
36
+ queue_message
37
+ end
38
+
39
+ def publish(message)
40
+ producer.send(assemble(message))
41
+ end
42
+
43
+ def publish_ods(message)
44
+ ods_producer.send(assemble(message))
45
+ end
46
+
47
+ def close_all_connections
48
+ logger.info 'Closing all connections'
49
+ producer.close
50
+ ods_producer.close
51
+ session.close
52
+ connection.stop
53
+ connection.close
54
+ end
55
+
56
+ private
57
+
58
+ NON_STANDARD_MESSAGE_TYPES = {
59
+ ods_no_sale: 'Seller Offering No Sale',
60
+ ods_purchased: 'Seller Offering Purchased',
61
+ ods_purchase_offer: 'Purchase Offer Placed'
62
+ }
63
+ def message_type_header_for(message_type)
64
+ NON_STANDARD_MESSAGE_TYPES.fetch(message_type.to_sym, message_type.to_s.upcase)
65
+ end
66
+ end
67
+
68
+ end
@@ -0,0 +1,3 @@
1
+ module SellerDashboardMessagePublisher
2
+ VERSION = "0.1.3"
3
+ end
@@ -0,0 +1,11 @@
1
+ require "seller_dashboard_message_publisher/version"
2
+ require "seller_dashboard_message_publisher/message"
3
+ require "seller_dashboard_message_publisher/message_builder"
4
+ require "seller_dashboard_message_publisher/message_publisher"
5
+ require "seller_dashboard_message_publisher/data_manager"
6
+ require_relative "../config/config_loader"
7
+
8
+ module SellerDashboardMessagePublisher
9
+ # Your code goes here...
10
+ autoload :App, 'seller_dashboard_message_publisher/app'
11
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seller_dashboard_message_publisher
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ prerelease:
6
+ platform: java
7
+ authors:
8
+ - Ayanga Okpokowuruk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-05-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: haml
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ none: false
60
+ prerelease: false
61
+ type: :runtime
62
+ - !ruby/object:Gem::Dependency
63
+ name: pubnub
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ none: false
76
+ prerelease: false
77
+ type: :runtime
78
+ - !ruby/object:Gem::Dependency
79
+ name: data_factory
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ none: false
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ none: false
92
+ prerelease: false
93
+ type: :runtime
94
+ - !ruby/object:Gem::Dependency
95
+ name: bundler
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: '1.9'
101
+ none: false
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ~>
105
+ - !ruby/object:Gem::Version
106
+ version: '1.9'
107
+ none: false
108
+ prerelease: false
109
+ type: :development
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ version: '10.0'
117
+ none: false
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ~>
121
+ - !ruby/object:Gem::Version
122
+ version: '10.0'
123
+ none: false
124
+ prerelease: false
125
+ type: :development
126
+ description: Testing tool to publish messages to a private Manheim queue (such as Tibco)
127
+ email:
128
+ - ayanga.okpokowuruk@manheim.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - lib/seller_dashboard_message_publisher.rb
134
+ - lib/seller_dashboard_message_publisher/app.rb
135
+ - lib/seller_dashboard_message_publisher/data_manager.rb
136
+ - lib/seller_dashboard_message_publisher/message.rb
137
+ - lib/seller_dashboard_message_publisher/message_builder.rb
138
+ - lib/seller_dashboard_message_publisher/message_publisher.rb
139
+ - lib/seller_dashboard_message_publisher/version.rb
140
+ - bin/console
141
+ - bin/setup
142
+ - bin/wrapper.sh
143
+ - README.md
144
+ homepage: http://github.ove.local/aokpokowur/seller_dashboard_message_publisher
145
+ licenses: []
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '>='
153
+ - !ruby/object:Gem::Version
154
+ segments:
155
+ - 0
156
+ version: '0'
157
+ hash: 2
158
+ none: false
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - '>='
162
+ - !ruby/object:Gem::Version
163
+ segments:
164
+ - 0
165
+ version: '0'
166
+ hash: 2
167
+ none: false
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 1.8.24
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: Seller Dashboard app to send test messages to a queue
174
+ test_files: []