public_activity 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -1
- data/README.md +20 -3
- data/Rakefile +3 -0
- data/lib/public_activity.rb +3 -1
- data/lib/public_activity/activity.rb +38 -14
- data/lib/public_activity/common.rb +10 -2
- data/lib/public_activity/creation.rb +0 -7
- data/lib/public_activity/tracked.rb +21 -1
- data/lib/public_activity/update.rb +19 -0
- data/lib/public_activity/version.rb +1 -1
- data/spec/db/database.yml +18 -0
- data/spec/db/schema.rb +27 -0
- data/spec/fixtures/categories.yml +18 -0
- data/spec/fixtures/departments.yml +3 -0
- data/spec/fixtures/notes.yml +8 -0
- data/spec/public_activity_spec.rb +131 -0
- data/spec/spec_helper.rb +30 -5
- data/spec/support/en.yml +6 -0
- data/spec/support/models.rb +14 -0
- data/spec/support/pba.yml +9 -0
- data/spec/version_spec.rb +3 -3
- metadata +43 -14
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# PublicActivity
|
1
|
+
# PublicActivity ![Build Status](http://travis-ci.org/sbower/public_activity.png)
|
2
2
|
|
3
3
|
public_activity provides smooth acitivity 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.
|
@@ -28,6 +28,20 @@ Add 'tracked' to the model you want to keep track of:
|
|
28
28
|
class Article < ActiveRecord::Base
|
29
29
|
tracked
|
30
30
|
end
|
31
|
+
|
32
|
+
To default the owner to the current user (optional)
|
33
|
+
|
34
|
+
#Aplication Controller
|
35
|
+
before_filter :define_current_user
|
36
|
+
|
37
|
+
def define_current_user
|
38
|
+
User.current_user = current_user
|
39
|
+
end
|
40
|
+
|
41
|
+
#User.rb (model)
|
42
|
+
class User < ActiveRecord::Base
|
43
|
+
cattr_accessor :current_user
|
44
|
+
end
|
31
45
|
|
32
46
|
And now, by default create/update/destroy activities are recorded in activities table.
|
33
47
|
To display them you can do a simple query:
|
@@ -43,15 +57,18 @@ And in your views:
|
|
43
57
|
<%= activity.text %><br/>
|
44
58
|
<% end %>
|
45
59
|
|
46
|
-
The only thing left is to add
|
60
|
+
The only thing left is to add templates (config/pba.yml), for example:
|
47
61
|
|
48
|
-
en:
|
49
62
|
activity:
|
50
63
|
article:
|
51
64
|
create: 'Article has been created'
|
52
65
|
update: 'Someone has edited the article'
|
53
66
|
destroy: 'Some user removed an article!'
|
54
67
|
|
68
|
+
Place this in a file and reference it in a rail initializer.
|
69
|
+
|
70
|
+
PublicActivity::Activity.template = YAML.load_file("#{RAILS_ROOT}/config/pba.yml")
|
71
|
+
|
55
72
|
This is only a basic example, refer to documentation for more options and customization!
|
56
73
|
## Documentation
|
57
74
|
|
data/Rakefile
CHANGED
data/lib/public_activity.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'active_support/concern'
|
2
2
|
require 'active_support/dependencies'
|
3
3
|
require 'active_record'
|
4
|
+
require 'pusher'
|
4
5
|
# +public_activity+ keeps track of changes made to models
|
5
6
|
# and allows for easy displaying of them.
|
6
7
|
#
|
@@ -41,13 +42,14 @@ module PublicActivity
|
|
41
42
|
autoload :Activity
|
42
43
|
autoload :Tracked
|
43
44
|
autoload :Creation
|
45
|
+
autoload :Update
|
44
46
|
autoload :Destruction
|
45
47
|
autoload :VERSION
|
46
48
|
autoload :Common
|
47
49
|
|
48
50
|
included do
|
49
51
|
include Tracked
|
50
|
-
include Activist
|
52
|
+
include Activist
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'active_record'
|
2
|
-
|
2
|
+
|
3
3
|
module PublicActivity
|
4
4
|
# The ActiveRecord model containing
|
5
5
|
# details about recorded activity.
|
@@ -11,22 +11,21 @@ module PublicActivity
|
|
11
11
|
# Serialize parameters Hash
|
12
12
|
serialize :parameters, Hash
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
#
|
17
|
-
#
|
14
|
+
class_attribute :template
|
15
|
+
|
16
|
+
# Virtual attribute returning text description of the activity
|
17
|
+
# using basic ERB templating
|
18
18
|
#
|
19
19
|
# == Example:
|
20
20
|
#
|
21
21
|
# Let's say you want to show article's title inside Activity message.
|
22
22
|
#
|
23
|
-
# #config/
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# destroy: "Someone deleted article '%{title}'!"
|
23
|
+
# #config/pba.yml
|
24
|
+
# activity:
|
25
|
+
# article:
|
26
|
+
# create: "New <%= trackable.name %> article has been created"
|
27
|
+
# update: 'Someone modified the article'
|
28
|
+
# destroy: 'Someone deleted the article!'
|
30
29
|
#
|
31
30
|
# And in controller:
|
32
31
|
#
|
@@ -40,8 +39,33 @@ module PublicActivity
|
|
40
39
|
# Now when you list articles, you should see:
|
41
40
|
# @article.activities.last.text #=> "Someone has created an article 'Rails 3.0.5 released!'"
|
42
41
|
def text(params = {})
|
43
|
-
|
44
|
-
|
42
|
+
begin
|
43
|
+
erb_template = resolveTemplate(key)
|
44
|
+
if !erb_template.nil?
|
45
|
+
parameters.merge! params
|
46
|
+
renderer = ERB.new(erb_template)
|
47
|
+
renderer.result(binding)
|
48
|
+
else
|
49
|
+
"Template not defined"
|
50
|
+
end
|
51
|
+
rescue
|
52
|
+
"Template not defined"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def resolveTemplate(key)
|
58
|
+
res = nil
|
59
|
+
if !self.template.nil?
|
60
|
+
key.split(".").each do |k|
|
61
|
+
if res.nil?
|
62
|
+
res = self.template[k]
|
63
|
+
else
|
64
|
+
res = res[k]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
res
|
45
69
|
end
|
46
70
|
end
|
47
71
|
end
|
@@ -19,8 +19,16 @@ module PublicActivity
|
|
19
19
|
# [params]
|
20
20
|
# Hash with parameters passed directly into i18n.translate method - *optional*
|
21
21
|
#
|
22
|
-
def create_activity(key, owner = nil, params = {})
|
23
|
-
|
22
|
+
def create_activity(key, owner = nil, params = {})
|
23
|
+
|
24
|
+
if owner.nil? && ((defined? User) != nil) && User.respond_to?(:current_user)
|
25
|
+
owner = User.current_user
|
26
|
+
end
|
27
|
+
|
28
|
+
activity = self.activities.create(:key => key, :owner => owner, :parameters => params)
|
29
|
+
if !Pusher.app_id.nil? && !Pusher.key.nil? && !Pusher.secret.nil?
|
30
|
+
Pusher['acitivty-channel'].trigger('acitivty-create', {:key => key, :owner => owner, :parameters => params, :text => activity.text, :object => self})
|
31
|
+
end
|
24
32
|
end
|
25
33
|
|
26
34
|
private
|
@@ -5,7 +5,6 @@ module PublicActivity
|
|
5
5
|
|
6
6
|
included do
|
7
7
|
after_create :activity_on_create
|
8
|
-
after_update :activity_on_update
|
9
8
|
end
|
10
9
|
# Handlers responsible for creating Activities.
|
11
10
|
module InstanceMethods
|
@@ -15,12 +14,6 @@ module PublicActivity
|
|
15
14
|
settings = prepare_settings
|
16
15
|
create_activity(settings[:key] || "activity."+self.class.name.parameterize('_')+".create", settings[:owner], settings[:parameters])
|
17
16
|
end
|
18
|
-
|
19
|
-
# Creates activity upon modification of the tracked model
|
20
|
-
def activity_on_update
|
21
|
-
settings = prepare_settings
|
22
|
-
create_activity(settings[:key] || "activity."+self.class.name.parameterize('_')+".update", settings[:owner], settings[:parameters])
|
23
|
-
end
|
24
17
|
end
|
25
18
|
end
|
26
19
|
end
|
@@ -96,9 +96,29 @@ module PublicActivity
|
|
96
96
|
# for a guide on how to manually record activities.
|
97
97
|
def tracked(options = {})
|
98
98
|
include Common
|
99
|
-
|
99
|
+
|
100
|
+
all_options = [:create, :update, :destroy]
|
101
|
+
|
102
|
+
if !options[:skip_defaults] && !options[:only] && !options[:except]
|
100
103
|
include Creation
|
101
104
|
include Destruction
|
105
|
+
include Update
|
106
|
+
end
|
107
|
+
|
108
|
+
if options[:except].is_a? Array
|
109
|
+
options[:only] = all_options - options[:except]
|
110
|
+
end
|
111
|
+
|
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
|
121
|
+
end
|
102
122
|
end
|
103
123
|
|
104
124
|
if options[:owner]
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module PublicActivity
|
2
|
+
# Handles creation of Activities upon destruction and update of tracked model.
|
3
|
+
module Update
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
after_update :activity_on_update
|
8
|
+
end
|
9
|
+
# Handlers responsible for updating Activities.
|
10
|
+
module InstanceMethods
|
11
|
+
private
|
12
|
+
# Creates activity upon modification of the tracked model
|
13
|
+
def activity_on_update
|
14
|
+
settings = prepare_settings
|
15
|
+
create_activity(settings[:key] || "activity."+self.class.name.parameterize('_')+".update", settings[:owner], settings[:parameters])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
sqlite3:
|
2
|
+
adapter: <%= "jdbc" if defined? JRUBY_VERSION %>sqlite3
|
3
|
+
database: awesome_nested_set.sqlite3.db
|
4
|
+
sqlite3mem:
|
5
|
+
adapter: <%= "jdbc" if defined? JRUBY_VERSION %>sqlite3
|
6
|
+
database: ":memory:"
|
7
|
+
postgresql:
|
8
|
+
adapter: postgresql
|
9
|
+
username: postgres
|
10
|
+
password: postgres
|
11
|
+
database: public_activity_plugin_test
|
12
|
+
min_messages: ERROR
|
13
|
+
mysql:
|
14
|
+
adapter: mysql2
|
15
|
+
host: localhost
|
16
|
+
username: root
|
17
|
+
password:
|
18
|
+
database: public_activity_plugin_test
|
data/spec/db/schema.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
ActiveRecord::Schema.define(:version => 0) do
|
2
|
+
|
3
|
+
create_table :categories, :force => true do |t|
|
4
|
+
t.column :name, :string
|
5
|
+
end
|
6
|
+
|
7
|
+
create_table :departments, :force => true do |t|
|
8
|
+
t.column :name, :string
|
9
|
+
end
|
10
|
+
|
11
|
+
create_table :notes, :force => true do |t|
|
12
|
+
t.column :body, :text
|
13
|
+
t.column :category_id, :integer
|
14
|
+
end
|
15
|
+
|
16
|
+
create_table :activities, :force => true do |t|
|
17
|
+
t.integer :trackable_id
|
18
|
+
t.string :trackable_type
|
19
|
+
t.integer :owner_id
|
20
|
+
t.string :owner_type
|
21
|
+
t.string :key
|
22
|
+
t.text :parameters
|
23
|
+
t.datetime :created_at
|
24
|
+
t.datetime :updated_at
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "public_activity" do
|
4
|
+
before(:all) do
|
5
|
+
self.class.fixtures :categories, :departments, :notes
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "tracked" do
|
9
|
+
|
10
|
+
it "should create a record in activity table" do
|
11
|
+
#we should have no records
|
12
|
+
PublicActivity::Activity.count.should == 0
|
13
|
+
|
14
|
+
lambda do
|
15
|
+
category = Category.create(:name => "test cat")
|
16
|
+
activity = PublicActivity::Activity.last
|
17
|
+
activity.trackable_id.should == category.id
|
18
|
+
end.should change(PublicActivity::Activity, :count).by(1)
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "activity model" do
|
22
|
+
before(:each) do
|
23
|
+
@category = Category.create(:name => "test cat")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have a nil owner" do
|
27
|
+
activity = PublicActivity::Activity.last
|
28
|
+
activity.owner.should be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should have an owner" do
|
32
|
+
department = Department.create(:name => "test dept")
|
33
|
+
@category.activity_owner = department
|
34
|
+
@category.save
|
35
|
+
|
36
|
+
activity = PublicActivity::Activity.last
|
37
|
+
activity.owner.should_not be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should have activites" do
|
41
|
+
@category.activities.should_not be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should translate" do
|
45
|
+
@category.activities.last.text.should_not be_nil
|
46
|
+
@category.activities.last.text.should == "New test cat category has been created"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should track deletes" do
|
50
|
+
lambda do
|
51
|
+
@category.destroy
|
52
|
+
@category.activities.last.text.should == "Someone deleted the category!"
|
53
|
+
end.should change(PublicActivity::Activity, :count).by(1)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should track updates" do
|
57
|
+
lambda do
|
58
|
+
@category.name = "new cat"
|
59
|
+
@category.save
|
60
|
+
@category.activities.last.text.should == "Someone modified the category"
|
61
|
+
end.should change(PublicActivity::Activity, :count).by(1)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should evaluate associations" do
|
65
|
+
note = Note.find(1)
|
66
|
+
note.body = "New Test"
|
67
|
+
note.save
|
68
|
+
note.activities.last.text.should == "Someone modified note New Test with category Category 1"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "tracked options" do
|
73
|
+
it "should not track destroy for note (only)" do
|
74
|
+
lambda do
|
75
|
+
note = Note.find(1)
|
76
|
+
note.destroy
|
77
|
+
end.should change(PublicActivity::Activity, :count).by(0)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should not track create for department (except)" do
|
81
|
+
lambda do
|
82
|
+
dept = Department.find(1)
|
83
|
+
dept.name = "new name"
|
84
|
+
dept.save
|
85
|
+
end.should change(PublicActivity::Activity, :count).by(1)
|
86
|
+
|
87
|
+
lambda do
|
88
|
+
dept = Department.find(1)
|
89
|
+
dept.destroy
|
90
|
+
end.should change(PublicActivity::Activity, :count).by(1)
|
91
|
+
|
92
|
+
lambda do
|
93
|
+
dept = Department.new
|
94
|
+
dept.name = "some name"
|
95
|
+
dept.save
|
96
|
+
end.should change(PublicActivity::Activity, :count).by(0)
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "activist" do
|
103
|
+
|
104
|
+
before(:each) do
|
105
|
+
@category = Category.create(:name => "test cat")
|
106
|
+
@department = Department.create(:name => "test dept")
|
107
|
+
@category.activity_owner = @department
|
108
|
+
@category.save
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should have activites" do
|
112
|
+
@department.activities.should_not be_nil
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "template failures" do
|
117
|
+
it "should not die on nil" do
|
118
|
+
PublicActivity::Activity.template = nil
|
119
|
+
@category = Category.create(:name => "test cat")
|
120
|
+
@category.activities.last.text.should == "Template not defined"
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should evaluate associations" do
|
124
|
+
note = Note.find(2)
|
125
|
+
note.body = "New Test"
|
126
|
+
note.save
|
127
|
+
note.activities.last.text.should == "Template not defined"
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,34 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
plugin_test_dir = File.dirname(__FILE__)
|
3
3
|
|
4
|
-
|
4
|
+
require 'rubygems'
|
5
|
+
require 'bundler/setup'
|
5
6
|
|
7
|
+
require 'rspec'
|
8
|
+
require 'logger'
|
9
|
+
|
10
|
+
require 'active_support'
|
11
|
+
require 'active_model'
|
12
|
+
require 'active_record'
|
13
|
+
require 'action_controller'
|
14
|
+
|
15
|
+
require 'public_activity'
|
16
|
+
PublicActivity::Activity.template = YAML.load_file(plugin_test_dir + "/support/pba.yml")
|
17
|
+
|
18
|
+
ActiveRecord::Base.logger = Logger.new(plugin_test_dir + "/debug.log")
|
19
|
+
|
20
|
+
require 'yaml'
|
21
|
+
require 'erb'
|
22
|
+
ActiveRecord::Base.configurations = YAML::load(ERB.new(IO.read(plugin_test_dir + "/db/database.yml")).result)
|
23
|
+
ActiveRecord::Base.establish_connection(ENV["DB"] || "sqlite3mem")
|
24
|
+
ActiveRecord::Migration.verbose = false
|
25
|
+
load(File.join(plugin_test_dir, "db", "schema.rb"))
|
26
|
+
I18n.load_path += Dir[plugin_test_dir + "/support/en.yml"]
|
27
|
+
|
28
|
+
require 'support/models'
|
29
|
+
|
30
|
+
require 'rspec/rails'
|
6
31
|
RSpec.configure do |config|
|
7
|
-
config.
|
32
|
+
config.fixture_path = "#{plugin_test_dir}/fixtures"
|
33
|
+
config.use_transactional_fixtures = true
|
8
34
|
end
|
9
|
-
|
data/spec/support/en.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class Department < ActiveRecord::Base
|
2
|
+
tracked(:except => [:create])
|
3
|
+
activist
|
4
|
+
end
|
5
|
+
|
6
|
+
class Category < ActiveRecord::Base
|
7
|
+
tracked(:only => [:create, :update, :destroy])
|
8
|
+
validates_presence_of :name
|
9
|
+
end
|
10
|
+
|
11
|
+
class Note < ActiveRecord::Base
|
12
|
+
tracked(:only => [:update])
|
13
|
+
belongs_to :category
|
14
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
activity:
|
2
|
+
category:
|
3
|
+
create: "New <%= trackable.name %> category has been created"
|
4
|
+
update: 'Someone modified the category'
|
5
|
+
destroy: 'Someone deleted the category!'
|
6
|
+
note:
|
7
|
+
create: "New note <%= trackable.body %> has been created"
|
8
|
+
update: 'Someone modified note <%= trackable.body %> with category <%= trackable.category.name %>'
|
9
|
+
destroy: 'Someone deleted the note!'
|
data/spec/version_spec.rb
CHANGED
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.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,12 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
14
|
-
default_executable:
|
13
|
+
date: 2012-01-19 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: activerecord
|
18
|
-
requirement: &
|
17
|
+
requirement: &74294530 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
19
|
requirements:
|
21
20
|
- - ! '>='
|
@@ -23,10 +22,10 @@ dependencies:
|
|
23
22
|
version: 3.0.0
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
|
-
version_requirements: *
|
25
|
+
version_requirements: *74294530
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: activesupport
|
29
|
-
requirement: &
|
28
|
+
requirement: &74293790 !ruby/object:Gem::Requirement
|
30
29
|
none: false
|
31
30
|
requirements:
|
32
31
|
- - ! '>='
|
@@ -34,10 +33,10 @@ dependencies:
|
|
34
33
|
version: 3.0.0
|
35
34
|
type: :runtime
|
36
35
|
prerelease: false
|
37
|
-
version_requirements: *
|
36
|
+
version_requirements: *74293790
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
38
|
name: i18n
|
40
|
-
requirement: &
|
39
|
+
requirement: &74287740 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ! '>='
|
@@ -45,10 +44,21 @@ dependencies:
|
|
45
44
|
version: 0.5.0
|
46
45
|
type: :runtime
|
47
46
|
prerelease: false
|
48
|
-
version_requirements: *
|
47
|
+
version_requirements: *74287740
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: pusher
|
50
|
+
requirement: &74287260 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *74287260
|
49
59
|
- !ruby/object:Gem::Dependency
|
50
60
|
name: rspec
|
51
|
-
requirement: &
|
61
|
+
requirement: &74286440 !ruby/object:Gem::Requirement
|
52
62
|
none: false
|
53
63
|
requirements:
|
54
64
|
- - ! '>='
|
@@ -56,7 +66,7 @@ dependencies:
|
|
56
66
|
version: '0'
|
57
67
|
type: :development
|
58
68
|
prerelease: false
|
59
|
-
version_requirements: *
|
69
|
+
version_requirements: *74286440
|
60
70
|
description: Smooth activity tracking for your ActiveRecord models. Provides Activity
|
61
71
|
model with details about actions performed by your users, like adding comments,
|
62
72
|
responding etc.
|
@@ -75,15 +85,24 @@ files:
|
|
75
85
|
- lib/public_activity/creation.rb
|
76
86
|
- lib/public_activity/destruction.rb
|
77
87
|
- lib/public_activity/tracked.rb
|
88
|
+
- lib/public_activity/update.rb
|
78
89
|
- lib/public_activity/version.rb
|
79
90
|
- Gemfile
|
80
91
|
- Rakefile
|
81
92
|
- README.md
|
82
93
|
- MIT-LICENSE
|
94
|
+
- spec/db/database.yml
|
95
|
+
- spec/db/schema.rb
|
96
|
+
- spec/fixtures/categories.yml
|
97
|
+
- spec/fixtures/departments.yml
|
98
|
+
- spec/fixtures/notes.yml
|
99
|
+
- spec/public_activity_spec.rb
|
83
100
|
- spec/spec_helper.rb
|
101
|
+
- spec/support/en.yml
|
102
|
+
- spec/support/models.rb
|
103
|
+
- spec/support/pba.yml
|
84
104
|
- spec/version_spec.rb
|
85
|
-
|
86
|
-
homepage: https://github.com/okonski/public_activity
|
105
|
+
homepage: https://github.com/pokonski/public_activity
|
87
106
|
licenses: []
|
88
107
|
post_install_message:
|
89
108
|
rdoc_options: []
|
@@ -103,10 +122,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
122
|
version: '0'
|
104
123
|
requirements: []
|
105
124
|
rubyforge_project:
|
106
|
-
rubygems_version: 1.
|
125
|
+
rubygems_version: 1.8.10
|
107
126
|
signing_key:
|
108
127
|
specification_version: 3
|
109
128
|
summary: Smooth activity tracking for ActiveRecord models
|
110
129
|
test_files:
|
130
|
+
- spec/db/database.yml
|
131
|
+
- spec/db/schema.rb
|
132
|
+
- spec/fixtures/categories.yml
|
133
|
+
- spec/fixtures/departments.yml
|
134
|
+
- spec/fixtures/notes.yml
|
135
|
+
- spec/public_activity_spec.rb
|
111
136
|
- spec/spec_helper.rb
|
137
|
+
- spec/support/en.yml
|
138
|
+
- spec/support/models.rb
|
139
|
+
- spec/support/pba.yml
|
112
140
|
- spec/version_spec.rb
|
141
|
+
has_rdoc:
|