ruby_rabbitmq_janus 2.1.0.pre.130 → 2.1.0.pre.131

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6dcab86c33a7ccc36b9ddd7b6ff6eaeeaca17bb
4
- data.tar.gz: ee1ec6fe44942afcd162d2d2cdcdaf7a73355ff7
3
+ metadata.gz: 811e021180e0a35a51ba2ff75163625140382e7d
4
+ data.tar.gz: b1f5f2ad5d3cd7ed34ada499fdb471d31956854c
5
5
  SHA512:
6
- metadata.gz: 05be1135e7212d9ccd3acc9f204ef97d3772a56219a5f20c63d5bb4bed54e372de0a53971cc041c2aca898f8aeece1696f1fb70e6500cb90fa01fb2b630ffea6
7
- data.tar.gz: ba128900894f71a0e405bdf5f63d2b1390e3d91f3baea2da347ab6c0975bd8185c17d826ef2de9cfeddb3fc3d932bd783200f460634755f1f97fa5e9a5eccffb
6
+ metadata.gz: e2fe3d01287875d2a843831ecad3a0286d553f8253aadc984c187d8953a43e0926c118d75a80c6ac3a801e08ca4ec02164639fc4297e8638cea9943489573e9e
7
+ data.tar.gz: 914cd24efdf27e8aaabf4a7b82c24a5b7779a8b1dc1da1569abca51da080178329d2cfa1f2c41c242e583b103b12cb8e820bf16f0ad669ebacca0bd9954d99d4
data/README.md CHANGED
@@ -80,6 +80,12 @@ Or install it yourself as :
80
80
  gem install ruby_rabbitmq_janus
81
81
  ```
82
82
 
83
+ Install basic configuration :
84
+
85
+ ```linux
86
+ rails g ruby_rabbitmq_janus:install
87
+ ```
88
+
83
89
  ### Configuration
84
90
 
85
91
  If you want used a customize configuration see [ruby-rabbitmq-janus.yml](config/default.md)
@@ -8,22 +8,12 @@ module RubyRabbitmqJanus
8
8
  desc 'Generate a custom configuration file.'
9
9
 
10
10
  # Define root path for original file a copied
11
- def self.source_root
12
- root_path = File.realpath(root_path_gem)
13
- @_rrj_source_root ||= File.join(root_path, 'config')
14
- end
11
+ source_root File.expand_path('../../../config', __dir__)
15
12
 
16
13
  # Copy a default configuration in config folder to Rails app
17
14
  def copy_configuration
18
15
  template 'default.yml', 'config/ruby-rabbitmq-janus.yml'
19
16
  end
20
-
21
- private
22
-
23
- # Define a root path
24
- def root_path_gem
25
- File.join(File.dirname(__FILE__), '..', '..', '..')
26
- end
27
17
  end
28
18
  end
29
19
  end
@@ -7,22 +7,12 @@ module RubyRabbitmqJanus
7
7
  desc 'Copy base request file sending to janus in application.'
8
8
 
9
9
  # Define root path for original file a copied
10
- def self.source_root
11
- root_path = File.realpath(root_path_gem)
12
- @_rrj_source_root ||= File.join(root_path, 'config')
13
- end
10
+ source_root File.expand_path('../../../config', __dir__)
14
11
 
15
12
  # Copy default request in Rails app
16
13
  def copy_default_request
17
14
  directory 'requests', 'config/requests'
18
15
  end
19
-
20
- private
21
-
22
- # Define a root path
23
- def root_path_gem
24
- File.join(File.dirname(__FILE__), '..', '..', '..')
25
- end
26
16
  end
27
17
  end
28
18
  end
@@ -5,31 +5,12 @@ module RubyRabbitmqJanus
5
5
  # Create an class for generate a initializer
6
6
  class InitializerGenerator < Rails::Generators::Base
7
7
  desc 'Generate a initializer to this gem for rails application.'
8
- INITIALIZER = <<-INIT
9
- # frozen_string_literal: true
10
8
 
11
- require 'actions'
12
-
13
- # Initialize a gem and create an session with a keepalive
14
- ::RRJ = RubyRabbitmqJanus::RRJ.new
15
-
16
- # For admin management
17
- # ::RRJ = RubyRabbitmqJanus::RRJAdmin.new
18
-
19
- # This test disable this gems execution when you running an task with rake
20
- unless File.basename($PROGRAM_NAME) == 'rake'
21
- Rails.configuration.after_initialize do
22
- # If you don't want listen a standard queue, comment this lines and
23
- # "require 'actions'"
24
- actions = RubyRabbitmqJanus::ActionEvents.new.actions
25
- RubyRabbitmqJanus::Janus::Concurrencies::Event.instance.run(&actions)
26
- end
27
- end
28
- INIT
9
+ source_root File.expand_path('../templates', __FILE__)
29
10
 
30
11
  # Create an initializer
31
12
  def copy_initializer
32
- initializer 'ruby_rabbitmq_janus.rb', INITIALIZER
13
+ copy_file 'initializer.rb', 'config/initializers/ruby_rabbitmq_janus.rb'
33
14
  end
34
15
  end
35
16
  end
@@ -5,42 +5,21 @@ module RubyRabbitmqJanus
5
5
  # Create an class for generate a installing
6
6
  class InstallGenerator < Rails::Generators::Base
7
7
  desc 'Install RubyRabbitmqJanus in your Rails application'
8
- ACTION_CLASS = <<-BASE
9
- module RubyRabbitmqJanus
10
- # Execute this code when janus return an events in standard queue
11
- class ActionsEvents
12
- # Default method using for sending a block of code
13
- def actions
14
- lambda do |reason, data|
15
- Rails.logger.debug "Execute block code with reason : \#{reason}"
16
- case reason
17
- when event this case_events(data.to_hash)
18
- end
19
- end
20
- end
21
-
22
- private
23
8
 
24
- def case_events(data)
25
- Rails.logger.debug "Event : \#{data}"
26
- end
27
- end
28
- end
29
- BASE
30
9
  APPLICATION = <<-AUTOLOAD
31
10
  # Load RubyRabbitmqJanus actions events code blocks
32
11
  config.autoload_paths += Dir[Rails.root.join('app', 'ruby_rabbitmq_janus')]
33
12
  AUTOLOAD
34
13
 
35
- # Generate initializer with default code
14
+ source_root File.expand_path('../templates', __FILE__)
15
+
16
+ # Generate files with default code
36
17
  def add_actions
37
18
  # Create an class
38
- create_file 'app/ruby_rabbitmq_janus/actions.rb', ACTION_CLASS
19
+ template 'actions.rb', 'app/ruby_rabbitmq_janus/actions.rb'
39
20
 
40
21
  # Add to application.rb
41
- application do
42
- APPLICATION
43
- end
22
+ application { APPLICATION }
44
23
 
45
24
  # Add initializer
46
25
  generate 'ruby_rabbitmq_janus:initializer'
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ # Execute this code when janus return an events in standard queue
5
+ class ActionEvents
6
+ # Default method using for sending a block of code
7
+ def actions
8
+ lambda do |reason, data|
9
+ Rails.logger.debug "Execute block code with reason : #{reason}"
10
+ case reason
11
+ when event then case_events(data.to_hash)
12
+ end
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def case_events(data)
19
+ Rails.logger.debug "Event : #{data}"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This test disable this gems execution when you running an task with rake
4
+ if File.basename($PROGRAM_NAME) == 'rake'
5
+ # Configure RRJ for rake task
6
+ ::RRJ = RubyRabbitmqJanus::RRJTask.new
7
+ else
8
+ # Loading classes Actions to rails application
9
+ require 'actions'
10
+
11
+ # If you used gem config for manage your ENV variables uncomment this line
12
+ # @see https://rubygems.org/gems/config
13
+ # Settings.reload!
14
+
15
+ # Initialize gem and create a number of session by Janus instance.
16
+ ::RRJ = RubyRabbitmqJanus::RRJ.new
17
+
18
+ # Use this initializer if your application use 'Admin/Monitor API'
19
+ # @see https://janus.conf.meetecho.com/docs/admin.html
20
+ # ::RRJ = RubyRabbitmqJanus::RRJAdmin.new
21
+
22
+ # Send a block code to thread for manage event given by Janus in public queue
23
+ Rails.configuration.after_initialize do
24
+ # If you don't want listen a standard queue, comment this block and
25
+ # "require 'actions'" also
26
+ actions = RubyRabbitmqJanus::ActionEvents.new.actions
27
+ RubyRabbitmqJanus::Janus::Concurrencies::Event.instance.run(&actions)
28
+ end
29
+ end
@@ -6,7 +6,7 @@ module RubyRabbitmqJanus
6
6
  # Define a super class for all errors in Janus::Transactions::Transaction
7
7
  class BaseTransaction < BaseJanus
8
8
  def initialize(message, level = :fatal)
9
- super "[Transaction] #{message}", level
9
+ super "[Transaction]#{message}", level
10
10
  end
11
11
  end
12
12
 
data/lib/rrj/init.rb CHANGED
@@ -39,6 +39,7 @@ module RubyRabbitmqJanus
39
39
  # => #<RubyRabbitmqJanus::RRJ:0x007 @session=123>
40
40
  def initialize
41
41
  @option = Tools::Option.new
42
+ ObjectSpace.define_finalizer(self, RRJ.method(:delete).to_proc)
42
43
  rescue => error
43
44
  raise Errors::RRJ::InstanciateGem, error
44
45
  end
@@ -113,5 +114,14 @@ module RubyRabbitmqJanus
113
114
  private
114
115
 
115
116
  attr_reader :option
117
+
118
+ def self.delete(_id)
119
+ Tools::Cluster.instance.sessions.each do |janus_instance|
120
+ array_ji = "#{janus_instance.instance},#{janus_instance.session}"
121
+ `rake rrj:delete:one_instance[#{array_ji}]`
122
+ end
123
+ end
124
+
125
+ private_class_method :delete
116
126
  end
117
127
  end
@@ -17,7 +17,7 @@ module RubyRabbitmqJanus
17
17
  super(session)
18
18
  @exclusive = exclusive
19
19
  rescue
20
- raise Errors::Janus::TransactionSession::Initialize
20
+ raise Errors::Janus::TransactionSessions::Initialize
21
21
  end
22
22
 
23
23
  # Opening a short transaction with rabbitmq and close when is ending
@@ -29,7 +29,7 @@ module RubyRabbitmqJanus
29
29
  yield
30
30
  end
31
31
  rescue
32
- raise Errors::Janus::TransactionSession::Connect
32
+ raise Errors::Janus::TransactionSessions::Connect
33
33
  end
34
34
 
35
35
  def publish_message(type, options = {})
@@ -37,7 +37,7 @@ module RubyRabbitmqJanus
37
37
  response = read_response(publisher.publish(msg))
38
38
  Janus::Responses::Standard.new(response)
39
39
  rescue
40
- raise Errors::Janus::TransactionSession::PublishMessage
40
+ raise Errors::Janus::TransactionSessions::PublishMessage
41
41
  end
42
42
 
43
43
  private
@@ -11,7 +11,7 @@ module RubyRabbitmqJanus
11
11
  # Send an action for destroying a session in Janus Gateway instance
12
12
  def destroy_before_action
13
13
  options = { 'session_id' => session, 'instance' => instance }
14
- ::RRJ.start_transaction(options) do |transaction|
14
+ search_initializer(options) do |transaction|
15
15
  transaction.publish_message('base::destroy', options)
16
16
  end
17
17
  end
@@ -42,6 +42,20 @@ module RubyRabbitmqJanus
42
42
  nil
43
43
  end
44
44
  end
45
+
46
+ private
47
+
48
+ def search_initializer(options)
49
+ if File.basename($PROGRAM_NAME) == 'rake'
50
+ ::RRJ.start_transaction(options) do |transaction|
51
+ yield(transaction)
52
+ end
53
+ else
54
+ ::RRJ.start_transaction(true, options) do |transaction|
55
+ yield(transaction)
56
+ end
57
+ end
58
+ end
45
59
  end
46
60
  end
47
61
  end
data/lib/rrj/task.rb CHANGED
@@ -36,7 +36,7 @@ module RubyRabbitmqJanus
36
36
  raise Errors::RRJ::StartTransaction.new(true, options)
37
37
  end
38
38
 
39
- # Create a transaction betwwen apps and janus with a handle
39
+ # Create a transaction between apps and janus with a handle
40
40
  #
41
41
  # @since 2.1.0
42
42
  def start_transaction_handle(exclusive = true, options = {})
@@ -8,7 +8,7 @@ module RubyRabbitmqJanus
8
8
  class Cluster
9
9
  include Singleton
10
10
 
11
- attr_reader :number, :enable
11
+ attr_reader :number, :enable, :sessions
12
12
 
13
13
  # Initalize object for managing each instance to Janus
14
14
  def initialize
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  namespace :rrj do
4
- desc 'Delete all instances in database.'
5
- task delete_instances: :environment do
6
- @timelaps = Time.now.utc
4
+ namespace :delete do
5
+ desc 'Delete all instances in database and janus'
6
+ task all_instances: :environment do
7
+ timelaps = Time.now.utc
7
8
 
8
- RubyRabbitmqJanus::Models::JanusInstance.destroy_all
9
+ RubyRabbitmqJanus::Models::JanusInstance.destroy_all
9
10
 
10
- Rails.logger.info "Executed in #{Time.now.utc - @timelaps} ms"
11
+ Rails.logger.info "Executed in #{Time.now.utc - timelaps} ms"
12
+ end
11
13
  end
12
14
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :rrj do
4
+ namespace :delete do
5
+ desc 'Delete one instance in database and janus'
6
+ task :one_instance, [:instance, :session] => :environment do |_task, args|
7
+ timelaps = Time.now.utc
8
+
9
+ Rails.logger.info \
10
+ "Delete instance #{args[:instance]} with session #{args[:session]}"
11
+
12
+ RubyRabbitmqJanus::Models::JanusInstance\
13
+ .find_by_session(args[:session]).destroy
14
+
15
+ Rails.logger.info "Executed in #{Time.now.utc - timelaps} ms"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :rrj do
4
+ namespace :delete do
5
+ desc 'Delete all instances disable in database and janus'
6
+ task unless_instance: :environment do
7
+ timelaps = Time.now.utc
8
+
9
+ RubyRabbitmqJanus::Models::JanusInstance.find_by(enable: false).delete_all
10
+
11
+ Rails.logger.info "Executed in #{Time.now.utc - timelaps} ms"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RubyRabbitmqJanus::Models::JanusInstance, type: :model,
6
+ name: :janus_instance do
7
+ before do
8
+ Object.send(:remove_const, :Mongoid) if defined?(Mongoid)
9
+ require 'active_record' unless defined?(ActiveRecord::Core)
10
+ end
11
+
12
+ let(:model) { RubyRabbitmqJanus::Models::JanusInstance }
13
+
14
+ context 'active record model' do
15
+ it { expect(model.attribute_names).to include('id') }
16
+ it { expect(model.attribute_names).to include('instance') }
17
+ it { expect(model.attribute_names).to include('session') }
18
+ it { expect(model.attribute_names).to include('enable') }
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Style/ConstantName
4
+
5
+ require 'spec_helper'
6
+
7
+ describe RubyRabbitmqJanus::Models::JanusInstance, type: :model,
8
+ name: :janus_instance do
9
+ before do
10
+ ActiveRecord::Core = nil if defined?(ActiveRecord)
11
+ require 'mongoid' unless defined?(Mongoid)
12
+ end
13
+
14
+ context 'mongoid model' do
15
+ let(:model) { RubyRabbitmqJanus::Models::JanusInstance }
16
+
17
+ it { expect(model.attribute_names).to include('id') }
18
+ it { expect(model.attribute_names).to include('instance') }
19
+ it { expect(model.attribute_names).to include('session') }
20
+ it { expect(model.attribute_names).to include('enable') }
21
+ end
22
+
23
+ after do
24
+ Object.send(:remove_const, :Mongoid) if defined?(Mongoid)
25
+ require 'active_record' unless defined?(ActiveRecord)
26
+ end
27
+ end
28
+ # rubocop:enable Style/ConstantName
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rabbitmq_janus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.pre.130
4
+ version: 2.1.0.pre.131
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-07 00:00:00.000000000 Z
11
+ date: 2017-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -248,6 +248,20 @@ dependencies:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
250
  version: '1.3'
251
+ - !ruby/object:Gem::Dependency
252
+ name: mongoid
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '5.2'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '5.2'
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: bunny
253
267
  requirement: !ruby/object:Gem::Requirement
@@ -348,6 +362,8 @@ files:
348
362
  - lib/generators/ruby_rabbitmq_janus/initializer_generator.rb
349
363
  - lib/generators/ruby_rabbitmq_janus/install_generator.rb
350
364
  - lib/generators/ruby_rabbitmq_janus/migration_generator.rb
365
+ - lib/generators/ruby_rabbitmq_janus/templates/actions.rb
366
+ - lib/generators/ruby_rabbitmq_janus/templates/initializer.rb
351
367
  - lib/generators/ruby_rabbitmq_janus/templates/migration.rb
352
368
  - lib/rrj/admin.rb
353
369
  - lib/rrj/errors/base/admin.rb
@@ -431,6 +447,8 @@ files:
431
447
  - lib/rrj/tools/tools.rb
432
448
  - lib/ruby_rabbitmq_janus.rb
433
449
  - lib/tasks/delete_all_instance.rake
450
+ - lib/tasks/delete_one_instance.rake
451
+ - lib/tasks/delete_unless_instance.rake
434
452
  - spec/request/admin/request_handle_info_spec.rb
435
453
  - spec/request/admin/request_handles_spec.rb
436
454
  - spec/request/admin/request_sessions_spec.rb
@@ -449,6 +467,8 @@ files:
449
467
  - spec/rrj/messages/messages_admin_spec.rb
450
468
  - spec/rrj/messages/messages_message_spec.rb
451
469
  - spec/rrj/messages/messages_standard_spec.rb
470
+ - spec/rrj/models/active_record_spec.rb
471
+ - spec/rrj/models/mongoid_spec.rb
452
472
  - spec/rrj/rabbit/connect_spec.rb
453
473
  - spec/rrj/rabbit/propertie_spec.rb
454
474
  - spec/rrj/rabbit/publish/admin_spec.rb