public_activity 0.1
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/Gemfile +11 -0
- data/Gemfile.lock +85 -0
- data/MIT-LICENSE +20 -0
- data/README.md +44 -0
- data/Rakefile +13 -0
- data/lib/generators/public_activity.rb +11 -0
- data/lib/generators/public_activity/migration/migration_generator.rb +16 -0
- data/lib/generators/public_activity/migration/templates/migration.rb +16 -0
- data/lib/public_activity.rb +101 -0
- data/lib/public_activity/activity.rb +42 -0
- data/lib/public_activity/common.rb +29 -0
- data/lib/public_activity/creation.rb +30 -0
- data/lib/public_activity/tracked.rb +84 -0
- data/lib/public_activity/version.rb +3 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/version_spec.rb +11 -0
- metadata +116 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
abstract (1.0.0)
|
5
|
+
actionmailer (3.0.5)
|
6
|
+
actionpack (= 3.0.5)
|
7
|
+
mail (~> 2.2.15)
|
8
|
+
actionpack (3.0.5)
|
9
|
+
activemodel (= 3.0.5)
|
10
|
+
activesupport (= 3.0.5)
|
11
|
+
builder (~> 2.1.2)
|
12
|
+
erubis (~> 2.6.6)
|
13
|
+
i18n (~> 0.4)
|
14
|
+
rack (~> 1.2.1)
|
15
|
+
rack-mount (~> 0.6.13)
|
16
|
+
rack-test (~> 0.5.7)
|
17
|
+
tzinfo (~> 0.3.23)
|
18
|
+
activemodel (3.0.5)
|
19
|
+
activesupport (= 3.0.5)
|
20
|
+
builder (~> 2.1.2)
|
21
|
+
i18n (~> 0.4)
|
22
|
+
activerecord (3.0.5)
|
23
|
+
activemodel (= 3.0.5)
|
24
|
+
activesupport (= 3.0.5)
|
25
|
+
arel (~> 2.0.2)
|
26
|
+
tzinfo (~> 0.3.23)
|
27
|
+
activeresource (3.0.5)
|
28
|
+
activemodel (= 3.0.5)
|
29
|
+
activesupport (= 3.0.5)
|
30
|
+
activesupport (3.0.5)
|
31
|
+
arel (2.0.9)
|
32
|
+
builder (2.1.2)
|
33
|
+
diff-lcs (1.1.2)
|
34
|
+
erubis (2.6.6)
|
35
|
+
abstract (>= 1.0.0)
|
36
|
+
i18n (0.5.0)
|
37
|
+
mail (2.2.15)
|
38
|
+
activesupport (>= 2.3.6)
|
39
|
+
i18n (>= 0.4.0)
|
40
|
+
mime-types (~> 1.16)
|
41
|
+
treetop (~> 1.4.8)
|
42
|
+
mime-types (1.16)
|
43
|
+
mocha (0.9.12)
|
44
|
+
polyglot (0.3.1)
|
45
|
+
rack (1.2.1)
|
46
|
+
rack-mount (0.6.13)
|
47
|
+
rack (>= 1.0.0)
|
48
|
+
rack-test (0.5.7)
|
49
|
+
rack (>= 1.0)
|
50
|
+
rails (3.0.5)
|
51
|
+
actionmailer (= 3.0.5)
|
52
|
+
actionpack (= 3.0.5)
|
53
|
+
activerecord (= 3.0.5)
|
54
|
+
activeresource (= 3.0.5)
|
55
|
+
activesupport (= 3.0.5)
|
56
|
+
bundler (~> 1.0)
|
57
|
+
railties (= 3.0.5)
|
58
|
+
railties (3.0.5)
|
59
|
+
actionpack (= 3.0.5)
|
60
|
+
activesupport (= 3.0.5)
|
61
|
+
rake (>= 0.8.7)
|
62
|
+
thor (~> 0.14.4)
|
63
|
+
rake (0.8.7)
|
64
|
+
rspec (2.5.0)
|
65
|
+
rspec-core (~> 2.5.0)
|
66
|
+
rspec-expectations (~> 2.5.0)
|
67
|
+
rspec-mocks (~> 2.5.0)
|
68
|
+
rspec-core (2.5.1)
|
69
|
+
rspec-expectations (2.5.0)
|
70
|
+
diff-lcs (~> 1.1.2)
|
71
|
+
rspec-mocks (2.5.0)
|
72
|
+
thor (0.14.6)
|
73
|
+
treetop (1.4.9)
|
74
|
+
polyglot (>= 0.3.1)
|
75
|
+
tzinfo (0.3.24)
|
76
|
+
yard (0.6.4)
|
77
|
+
|
78
|
+
PLATFORMS
|
79
|
+
ruby
|
80
|
+
|
81
|
+
DEPENDENCIES
|
82
|
+
mocha
|
83
|
+
rails
|
84
|
+
rspec
|
85
|
+
yard
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 [name of plugin creator]
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# PublicActivity
|
2
|
+
|
3
|
+
public_activity provides smooth acitivity tracking for your ActiveRecord models in Rails 3.
|
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
|
+
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
You can install this gem as you would any other gem:
|
10
|
+
gem install public_activity
|
11
|
+
or in your Gemfile:
|
12
|
+
gem 'public_activity'
|
13
|
+
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
Create migration for activities (in your Rails project):
|
17
|
+
rails g public_activity:migration
|
18
|
+
rake db:migrate
|
19
|
+
|
20
|
+
Add 'tracked' to the model you want to keep track of:
|
21
|
+
class Article < ActiveRecord::Base
|
22
|
+
tracked
|
23
|
+
end
|
24
|
+
And now, by default create/update activites are recorded in activities table.
|
25
|
+
To display them you can do a simple query:
|
26
|
+
# some_controller.rb
|
27
|
+
def index
|
28
|
+
@activities = PublicActivity::Activity.all
|
29
|
+
end
|
30
|
+
And in your views:
|
31
|
+
<% for activity in @activities %>
|
32
|
+
<%= activity.text %><br/>
|
33
|
+
<% end %>
|
34
|
+
The only thing left is to add translations to your locale files, for example:
|
35
|
+
en:
|
36
|
+
activity:
|
37
|
+
article:
|
38
|
+
create: 'Article has been created'
|
39
|
+
update: 'Someone has edited the article'
|
40
|
+
|
41
|
+
This is only a basic example, refer to documentation for more options and customization!
|
42
|
+
|
43
|
+
## License
|
44
|
+
Copyright (c) 2011 Piotrek Okoński, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'yard'
|
3
|
+
require 'yard/rake/yardoc_task'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
7
|
+
t.pattern = "./spec/*_spec.rb"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Generate documentation for the public_activity plugin.'
|
11
|
+
YARD::Rake::YardocTask.new do |doc|
|
12
|
+
doc.files = ['lib/**/*.rb']
|
13
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
|
3
|
+
module PublicActivity
|
4
|
+
module Generators
|
5
|
+
module Base
|
6
|
+
def source_root
|
7
|
+
@_public_activity_source_root ||= File.expand_path(File.join('../public_activity', generator_name, 'templates'), __FILE__)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'generators/public_activity'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
|
4
|
+
module PublicActivity
|
5
|
+
module Generators
|
6
|
+
class MigrationGenerator < ActiveRecord::Generators::Base
|
7
|
+
extend Base
|
8
|
+
|
9
|
+
argument :name, :type => :string, :default => 'create_activities'
|
10
|
+
|
11
|
+
def generate_files
|
12
|
+
migration_template 'migration.rb', "db/migrate/#{name}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateActivities < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :activities do |t|
|
4
|
+
t.belongs_to :trackable, :polymorphic => true
|
5
|
+
t.belongs_to :owner, :polymorphic => true
|
6
|
+
t.string :key
|
7
|
+
t.text :parameters
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.down
|
14
|
+
drop_table :activities
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require 'active_support/dependencies'
|
3
|
+
require 'active_record'
|
4
|
+
# +public_activity+ keeps track of changes made to models
|
5
|
+
# and allows for easy displaying of them.
|
6
|
+
#
|
7
|
+
# Basic usage requires adding one line to your models:
|
8
|
+
#
|
9
|
+
# class Article < ActiveRecord::Base
|
10
|
+
# tracked
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# And creating a table for activities, by doing this:
|
14
|
+
# rails generate public_activity:migration
|
15
|
+
# rake db:migrate
|
16
|
+
#
|
17
|
+
# Now when saved, public_activity will create
|
18
|
+
# an Activity record containing information about that changed/created
|
19
|
+
# model.
|
20
|
+
# == Displaying Activities:
|
21
|
+
#
|
22
|
+
# Minimal example would be:
|
23
|
+
#
|
24
|
+
# <% for activity in PublicActivity::Activity.all %>
|
25
|
+
# <%= activity.text %><br/>
|
26
|
+
# <% end %>
|
27
|
+
# Now you will need to add translations in your locale .yml, for the example
|
28
|
+
# provided above that would be:
|
29
|
+
# en:
|
30
|
+
# activity:
|
31
|
+
# create: 'New article has been created'
|
32
|
+
# update: 'Someone modified the article'
|
33
|
+
#
|
34
|
+
# Check {PublicActivity::ClassMethods#tracked} for more details about customizing and specifing
|
35
|
+
# ownership to users.
|
36
|
+
module PublicActivity
|
37
|
+
extend ActiveSupport::Concern
|
38
|
+
extend ActiveSupport::Autoload
|
39
|
+
autoload :Activity
|
40
|
+
autoload :Tracked
|
41
|
+
autoload :Creation
|
42
|
+
autoload :VERSION
|
43
|
+
autoload :Common
|
44
|
+
|
45
|
+
included do
|
46
|
+
class_attribute :activity_owner_global, :activity_params_global
|
47
|
+
self.activity_owner_global = nil
|
48
|
+
self.activity_params_global = {}
|
49
|
+
include Tracked
|
50
|
+
end
|
51
|
+
|
52
|
+
module ClassMethods
|
53
|
+
# Adds required callbacks for creating and updating
|
54
|
+
# tracked models and adds +activities+ relation for listing
|
55
|
+
# associated activities.
|
56
|
+
#
|
57
|
+
# == Parameters:
|
58
|
+
# :owner::
|
59
|
+
# You can pass a Symbol or a String with an attribute from
|
60
|
+
# which public_activity should take +user id+ responsible for
|
61
|
+
# this activity.
|
62
|
+
#
|
63
|
+
# For example:
|
64
|
+
# tracked :owner => :author
|
65
|
+
# will take +owner+ from tracked model's +author+ attribute.
|
66
|
+
#
|
67
|
+
# If you need more complex logic, you can pass a Proc:
|
68
|
+
# tracked :owner => Proc.new{ User.first }
|
69
|
+
# :params::
|
70
|
+
# Accepts a Hash containing parameters you wish
|
71
|
+
# to pass to every {Activity} created from this model.
|
72
|
+
#
|
73
|
+
# For example, if you want to pass a parameter that
|
74
|
+
# should be in every {Activity}, you can do this:
|
75
|
+
# tracked :params => {:user_name => "Piotrek"}
|
76
|
+
# These params are passed to i18n.translate
|
77
|
+
# when using {PublicActivity::Activity#text}, which returns
|
78
|
+
# already translated {Activity} message.
|
79
|
+
# For more dynamic settings refer to {Activity} model
|
80
|
+
# documentation.
|
81
|
+
def tracked(options = {})
|
82
|
+
return if tracked?
|
83
|
+
include Creation
|
84
|
+
include Common
|
85
|
+
|
86
|
+
if options[:owner]
|
87
|
+
self.activity_owner_global = options[:owner]
|
88
|
+
end
|
89
|
+
if options[:params]
|
90
|
+
self.activity_params_global = options[:params]
|
91
|
+
end
|
92
|
+
has_many :activities, :class_name => "PublicActivity::Activity", :as => :trackable
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
ActiveRecord::Base.send :include, PublicActivity
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'i18n'
|
3
|
+
module PublicActivity
|
4
|
+
# The ActiveRecord model containing
|
5
|
+
# details about recorded activity.
|
6
|
+
class Activity < ActiveRecord::Base
|
7
|
+
# Define polymorphic association to the parent
|
8
|
+
belongs_to :trackable, :polymorphic => true
|
9
|
+
# Define ownership to a resource responsible for this activity
|
10
|
+
belongs_to :owner, :polymorphic => true
|
11
|
+
# Serialize parameters Hash
|
12
|
+
serialize :parameters, Hash
|
13
|
+
|
14
|
+
# Virtual attribute returning already
|
15
|
+
# translated key with params passed
|
16
|
+
# to i18n.translate function
|
17
|
+
# == Example:
|
18
|
+
#
|
19
|
+
# Let's say you want to show article's title inside Activity message.
|
20
|
+
#
|
21
|
+
# #config/locales/en.yml
|
22
|
+
# en:
|
23
|
+
# activity:
|
24
|
+
# article:
|
25
|
+
# create: "Someone has created an article '%{title}'"
|
26
|
+
# update: "Article '%{title}' has been modified"
|
27
|
+
# And in controller:
|
28
|
+
#
|
29
|
+
# def create
|
30
|
+
# @article = Article.new
|
31
|
+
# @article.title = "Rails 3.0.5 released!"
|
32
|
+
# @article.activity_params = {:title => @article.title}
|
33
|
+
# @article.save
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# Now when you list articles, you should see:
|
37
|
+
# @article.activities.last.text #=> "Someone has created an article 'Rails 3.0.5 released!'"
|
38
|
+
def text
|
39
|
+
I18n.t(key, parameters || {})
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module PublicActivity
|
2
|
+
module Common
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
module InstanceMethods
|
6
|
+
# Prepare settings used during creation of Activity record.
|
7
|
+
# params passed directly to tracked model have priority over
|
8
|
+
# settings specified in tracked() method
|
9
|
+
def prepare_settings
|
10
|
+
# user responsible for the activity
|
11
|
+
if self.activity_owner
|
12
|
+
owner = self.activity_owner
|
13
|
+
else
|
14
|
+
case self.activity_owner_global
|
15
|
+
when Symbol, String
|
16
|
+
owner = self[self.class.activity_owner_global]
|
17
|
+
when Proc
|
18
|
+
owner = self.class.activity_owner_global.call
|
19
|
+
end
|
20
|
+
end
|
21
|
+
#customizable parameters
|
22
|
+
parameters = self.class.activity_params_global
|
23
|
+
parameters.merge! self.activity_params if self.activity_params
|
24
|
+
return {:owner => owner, :parameters => parameters}
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PublicActivity
|
2
|
+
module Creation
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
after_create :activity_on_create
|
7
|
+
after_update :activity_on_update
|
8
|
+
end
|
9
|
+
|
10
|
+
module InstanceMethods
|
11
|
+
private
|
12
|
+
# Creates activity based on supplied arguments
|
13
|
+
def create_activity(key, owner, params)
|
14
|
+
self.activities.create(:key => key, :owner => owner, :parameters => params)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Creates activity upon creation of the tracked model
|
18
|
+
def activity_on_create
|
19
|
+
settings = prepare_settings
|
20
|
+
create_activity("activity."+self.class.name.downcase+".create", settings[:owner], settings[:parameters])
|
21
|
+
end
|
22
|
+
|
23
|
+
# Creates activity upon modification of the tracked model
|
24
|
+
def activity_on_update
|
25
|
+
settings = prepare_settings
|
26
|
+
create_activity("activity."+self.class.name.downcase+".update", settings[:owner], settings[:parameters])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module PublicActivity
|
2
|
+
# Add a flag to determine whether a model class is being tracked
|
3
|
+
module Tracked
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
# Set or get parameters that will be passed to {Activity} when saving
|
7
|
+
#
|
8
|
+
# == Usage:
|
9
|
+
# In model:
|
10
|
+
#
|
11
|
+
# class Article < ActiveRecord::Base
|
12
|
+
# tracked
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# In controller
|
16
|
+
# @article = Article.new
|
17
|
+
# @article.activity_params = {:article_title => @article.title}
|
18
|
+
# @article.save
|
19
|
+
# This way you can pass strings that should remain constant, even when {Article}
|
20
|
+
# changes after creating this {Activity}.
|
21
|
+
attr_accessor :activity_params
|
22
|
+
@activity_params = {}
|
23
|
+
# Set or get user id responsible for the {Activity}.
|
24
|
+
# Same rules apply like with the other attributes described.
|
25
|
+
#
|
26
|
+
# == Usage:
|
27
|
+
# In model:
|
28
|
+
#
|
29
|
+
# class Article < ActiveRecord::Base
|
30
|
+
# tracked
|
31
|
+
# end
|
32
|
+
# Controller:
|
33
|
+
#
|
34
|
+
# @article = Article.new
|
35
|
+
# @article.activity_owner = current_user #where current_user is an object of logged in user
|
36
|
+
# @article.save
|
37
|
+
# @article.activities.last.user #=> Returns User object
|
38
|
+
attr_accessor :activity_owner
|
39
|
+
@activity_owner = nil
|
40
|
+
# Set or get custom i18n key passed to {Activity}
|
41
|
+
#
|
42
|
+
# == Usage:
|
43
|
+
# In model:
|
44
|
+
#
|
45
|
+
# class Article < ActiveRecord::Base
|
46
|
+
# tracked
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# In controller:
|
50
|
+
#
|
51
|
+
# @article = Article.new
|
52
|
+
# @article.save
|
53
|
+
# @article.activities.last.key #=> "activity.article.create"
|
54
|
+
# By default, key looks like "activity.{class_name}.{create|update}"
|
55
|
+
#
|
56
|
+
# You can customize it, by setting your own key:
|
57
|
+
# @article = Article.new
|
58
|
+
# @article.activity_key = "my.custom.article.key"
|
59
|
+
# @article.save
|
60
|
+
# @article.activities.last.key #=> "my.custom.article.key"
|
61
|
+
attr_accessor :activity_key
|
62
|
+
@activity_key = nil
|
63
|
+
# Overrides the +tracked+ method to first define the +tracked?+ class method before
|
64
|
+
# deferring to the original +tracked+.
|
65
|
+
module ClassMethods
|
66
|
+
def tracked(*args)
|
67
|
+
super(*args)
|
68
|
+
|
69
|
+
class << self
|
70
|
+
def tracked?
|
71
|
+
true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# For ActiveRecord::Base models that do not call the +tracked+ method, the +tracked?+
|
77
|
+
# will return false
|
78
|
+
def tracked?
|
79
|
+
false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: public_activity
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: "0.1"
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- "Piotrek Oko\xC5\x84ski"
|
9
|
+
- "Kuba Oko\xC5\x84ski"
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2011-03-07 00:00:00 +01:00
|
15
|
+
default_executable:
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: activerecord
|
19
|
+
prerelease: false
|
20
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 3.0.0
|
26
|
+
type: :runtime
|
27
|
+
version_requirements: *id001
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activesupport
|
30
|
+
prerelease: false
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 3.0.0
|
37
|
+
type: :runtime
|
38
|
+
version_requirements: *id002
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: i18n
|
41
|
+
prerelease: false
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.5.0
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id003
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
type: :development
|
60
|
+
version_requirements: *id004
|
61
|
+
description: Smooth acitivity tracking for your ActiveRecord models. Provides Activity model with details about actions performed by your users, like adding comments, responding etc.
|
62
|
+
email: piotrek@okonski.org
|
63
|
+
executables: []
|
64
|
+
|
65
|
+
extensions: []
|
66
|
+
|
67
|
+
extra_rdoc_files: []
|
68
|
+
|
69
|
+
files:
|
70
|
+
- lib/generators/public_activity.rb
|
71
|
+
- lib/generators/public_activity/migration/migration_generator.rb
|
72
|
+
- lib/generators/public_activity/migration/templates/migration.rb
|
73
|
+
- lib/public_activity.rb
|
74
|
+
- lib/public_activity/activity.rb
|
75
|
+
- lib/public_activity/common.rb
|
76
|
+
- lib/public_activity/creation.rb
|
77
|
+
- lib/public_activity/tracked.rb
|
78
|
+
- lib/public_activity/version.rb
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- Rakefile
|
82
|
+
- README.md
|
83
|
+
- MIT-LICENSE
|
84
|
+
- spec/spec_helper.rb
|
85
|
+
- spec/version_spec.rb
|
86
|
+
has_rdoc: true
|
87
|
+
homepage: https://github.com/okonski/public_activity
|
88
|
+
licenses: []
|
89
|
+
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: "0"
|
107
|
+
requirements: []
|
108
|
+
|
109
|
+
rubyforge_project:
|
110
|
+
rubygems_version: 1.6.1
|
111
|
+
signing_key:
|
112
|
+
specification_version: 3
|
113
|
+
summary: Smooth acitivity tracking for ActiveRecord models
|
114
|
+
test_files:
|
115
|
+
- spec/spec_helper.rb
|
116
|
+
- spec/version_spec.rb
|