public_activity 1.6.3 → 1.6.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/README.md +4 -4
  4. data/Rakefile +2 -0
  5. data/lib/generators/public_activity.rb +2 -0
  6. data/lib/generators/public_activity/activity/activity_generator.rb +2 -0
  7. data/lib/generators/public_activity/activity/templates/activity.rb +2 -0
  8. data/lib/generators/public_activity/migration/migration_generator.rb +2 -0
  9. data/lib/generators/public_activity/migration/templates/migration.rb +2 -0
  10. data/lib/generators/public_activity/migration_upgrade/migration_upgrade_generator.rb +2 -0
  11. data/lib/generators/public_activity/migration_upgrade/templates/upgrade.rb +2 -0
  12. data/lib/public_activity.rb +2 -0
  13. data/lib/public_activity/actions/creation.rb +3 -1
  14. data/lib/public_activity/actions/destruction.rb +2 -0
  15. data/lib/public_activity/actions/update.rb +2 -0
  16. data/lib/public_activity/activity.rb +3 -1
  17. data/lib/public_activity/common.rb +16 -0
  18. data/lib/public_activity/config.rb +2 -0
  19. data/lib/public_activity/models/activist.rb +3 -1
  20. data/lib/public_activity/models/activity.rb +3 -1
  21. data/lib/public_activity/models/adapter.rb +3 -1
  22. data/lib/public_activity/models/trackable.rb +3 -1
  23. data/lib/public_activity/orm/active_record.rb +3 -1
  24. data/lib/public_activity/orm/active_record/activist.rb +2 -0
  25. data/lib/public_activity/orm/active_record/activity.rb +17 -1
  26. data/lib/public_activity/orm/active_record/adapter.rb +7 -0
  27. data/lib/public_activity/orm/active_record/trackable.rb +2 -0
  28. data/lib/public_activity/orm/mongo_mapper.rb +3 -1
  29. data/lib/public_activity/orm/mongo_mapper/activist.rb +2 -0
  30. data/lib/public_activity/orm/mongo_mapper/activity.rb +2 -0
  31. data/lib/public_activity/orm/mongo_mapper/adapter.rb +7 -0
  32. data/lib/public_activity/orm/mongo_mapper/trackable.rb +2 -0
  33. data/lib/public_activity/orm/mongoid.rb +3 -1
  34. data/lib/public_activity/orm/mongoid/activist.rb +2 -0
  35. data/lib/public_activity/orm/mongoid/activity.rb +2 -0
  36. data/lib/public_activity/orm/mongoid/adapter.rb +7 -0
  37. data/lib/public_activity/orm/mongoid/trackable.rb +2 -0
  38. data/lib/public_activity/renderable.rb +2 -0
  39. data/lib/public_activity/roles/deactivatable.rb +2 -0
  40. data/lib/public_activity/roles/tracked.rb +2 -0
  41. data/lib/public_activity/testing.rb +2 -0
  42. data/lib/public_activity/utility/store_controller.rb +2 -0
  43. data/lib/public_activity/utility/view_helpers.rb +2 -0
  44. data/lib/public_activity/version.rb +3 -1
  45. data/test/migrations/002_create_articles.rb +2 -0
  46. data/test/migrations/003_create_users.rb +2 -0
  47. data/test/migrations/004_add_nonstandard_to_activities.rb +2 -0
  48. data/test/migrations_base.rb +2 -0
  49. data/test/test_activist.rb +2 -0
  50. data/test/test_activity.rb +2 -0
  51. data/test/test_common.rb +9 -0
  52. data/test/test_controller_integration.rb +2 -0
  53. data/test/test_generators.rb +2 -0
  54. data/test/test_helper.rb +2 -0
  55. data/test/test_testing.rb +2 -0
  56. data/test/test_tracking.rb +2 -0
  57. data/test/test_view_helpers.rb +3 -1
  58. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59556848ec6a88c2e369638d453fcea77933ff8f208bf7ee24bce3ba7e348698
4
- data.tar.gz: 01e57534e8c82d19d6894831f9d14ec9436b80a312f7098b3b32d319c7715efd
3
+ metadata.gz: ed14383fee5beb59cc2e6963aec4b151edac0d910dba6ae076f158dce0791ba8
4
+ data.tar.gz: 2cb71a7c50553cddeb0500c882bf7709a780b3ca8cb60318da8d7e4b6be00e77
5
5
  SHA512:
6
- metadata.gz: af0c3aeb4a6f88f495555bc7a4f1dbc674f652486cee5392fe60a2ad3a4575d068c92364e6474db2f070e7eabe02a60da48563524e028ffe335bc8c4b194a21a
7
- data.tar.gz: 63126e720464f8b66d982aa7558fe50aa1def24ed5f42142e320f0858f424aea4bcd88de6fb880a03b15ba39e77af0a432e9ed1a1dddd4ee2e79935fb2cb9b63
6
+ metadata.gz: 57aed9400b411ae43657dea3944be5aa062139356e4c5a686c97f84439369619ea6471e1685946d71c63a8765014250467646f2da37699e4f8b7723ec09e8b64
7
+ data.tar.gz: '098d249436ad7f6d16e1f7d3dfff28a8da55ee567e480a1030db9bdf0d3a68fe4d8ffcc011ad96fc332d5b98d001186b483ba41f3681cacb74a072a6a8e22ccb'
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
  gemspec
data/README.md CHANGED
@@ -4,11 +4,11 @@
4
4
  in Rails 3.0 - 5.0. Simply put: it records what has been changed or created and gives you the ability to present those
5
5
  recorded activities to users - in a similar way to how GitHub does it.
6
6
 
7
- ## Sponsors
8
7
 
9
- <p align="center">
10
- <a style="max-width: 478x" href="https://getstream.io/try-the-api/?utm_source=public-activity&utm_medium=banner&utm_campaign=github"><img src="https://i.imgur.com/q4c8wVO.png"/>
11
- </p>
8
+
9
+
10
+
11
+
12
12
 
13
13
  ## Rails 5
14
14
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require 'rake'
3
5
  require 'yard'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/named_base'
2
4
 
3
5
  module PublicActivity
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'generators/public_activity'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Activity model for customisation & custom methods
2
4
  class Activity < PublicActivity::Activity
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'generators/public_activity'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Migration responsible for creating a table with activities
2
4
  class CreateActivities < (ActiveRecord.version.release() < Gem::Version.new('5.2.0') ? ActiveRecord::Migration : ActiveRecord::Migration[5.2])
3
5
  # Create table
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'generators/public_activity'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Migration responsible for creating a table with activities
2
4
  class UpgradeActivities < ActiveRecord::Migration
3
5
  # Create table
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'action_view'
3
5
  # +public_activity+ keeps track of changes made to models
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Handles creation of Activities upon destruction and update of tracked model.
3
5
  module Creation
@@ -14,4 +16,4 @@ module PublicActivity
14
16
  create_activity(:create)
15
17
  end
16
18
  end
17
- end
19
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Handles creation of Activities upon destruction of tracked model.
3
5
  module Destruction
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Handles creation of Activities upon destruction and update of tracked model.
3
5
  module Update
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Main model, stores all information about what happened,
3
5
  # who caused it, when and anything else.
4
6
  class Activity < inherit_orm("Activity")
5
7
  end
6
- end
8
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Happens when creating custom activities without either action or a key.
3
5
  class NoKeyProvided < Exception; end
@@ -257,6 +259,20 @@ module PublicActivity
257
259
  nil
258
260
  end
259
261
 
262
+ # Directly saves activity to database. Works the same as create_activity
263
+ # but throws validation error for each supported ORM.
264
+ #
265
+ # @see #create_activity
266
+ def create_activity!(*args)
267
+ return unless self.public_activity_enabled?
268
+ options = prepare_settings(*args)
269
+
270
+ if call_hook_safe(options[:key].split('.').last)
271
+ reset_activity_instance_options
272
+ return PublicActivity::Adapter.create_activity!(self, options)
273
+ end
274
+ end
275
+
260
276
  # Prepares settings used during creation of Activity record.
261
277
  # params passed directly to tracked model have priority over
262
278
  # settings specified in tracked() method
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'singleton'
2
4
 
3
5
  module PublicActivity
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Provides helper methods for selecting activities from a user.
3
5
  module Activist
@@ -6,4 +8,4 @@ module PublicActivity
6
8
  base.extend PublicActivity::inherit_orm("Activist")
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  class Activity < inherit_orm("Activity")
3
5
  end
4
- end
6
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Loads database-specific routines for use by PublicActivity.
3
5
  class Adapter < inherit_orm("Adapter")
4
6
  end
5
- end
7
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Provides association for activities bound to this object by *trackable*.
3
5
  module Trackable
@@ -6,4 +8,4 @@ module PublicActivity
6
8
  base.extend PublicActivity::inherit_orm("Trackable")
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record'
2
4
  require_relative 'active_record/activity.rb'
3
5
  require_relative 'active_record/adapter.rb'
4
6
  require_relative 'active_record/activist.rb'
5
- require_relative 'active_record/trackable.rb'
7
+ require_relative 'active_record/trackable.rb'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module ActiveRecord
@@ -1,4 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
4
+
5
+ if not defined? ::PG::ConnectionBad
6
+ module ::PG
7
+ class ConnectionBad < Exception; end
8
+ end
9
+ end
10
+ if not defined? Mysql2::Error::ConnectionError
11
+ module Mysql2
12
+ module Error
13
+ class ConnectionError < Exception; end
14
+ end
15
+ end
16
+ end
17
+
2
18
  module ORM
3
19
  module ActiveRecord
4
20
  # The ActiveRecord model containing
@@ -17,7 +33,7 @@ module PublicActivity
17
33
  belongs_to :owner, :polymorphic => true
18
34
  # Define ownership to a resource targeted by this activity
19
35
  belongs_to :recipient, :polymorphic => true
20
- when 5
36
+ when 5..6
21
37
  with_options(:required => false) do
22
38
  # Define ownership to a resource responsible for this activity
23
39
  belongs_to :owner, :polymorphic => true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  # Support for ActiveRecord for PublicActivity. Used by default and supported
@@ -10,6 +12,11 @@ module PublicActivity
10
12
  def self.create_activity(trackable, options)
11
13
  trackable.activities.create options
12
14
  end
15
+
16
+ # Creates activity on `trackable` with `options`; throws error on validation failure
17
+ def self.create_activity!(trackable, options)
18
+ trackable.activities.create! options
19
+ end
13
20
  end
14
21
  end
15
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module ActiveRecord
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "mongo_mapper/activity.rb"
2
4
  require_relative "mongo_mapper/adapter.rb"
3
5
  require_relative "mongo_mapper/activist.rb"
4
- require_relative "mongo_mapper/trackable.rb"
6
+ require_relative "mongo_mapper/trackable.rb"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module MongoMapper
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongo_mapper'
2
4
  require 'active_support/core_ext'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module MongoMapper
@@ -6,6 +8,11 @@ module PublicActivity
6
8
  def self.create_activity(trackable, options)
7
9
  trackable.activities.create options
8
10
  end
11
+
12
+ # Creates activity on `trackable` with `options`; throws error on validation failure
13
+ def self.create_activity!(trackable, options)
14
+ trackable.activities.create! options
15
+ end
9
16
  end
10
17
  end
11
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module MongoMapper
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "mongoid/activity.rb"
2
4
  require_relative "mongoid/adapter.rb"
3
5
  require_relative "mongoid/activist.rb"
4
- require_relative "mongoid/trackable.rb"
6
+ require_relative "mongoid/trackable.rb"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module Mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
4
 
3
5
  module PublicActivity
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module Mongoid
@@ -6,6 +8,11 @@ module PublicActivity
6
8
  def self.create_activity(trackable, options)
7
9
  trackable.activities.create options
8
10
  end
11
+
12
+ # Creates activity on `trackable` with `options`; throws error on validation failure
13
+ def self.create_activity!(trackable, options)
14
+ trackable.activities.create! options
15
+ end
9
16
  end
10
17
  end
11
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  module ORM
3
5
  module Mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Provides logic for rendering activities. Handles both i18n strings
3
5
  # support and smart partials rendering (different templates per activity key).
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Enables per-class disabling of PublicActivity functionality.
3
5
  module Deactivatable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # Main module extending classes we want to keep track of.
3
5
  module Tracked
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file provides functionality for testing your code with public_activity
2
4
  # activated or deactivated.
3
5
  # This file should only be required in test/spec code!
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  class << self
3
5
  # Setter for remembering controller instance
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Provides a shortcut from views to the rendering method.
2
4
  module PublicActivity
3
5
  # Module extending ActionView::Base and adding `render_activity` helper.
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PublicActivity
2
4
  # A constant with gem's version
3
- VERSION = '1.6.3'
5
+ VERSION = '1.6.4'
4
6
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'migrations_base.rb'
2
4
 
3
5
  class CreateArticles < MigrationsBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'migrations_base.rb'
2
4
 
3
5
  class CreateUsers < MigrationsBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'migrations_base.rb'
2
4
 
3
5
  class AddNonstandardToActivities < MigrationsBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  MigrationsBase = if ActiveRecord.version.release() < Gem::Version.new('5.2.0')
2
4
  ActiveRecord::Migration
3
5
  else
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe PublicActivity::Activist do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe 'PublicActivity::Activity Rendering' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe PublicActivity::Common do
@@ -48,6 +50,13 @@ describe PublicActivity::Common do
48
50
  subject.create_activity("some.key").wont_be_nil
49
51
  end
50
52
 
53
+ it '#create_activity! returns a new activity object' do
54
+ subject.save
55
+ activity = subject.create_activity!("some.key")
56
+ assert activity.persisted?
57
+ assert_equal 'article.some.key', activity.key
58
+ end
59
+
51
60
  it 'update action should not create activity on save unless model changed' do
52
61
  subject.save
53
62
  before_count = subject.activities.count
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class StoringController < ActionView::TestCase::TestController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if ENV["PA_ORM"] == "active_record"
2
4
 
3
5
  require 'test_helper'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rubygems"
2
4
  require "bundler"
3
5
  Bundler.setup(:default, :test)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  describe PublicActivity do
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe PublicActivity::Tracked do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe 'ViewHelpers Rendering' do
@@ -33,4 +35,4 @@ describe 'ViewHelpers Rendering' do
33
35
  @name = name
34
36
  @content = content
35
37
  end
36
- end
38
+ 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.6.3
4
+ version: 1.6.4
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: 2018-12-20 00:00:00.000000000 Z
12
+ date: 2019-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -271,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
271
  version: '0'
272
272
  requirements: []
273
273
  rubyforge_project:
274
- rubygems_version: 2.7.6
274
+ rubygems_version: 2.7.6.2
275
275
  signing_key:
276
276
  specification_version: 4
277
277
  summary: Easy activity tracking for ActiveRecord models