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

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.
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