action_tracker 0.1.0.3 → 0.1.0.4

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: bfb149079d10597d07994207f8a82c235004c638
4
- data.tar.gz: f3983a018a57ed372ba89f083d4b9c2b767155db
3
+ metadata.gz: ca216a7f089af0698cc33011d093feb69490860c
4
+ data.tar.gz: da50b64e31e0ebcfd3c8664070e09c161e7e4c78
5
5
  SHA512:
6
- metadata.gz: 56bf58bae35cad88d44b2908f5c35e80c59540d8c31ddee84c2956c3889f1acf4ea96c24e9fdce512bc1f0a233f3a5baac52e326c274e2a212d1c37a993a2ad5
7
- data.tar.gz: 3efbe77d676c092a0393aa11daae5f20b3efa5b3a125d859b5e786cdee212ae4f2ecd67f28f3995124ccd570cb2d0b2e3d3eaea0f89a84f60b9c803891c2f0dc
6
+ metadata.gz: 3bf5d2242306b8f9c89e6738fa2aec7ed4c935ff5243b03acae68a6cbe2712f558505e222398f1e12e3fd1e7d9d752ea7fc61161baa8a0bf65b0249ee83783b7
7
+ data.tar.gz: af2c98a243dfaaa4b15dfc01eedd6f506671c335bc5184a6101d097f648b08bb640f5bc7efb7c089d402c6789794011943c74226ff021da80f10012ac962476e
@@ -4,25 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'action_tracker/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "action_tracker"
7
+ spec.name = 'action_tracker'
8
8
  spec.version = ActionTracker::VERSION
9
- spec.authors = ["André Taiar", "João Fraga"]
10
- spec.email = ["andre.taiar@appprova.com.br", "joaogabriel@appprova.com.br"]
9
+ spec.authors = ['André Taiar', 'João Fraga']
10
+ spec.email = ['andre.taiar@appprova.com.br', 'joaogabriel@appprova.com.br']
11
11
 
12
12
  spec.summary = %q{Easy way to track actions in your application.}
13
13
  spec.description = %q{Easy way to track actions in your application without adding unnecessary code to your controllers.}
14
- spec.homepage = "http://coders.appprova.com.br/"
15
- spec.license = "MIT"
14
+ spec.homepage = 'http://coders.appprova.com.br/'
15
+ spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'rails3_before_render', '0.2.0'
23
23
  spec.add_dependency 'activesupport', '~> 3.2'
24
+ spec.add_dependency 'devise', '~> 3.4'
24
25
 
25
26
  spec.add_development_dependency "bundler", "~> 1.11"
26
27
  spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "rspec-rails", "~> 3.0"
29
+ spec.add_development_dependency 'rails', '~> 3.2'
28
30
  end
@@ -1,6 +1,15 @@
1
1
  module ActionTracker
2
2
  # nodoc
3
3
  class Base
4
- attr_accessor :params, :user
4
+ attr_reader :params, :resource
5
+
6
+ def initialize(resource, params)
7
+ @resource = resource
8
+ @params = params
9
+ end
10
+
11
+ def user
12
+ @resource
13
+ end
5
14
  end
6
15
  end
@@ -1,3 +1,4 @@
1
+ require 'active_support'
1
2
  require 'rails3_before_render'
2
3
 
3
4
  module ActionTracker
@@ -12,23 +13,42 @@ module ActionTracker
12
13
  end
13
14
 
14
15
  def track_event
15
- tracker_user = current_user || current_teacher
16
- tracker_class = "#{namespace}#{controller_name.camelize}Tracker"
17
- @tracker_params = tracker_params(tracker_class, tracker_user)
16
+ session[:action_tracker] ||= []
17
+ output = tracker_params
18
+ session[:action_tracker] << output unless output.blank?
18
19
  end
19
20
 
20
21
  private
21
22
 
22
- def tracker_params(tracker_class, tracker_user)
23
- begin
24
- tracker = Object.const_get(tracker_class, false).new
25
- tracker.user = tracker_user
26
- tracker.params = params
27
- output = tracker.method(action_name).call if tracker.respond_to? action_name
28
- rescue NameError
29
- output = ''
30
- end
31
- output
23
+ def tracker_klass
24
+ @tracker_klass ||= "#{namespace}#{controller_name.camelize}Tracker"
25
+ end
26
+
27
+ def resource
28
+ @resource ||= method(find_resource).call if find_resource
29
+ end
30
+
31
+ def find_resource
32
+ @resource_method ||= Devise.mappings.keys.map { |resource| "current_#{resource}" }
33
+ .select { |method_name| !method(method_name).call.nil? }
34
+ .first
35
+ rescue NameError
36
+ nil
37
+ end
38
+
39
+ def tracker_instance
40
+ @tracker_instance ||= Object.const_get(tracker_klass, false).new(resource, params)
41
+ rescue NameError
42
+ nil
43
+ end
44
+
45
+ def tracker_params
46
+ return nil unless tracker_exists?
47
+ tracker_instance.method(action_name).call
48
+ end
49
+
50
+ def tracker_exists?
51
+ tracker_instance && tracker_instance.respond_to?(action_name)
32
52
  end
33
53
 
34
54
  def namespace
@@ -3,7 +3,9 @@ module ActionTracker
3
3
  # nodoc
4
4
  module Render
5
5
  def track_event
6
- @tracker_params unless @tracker_params.nil?
6
+ output = session[:action_tracker].to_s
7
+ session[:action_tracker] = nil
8
+ output
7
9
  end
8
10
  end
9
11
  end
@@ -1,3 +1,3 @@
1
1
  module ActionTracker
2
- VERSION = "0.1.0.3"
2
+ VERSION = "0.1.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.3
4
+ version: 0.1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Taiar
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-04-18 00:00:00.000000000 Z
12
+ date: 2016-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails3_before_render
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.2'
42
+ - !ruby/object:Gem::Dependency
43
+ name: devise
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.4'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.4'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: bundler
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -68,7 +82,7 @@ dependencies:
68
82
  - !ruby/object:Gem::Version
69
83
  version: '10.0'
70
84
  - !ruby/object:Gem::Dependency
71
- name: rspec
85
+ name: rspec-rails
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - "~>"
@@ -81,6 +95,20 @@ dependencies:
81
95
  - - "~>"
82
96
  - !ruby/object:Gem::Version
83
97
  version: '3.0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rails
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '3.2'
84
112
  description: Easy way to track actions in your application without adding unnecessary
85
113
  code to your controllers.
86
114
  email: