public_activity 1.6.3 → 1.6.4

Sign up to get free protection for your applications and to get access to all the features.
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