public_activity 0.3.3 → 0.3.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.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # PublicActivity ![Build Status](http://travis-ci.org/pokonski/public_activity.png)
2
2
 
3
- public_activity provides smooth acitivity tracking for your ActiveRecord models in Rails 3.
3
+ public_activity provides smooth activity tracking for your ActiveRecord models in Rails 3.
4
4
  Simply put: it records what has been changed or edited and gives you the ability to present those recorded activities to users - in a similar way Github does it.
5
5
 
6
6
  ## Example
@@ -26,58 +26,58 @@ Create migration for activities (in your Rails project):
26
26
  Add 'tracked' to the model you want to keep track of:
27
27
 
28
28
  ```ruby
29
- class Article < ActiveRecord::Base
30
- tracked
31
- end
29
+ class Article < ActiveRecord::Base
30
+ tracked
31
+ end
32
32
  ```
33
33
 
34
34
  To default the owner to the current user (optional)
35
35
 
36
36
  ```ruby
37
- #Aplication Controller
38
- before_filter :define_current_user
39
-
40
- def define_current_user
41
- User.current_user = current_user
42
- end
43
-
44
- #User.rb (model)
45
- class User < ActiveRecord::Base
46
- cattr_accessor :current_user
47
- end
37
+ #Aplication Controller
38
+ before_filter :define_current_user
39
+
40
+ def define_current_user
41
+ User.current_user = current_user
42
+ end
43
+
44
+ #User.rb (model)
45
+ class User < ActiveRecord::Base
46
+ cattr_accessor :current_user
47
+ end
48
48
  ```
49
49
 
50
50
  And now, by default create/update/destroy activities are recorded in activities table.
51
51
  To display them you can do a simple query:
52
52
 
53
53
  ```ruby
54
- # some_controller.rb
55
- def index
56
- @activities = PublicActivity::Activity.all
57
- end
54
+ # some_controller.rb
55
+ def index
56
+ @activities = PublicActivity::Activity.all
57
+ end
58
58
  ```
59
59
 
60
60
  And in your views:
61
61
 
62
62
  ```erb
63
- <% for activity in @activities %>
64
- <%= activity.text %><br/>
65
- <% end %>
63
+ <% for activity in @activities %>
64
+ <%= activity.text %><br/>
65
+ <% end %>
66
66
  ```
67
67
 
68
68
  The only thing left is to add templates (config/pba.yml), for example:
69
69
 
70
70
  ```yaml
71
- activity:
72
- article:
73
- create: 'Article has been created'
74
- update: 'Someone has edited the article'
75
- destroy: 'Some user removed an article!'
71
+ activity:
72
+ article:
73
+ create: 'Article has been created'
74
+ update: 'Someone has edited the article'
75
+ destroy: 'Some user removed an article!'
76
76
  ```
77
77
  Place this in a file and reference it in a Rails initializer.
78
78
 
79
79
  ```ruby
80
- PublicActivity::Activity.template = YAML.load_file("#{RAILS_ROOT}/config/pba.yml")
80
+ PublicActivity::Activity.template = YAML.load_file("#{Rails.root}/config/pba.yml")
81
81
  ```
82
82
 
83
83
  This is only a basic example, refer to documentation for more options and customization!
@@ -42,7 +42,7 @@ module PublicActivity
42
42
  def text(params = {})
43
43
  begin
44
44
  erb_template = resolveTemplate(key)
45
- if !erb_template.nil?
45
+ if erb_template
46
46
  parameters.merge! params
47
47
  renderer = ERB.new(erb_template)
48
48
  renderer.result(binding)
@@ -56,17 +56,13 @@ module PublicActivity
56
56
 
57
57
  private
58
58
  def resolveTemplate(key)
59
- res = nil
60
- if !self.template.nil?
61
- key.split(".").each do |k|
62
- if res.nil?
63
- res = self.template[k]
64
- else
65
- res = res[k]
66
- end
67
- end
59
+ res = nil
60
+ if self.template
61
+ key.split(".").each do |k|
62
+ res = (res ? res[k] : self.template[k])
68
63
  end
69
- res
64
+ end
65
+ res
70
66
  end
71
67
  end
72
68
  end
@@ -25,7 +25,7 @@ module PublicActivity
25
25
 
26
26
  activity = self.activities.create(:key => key, :owner => owner, :parameters => params)
27
27
  if !Pusher.app_id.nil? && !Pusher.key.nil? && !Pusher.secret.nil?
28
- Pusher['acitivty-channel'].trigger('acitivty-create', {:key => key, :owner => owner, :parameters => params, :text => activity.text, :object => self})
28
+ Pusher['activity-channel'].trigger('activity-create', {:key => key, :owner => owner, :parameters => params, :text => activity.text, :object => self})
29
29
  end
30
30
  end
31
31
 
@@ -43,7 +43,7 @@ module PublicActivity
43
43
 
44
44
  case owner
45
45
  when Symbol
46
- owner = self.try(owner)
46
+ owner = self.__send__(owner)
47
47
  when Proc
48
48
  owner = owner.call(self)
49
49
  end
@@ -2,12 +2,12 @@ module PublicActivity
2
2
  # Main module extending classes we want to keep track of.
3
3
  module Tracked
4
4
  extend ActiveSupport::Concern
5
-
5
+
6
6
  included do
7
7
  class_attribute :activity_owner_global, :activity_params_global
8
8
  self.activity_owner_global = nil
9
9
  self.activity_params_global = {}
10
- end
10
+ end
11
11
  # Set or get parameters that will be passed to {Activity} when saving
12
12
  #
13
13
  # == Usage:
@@ -15,7 +15,7 @@ module PublicActivity
15
15
  #
16
16
  # class Article < ActiveRecord::Base
17
17
  # tracked
18
- # end
18
+ # end
19
19
  #
20
20
  # In controller
21
21
  # @article = Article.new
@@ -32,7 +32,7 @@ module PublicActivity
32
32
  #
33
33
  # class Article < ActiveRecord::Base
34
34
  # tracked
35
- # end
35
+ # end
36
36
  # Controller:
37
37
  #
38
38
  # @article = Article.new
@@ -50,7 +50,7 @@ module PublicActivity
50
50
  #
51
51
  # class Article < ActiveRecord::Base
52
52
  # tracked
53
- # end
53
+ # end
54
54
  #
55
55
  # In controller:
56
56
  #
@@ -66,19 +66,19 @@ module PublicActivity
66
66
  # @article.activities.last.key #=> "my.custom.article.key"
67
67
  attr_accessor :activity_key
68
68
  @activity_key = nil
69
-
69
+
70
70
  # Module with basic +tracked+ method that enables tracking models.
71
71
  module ClassMethods
72
72
  # Adds required callbacks for creating and updating
73
73
  # tracked models and adds +activities+ relation for listing
74
74
  # associated activities.
75
- #
75
+ #
76
76
  # == Parameters:
77
77
  # [:owner]
78
78
  # Specify the owner of the {Activity} (person responsible for the action).
79
79
  # It can be a Proc, Symbol or an ActiveRecord object:
80
80
  # == Examples:
81
- # @article.activity :owner => :author
81
+ # @article.activity :owner => :author
82
82
  # @article.activity :owner => {|o| o.author}
83
83
  # @article.activity :owner => User.where(:login => 'piotrek').first
84
84
  # Keep in mind that owner relation is polymorphic, so you can't just provide id number of the owner object.
@@ -89,48 +89,50 @@ module PublicActivity
89
89
  # @article.activity :parameters => {:title => @article.title, :short => truncate(@article.text, :length => 50)}
90
90
  # Everything specified here has a lower priority than parameters specified directly in {#activity} method.
91
91
  # So treat it as a place where you provide 'default' values.
92
- # For more dynamic settings refer to {Activity} model
92
+ # For more dynamic settings refer to {Activity} model
93
93
  # documentation.
94
94
  # [:skip_defaults]
95
95
  # Disables recording of activities on create/update/destroy leaving that to programmer's choice. Check {PublicActivity::Common#create_activity}
96
96
  # for a guide on how to manually record activities.
97
97
  def tracked(options = {})
98
98
  include Common
99
-
99
+
100
100
  all_options = [:create, :update, :destroy]
101
-
102
- if !options[:skip_defaults] && !options[:only] && !options[:except]
101
+
102
+ if !options[:skip_defaults] && !options[:only] && !options[:except]
103
103
  include Creation
104
104
  include Destruction
105
105
  include Update
106
106
  end
107
-
107
+
108
108
  if options[:except].is_a? Array
109
109
  options[:only] = all_options - options[:except]
110
110
  end
111
-
111
+
112
112
  if options[:only].is_a? Array
113
- options[:only].each do |opt|
114
- if opt.eql?(:create)
115
- include Creation
116
- elsif opt.eql?(:destroy)
117
- include Destruction
118
- elsif opt.eql?(:update)
119
- include Update
120
- end
113
+ options[:only].each do |opt|
114
+ if opt.eql?(:create)
115
+ include Creation
116
+ elsif opt.eql?(:destroy)
117
+ include Destruction
118
+ elsif opt.eql?(:update)
119
+ include Update
121
120
  end
121
+ end
122
122
  end
123
-
123
+
124
124
  if options[:owner]
125
125
  self.activity_owner_global = options[:owner]
126
126
  end
127
127
  if options[:params]
128
128
  self.activity_params_global = options[:params]
129
129
  end
130
- has_many :activities, :class_name => "PublicActivity::Activity", :as => :trackable
130
+ has_many :activities, :class_name => "PublicActivity::Activity", :as => :trackable
131
+
132
+ nil
131
133
  end
132
134
  end
133
-
135
+
134
136
  # A shortcut method for setting custom key, owner and parameters of {Activity}
135
137
  # in one line. Accepts a hash with 3 keys:
136
138
  # :key, :owner, :params. You can specify all of them or just the ones you want to overwrite.
@@ -1,4 +1,4 @@
1
1
  module PublicActivity
2
2
  # A constant with gem's version
3
- VERSION = '0.3.3'
3
+ VERSION = '0.3.4'
4
4
  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: 0.3.3
4
+ version: 0.3.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-19 00:00:00.000000000 Z
13
+ date: 2012-08-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  version: '0'
148
148
  requirements: []
149
149
  rubyforge_project:
150
- rubygems_version: 1.8.19
150
+ rubygems_version: 1.8.24
151
151
  signing_key:
152
152
  specification_version: 3
153
153
  summary: Smooth activity tracking for ActiveRecord models