recorder 0.1.10 → 0.1.11

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: bc488336fc2f5088c56568c815dbd167ff017c56
4
- data.tar.gz: 25d597df1d310b86477758f3b852f87af4f8edbc
3
+ metadata.gz: 284c1bc23118fdc7bc7d8bd37ac1b1bd705796ab
4
+ data.tar.gz: 1aa407eba7453c44efb9726eb8b4b4e3042b2930
5
5
  SHA512:
6
- metadata.gz: cdd3bcfa8e51c4832660a87dee1ba8c0fceff24818a914e38d510291eee68ea3e24925ab53b379af34f563bfb008e96af66bd276232cb40b7dfef3cf85d7f917
7
- data.tar.gz: 0075a5c6b3f48838928050dc034d506673a29213b4f3a9b80e7bde7911beb3347f64fb2a96a0e9584daffba209c4fcc06c177a426189156e771dfeb6f69ff8a4
6
+ metadata.gz: 66e09ecc7cb06fd5106391f8ec7254fe91f82734b2e55812661eb55c4119338ebd3c00633ab903fcfe233c14db52acb005d9577cbe24ddfb6fc2021bc2edd9b7
7
+ data.tar.gz: ad30ee43b319c8f13bcb4157cc044cff5fdd23e6131e9714e2d9df6ade6c887f04055caeb015f9cd8778d7a5bc8e274c81fe94b2713b3d623155e64e0c805204
data/README.md CHANGED
@@ -30,8 +30,13 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
30
30
 
31
31
  ## Contributing
32
32
 
33
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/recorder.
33
+ Bug reports and pull requests are welcome on GitHub at https://github.com/jetrockets/recorder.
34
34
 
35
+ ## Credits
36
+
37
+ ![JetRockets](http://www.jetrockets.ru/jetrockets.png)
38
+
39
+ Recorder is maintained by [JetRockets](http://www.jetrockets.ru).
35
40
 
36
41
  ## License
37
42
 
@@ -0,0 +1,30 @@
1
+ require 'singleton'
2
+
3
+ module Recorder
4
+ # Global configuration options
5
+ class Config
6
+ include Singleton
7
+ attr_accessor :sidekiq_options
8
+
9
+ def initialize
10
+ # Variables which affect all threads, whose access is synchronized.
11
+ @mutex = Mutex.new
12
+ @enabled = true
13
+
14
+ @sidekiq_options = {
15
+ :queue => 'recorder',
16
+ :retry => 10,
17
+ :backtrace => true
18
+ }
19
+ end
20
+
21
+ # Indicates whether Recorder is on or off. Default: true.
22
+ def enabled
23
+ @mutex.synchronize { !!@enabled }
24
+ end
25
+
26
+ def enabled=(enable)
27
+ @mutex.synchronize { @enabled = enable }
28
+ end
29
+ end
30
+ end
@@ -6,7 +6,15 @@ module Recorder
6
6
  extend ::ActiveSupport::Concern
7
7
 
8
8
  included do
9
- has_many :revisions, :class_name => '::Recorder::Revision', :inverse_of => :item, :as => :item
9
+ has_many :revisions, :class_name => '::Recorder::Revision', :inverse_of => :item, :as => :item do
10
+ def create_async(params)
11
+ Recorder::Sidekiq::RevisionsWorker.perform_async(
12
+ proxy_association.owner.class.to_s,
13
+ proxy_association.owner.id,
14
+ params
15
+ )
16
+ end
17
+ end
10
18
  end
11
19
 
12
20
  module ClassMethods
@@ -0,0 +1,7 @@
1
+ class Recorder::Rails::Railtie < Rails::Railtie
2
+ initializer "recorder.configure" do |app|
3
+ if defined?(Sidekiq)
4
+ require 'recorder/sidekiq/revisions_worker'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ module Recorder
2
+ module Sidekiq
3
+ class RevisionsWorker
4
+ include ::Sidekiq::Worker
5
+
6
+ sidekiq_options Recorder.config.sidekiq_options
7
+
8
+ def perform(klass, id, params)
9
+ klass.constantize.find(id).revisions.create(params)
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/recorder/tape.rb CHANGED
@@ -64,7 +64,11 @@ module Recorder
64
64
  :action_date => Date.today
65
65
  })
66
66
 
67
- self.item.revisions.create(params)
67
+ if self.item.recorder_options[:async]
68
+ self.item.revisions.create_async(params)
69
+ else
70
+ self.item.revisions.create(params)
71
+ end
68
72
  end
69
73
 
70
74
  def sanitize_attributes(attributes = {})
@@ -3,7 +3,7 @@ module Recorder
3
3
  module VERSION
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
- TINY = 10
6
+ TINY = 11
7
7
  PRE = nil
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".").freeze
data/lib/recorder.rb CHANGED
@@ -1,12 +1,27 @@
1
+ require 'recorder/config'
1
2
  require 'recorder/version'
2
3
  require 'recorder/changeset'
3
4
  require 'recorder/observer'
4
5
  require 'recorder/rails/controller_concern'
6
+ require 'recorder/rails/railtie' if defined? ::Rails::Railtie
5
7
 
6
8
  require 'request_store'
7
9
 
8
10
  module Recorder
9
11
  class << self
12
+ # Switches Recorder on or off.
13
+ # @api public
14
+ def enabled=(value)
15
+ Recorder.config.enabled = value
16
+ end
17
+
18
+ # Returns `true` if Recorder is on, `false` otherwise.
19
+ # Recorder is enabled by default.
20
+ # @api public
21
+ def enabled?
22
+ !!Recorder.config.enabled
23
+ end
24
+
10
25
  # Sets Recorder information from the controller.
11
26
  # @api public
12
27
  def info=(hash)
@@ -25,6 +40,14 @@ module Recorder
25
40
  @active_record_protected_attributes ||= !!defined?(ProtectedAttributes)
26
41
  end
27
42
 
43
+ # Returns Recorder's configuration object.
44
+ # @api private
45
+ def config
46
+ @config ||= Recorder::Config.instance
47
+ yield @config if block_given?
48
+ @config
49
+ end
50
+
28
51
  # Returns version of Recorder as +String+
29
52
  def version
30
53
  VERSION::STRING
@@ -38,4 +61,8 @@ module Recorder
38
61
  end
39
62
  end
40
63
 
64
+ # if defined?(Sidekiq)
65
+ # require 'recorder/sidekiq/revisions_worker'
66
+ # end
67
+
41
68
  require 'recorder/revision'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recorder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Alexandrov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-08 00:00:00.000000000 Z
11
+ date: 2016-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -157,9 +157,12 @@ files:
157
157
  - lib/generators/recorder/templates/create_recorder_revisions.rb
158
158
  - lib/recorder.rb
159
159
  - lib/recorder/changeset.rb
160
+ - lib/recorder/config.rb
160
161
  - lib/recorder/observer.rb
161
162
  - lib/recorder/rails/controller_concern.rb
163
+ - lib/recorder/rails/railtie.rb
162
164
  - lib/recorder/revision.rb
165
+ - lib/recorder/sidekiq/revisions_worker.rb
163
166
  - lib/recorder/tape.rb
164
167
  - lib/recorder/version.rb
165
168
  - recorder.gemspec