public_activity 1.4.3 → 1.5.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 111fe89197635000ddcdf89d3d534f9cb00c3443
|
4
|
+
data.tar.gz: ab11f3c49c42d58ba8af32a325874c83f5c634db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41d3b14a7bd58a3c321b52f6fb423b5f612e4f5a8c2881a03dbed893bd352ad0a596ad9e4f64d6cb49289d08fa8c780554dde54dc79b20962dd8e59ef10cad58
|
7
|
+
data.tar.gz: df0ba2f1a81173d47c9b750696e7e8eab2af04b0eb8483ceefb1c6c86ebd5e79f811672bba60c4caac8b436f60b2500d1346613c5a7c53c35a31467a17186750
|
@@ -1,23 +1,13 @@
|
|
1
1
|
module PublicActivity
|
2
|
-
# @private
|
3
|
-
@@controllers = Hash.new
|
4
|
-
# Lambda called after the thread is destroyed.
|
5
|
-
Finalizer = lambda { |id|
|
6
|
-
@@controllers.delete id
|
7
|
-
}
|
8
|
-
|
9
2
|
class << self
|
10
3
|
# Setter for remembering controller instance
|
11
4
|
def set_controller(controller)
|
12
|
-
|
13
|
-
ObjectSpace.define_finalizer Thread.current, Finalizer
|
14
|
-
end if RUBY_VERSION != "1.9.3"
|
15
|
-
@@controllers[Thread.current.object_id] = controller
|
5
|
+
Thread.current[:public_activity_controller] = controller
|
16
6
|
end
|
17
7
|
|
18
8
|
# Getter for accessing the controller instance
|
19
9
|
def get_controller
|
20
|
-
|
10
|
+
Thread.current[:public_activity_controller]
|
21
11
|
end
|
22
12
|
end
|
23
13
|
|
@@ -26,17 +16,15 @@ module PublicActivity
|
|
26
16
|
extend ActiveSupport::Concern
|
27
17
|
|
28
18
|
included do
|
29
|
-
|
30
|
-
|
31
|
-
before_action :store_controller_for_public_activity
|
32
|
-
else
|
33
|
-
before_filter :store_controller_for_public_activity
|
34
|
-
end
|
19
|
+
around_action :store_controller_for_public_activity if respond_to?(:around_action)
|
20
|
+
around_filter :store_controller_for_public_activity unless respond_to?(:around_action)
|
35
21
|
end
|
36
22
|
|
37
|
-
# Before filter executed to remember current controller
|
38
23
|
def store_controller_for_public_activity
|
39
24
|
PublicActivity.set_controller(self)
|
25
|
+
yield
|
26
|
+
ensure
|
27
|
+
PublicActivity.set_controller(nil)
|
40
28
|
end
|
41
29
|
end
|
42
30
|
end
|
@@ -9,33 +9,32 @@ describe PublicActivity::StoreController do
|
|
9
9
|
it 'stores controller' do
|
10
10
|
controller = StoringController.new
|
11
11
|
PublicActivity.set_controller(controller)
|
12
|
-
controller.must_be_same_as
|
12
|
+
controller.must_be_same_as Thread.current[:public_activity_controller]
|
13
13
|
controller.must_be_same_as PublicActivity.get_controller
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'stores controller with a filter in controller' do
|
17
17
|
controller = StoringController.new
|
18
|
-
controller._process_action_callbacks.select {|c| c.kind == :
|
19
|
-
controller.instance_eval
|
20
|
-
|
18
|
+
controller._process_action_callbacks.select {|c| c.kind == :around}.map(&:filter).must_include :store_controller_for_public_activity
|
19
|
+
controller.instance_eval do
|
20
|
+
store_controller_for_public_activity do
|
21
|
+
controller.must_be_same_as PublicActivity.get_controller
|
22
|
+
end
|
23
|
+
end
|
21
24
|
end
|
22
25
|
|
23
26
|
it 'stores controller in a threadsafe way' do
|
24
|
-
reset_controllers
|
25
27
|
PublicActivity.set_controller(1)
|
26
28
|
PublicActivity.get_controller.must_equal 1
|
27
29
|
|
28
30
|
a = Thread.new {
|
29
31
|
PublicActivity.set_controller(2)
|
30
32
|
PublicActivity.get_controller.must_equal 2
|
33
|
+
PublicActivity.set_controller(nil)
|
31
34
|
}
|
32
35
|
|
33
36
|
PublicActivity.get_controller.must_equal 1
|
34
|
-
# cant really test finalizers though
|
35
|
-
end
|
36
37
|
|
37
|
-
|
38
|
-
def reset_controllers
|
39
|
-
PublicActivity.class_eval { class_variable_set(:@@controllers, {}) }
|
38
|
+
PublicActivity.set_controller(nil)
|
40
39
|
end
|
41
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: public_activity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotrek Okoński
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-03-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -255,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
255
255
|
version: '0'
|
256
256
|
requirements: []
|
257
257
|
rubyforge_project:
|
258
|
-
rubygems_version: 2.4.
|
258
|
+
rubygems_version: 2.4.5.1
|
259
259
|
signing_key:
|
260
260
|
specification_version: 4
|
261
261
|
summary: Easy activity tracking for ActiveRecord models
|
@@ -279,4 +279,3 @@ test_files:
|
|
279
279
|
- test/views/custom/_test.erb
|
280
280
|
- test/views/layouts/_activity.erb
|
281
281
|
- test/views/public_activity/_test.erb
|
282
|
-
has_rdoc:
|