recorder 0.1.10 → 0.1.11

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