public_activity 1.6.3 → 2.0.0

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/README.md +26 -28
  4. data/Rakefile +2 -0
  5. data/lib/generators/public_activity/migration/migration_generator.rb +2 -0
  6. data/lib/generators/public_activity/migration/templates/migration.rb +5 -2
  7. data/lib/generators/public_activity/migration_upgrade/migration_upgrade_generator.rb +2 -0
  8. data/lib/generators/public_activity/migration_upgrade/templates/upgrade.rb +2 -0
  9. data/lib/generators/public_activity.rb +2 -0
  10. data/lib/public_activity/actions/creation.rb +3 -1
  11. data/lib/public_activity/actions/destruction.rb +2 -0
  12. data/lib/public_activity/actions/update.rb +2 -0
  13. data/lib/public_activity/activity.rb +3 -1
  14. data/lib/public_activity/common.rb +16 -0
  15. data/lib/public_activity/config.rb +2 -0
  16. data/lib/public_activity/models/activist.rb +3 -1
  17. data/lib/public_activity/models/activity.rb +3 -1
  18. data/lib/public_activity/models/adapter.rb +3 -1
  19. data/lib/public_activity/models/trackable.rb +3 -1
  20. data/lib/public_activity/orm/active_record/activist.rb +2 -0
  21. data/lib/public_activity/orm/active_record/activity.rb +19 -3
  22. data/lib/public_activity/orm/active_record/adapter.rb +7 -0
  23. data/lib/public_activity/orm/active_record/trackable.rb +2 -0
  24. data/lib/public_activity/orm/active_record.rb +3 -1
  25. data/lib/public_activity/orm/mongo_mapper/activist.rb +2 -0
  26. data/lib/public_activity/orm/mongo_mapper/activity.rb +2 -0
  27. data/lib/public_activity/orm/mongo_mapper/adapter.rb +7 -0
  28. data/lib/public_activity/orm/mongo_mapper/trackable.rb +2 -0
  29. data/lib/public_activity/orm/mongo_mapper.rb +3 -1
  30. data/lib/public_activity/orm/mongoid/activist.rb +2 -0
  31. data/lib/public_activity/orm/mongoid/activity.rb +2 -0
  32. data/lib/public_activity/orm/mongoid/adapter.rb +7 -0
  33. data/lib/public_activity/orm/mongoid/trackable.rb +2 -0
  34. data/lib/public_activity/orm/mongoid.rb +3 -1
  35. data/lib/public_activity/renderable.rb +5 -2
  36. data/lib/public_activity/roles/deactivatable.rb +2 -0
  37. data/lib/public_activity/roles/tracked.rb +2 -0
  38. data/lib/public_activity/testing.rb +2 -0
  39. data/lib/public_activity/utility/store_controller.rb +2 -0
  40. data/lib/public_activity/utility/view_helpers.rb +2 -0
  41. data/lib/public_activity/version.rb +3 -1
  42. data/lib/public_activity.rb +2 -0
  43. data/test/migrations/001_create_activities.rb +1 -1
  44. data/test/migrations/002_create_articles.rb +3 -1
  45. data/test/migrations/003_create_users.rb +3 -1
  46. data/test/migrations/004_add_nonstandard_to_activities.rb +2 -0
  47. data/test/migrations_base.rb +4 -2
  48. data/test/test_activist.rb +2 -0
  49. data/test/test_activity.rb +2 -0
  50. data/test/test_common.rb +9 -0
  51. data/test/test_controller_integration.rb +2 -0
  52. data/test/test_generators.rb +2 -12
  53. data/test/test_helper.rb +9 -3
  54. data/test/test_testing.rb +2 -0
  55. data/test/test_tracking.rb +2 -0
  56. data/test/test_view_helpers.rb +3 -1
  57. metadata +49 -38
  58. data/lib/generators/public_activity/activity/activity_generator.rb +0 -17
  59. data/lib/generators/public_activity/activity/templates/activity.rb +0 -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: 83290b8f83bb4db6127ed0b907380946d30a3d8a91b2ea3d1a835d7dfb36327d
4
+ data.tar.gz: 2a7e5abad8fae61ff03440747938653eb1624e14f62279fddb28b2d10362b75e
5
5
  SHA512:
6
- metadata.gz: af0c3aeb4a6f88f495555bc7a4f1dbc674f652486cee5392fe60a2ad3a4575d068c92364e6474db2f070e7eabe02a60da48563524e028ffe335bc8c4b194a21a
7
- data.tar.gz: 63126e720464f8b66d982aa7558fe50aa1def24ed5f42142e320f0858f424aea4bcd88de6fb880a03b15ba39e77af0a432e9ed1a1dddd4ee2e79935fb2cb9b63
6
+ metadata.gz: 502c70c85f62ec2838d592a2eaed2de714e97bbc27dcf0e7677dc27ac21e76e2fa1960c7c8d9fae218ff77ac1b103d0b7228ab4ed9afe2b50e7eb09bd2f6b7fe
7
+ data.tar.gz: ef18dda98ec4e763311971ec8a3a9382b4ba05a5b00a76c7ee6e3a58a9d4ec80f1c9a11487d9bb2e30c5ca9f0a336136033e2811f9ac52974a9cb8f9c95efa39
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
@@ -1,37 +1,35 @@
1
1
  # PublicActivity [![Build Status](https://secure.travis-ci.org/chaps-io/public_activity.svg)](http://travis-ci.org/chaps-io/public_activity) [![Code Climate](https://codeclimate.com/github/chaps-io/public_activity.svg)](https://codeclimate.com/github/chaps-io/public_activity) [![Gem Version](https://badge.fury.io/rb/public_activity.svg)](http://badge.fury.io/rb/public_activity)
2
2
 
3
3
  `public_activity` provides easy activity tracking for your **ActiveRecord**, **Mongoid 3** and **MongoMapper** models
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
- recorded activities to users - in a similar way to how GitHub does it.
4
+ in Rails 5.0+. Simply put: it records what has been changed or created and gives you the ability to present those
5
+ recorded activities to users - similarly to how GitHub does it.
6
6
 
7
- ## Sponsors
7
+ ## Rails 7
8
8
 
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>
12
-
13
- ## Rails 5
14
-
15
- **As of 1.6.0 version, public_activity also supports Rails up to 5.2.**
9
+ **As of version 2.0.0, public_activity also supports Rails up to 7.0.**
16
10
 
17
11
  ## Table of contents
18
12
 
19
- 1. [Example](#example)
20
- * [Demo](#online-demo)
21
- * [Screencast](#screencast)
22
- * **[Common examples](#common-examples)**
23
- 2. [Setup](#setup)
24
- 1. [Gem installation](#gem-installation)
25
- 2. [Database setup](#database-setup)
26
- 3. [Model configuration](#model-configuration)
27
- 4. [Custom activities](#custom-activities)
28
- 5. [Displaying activities](#displaying-activities)
29
- 1. [Activity views](#activity-views)
30
- 2. [i18n](#i18n)
31
- 3. [Testing](#testing)
32
- 4. [Documentation](#documentation)
33
- 5. **[Help](#help)**
34
- 6. [Upgrading](https://github.com/pokonski/public_activity/wiki/Upgrading-from-pre-0.4.0-versions)
13
+ - [Rails 7](#rails-7)
14
+ - [Table of contents](#table-of-contents)
15
+ - [Example](#example)
16
+ - [Online demo](#online-demo)
17
+ - [Screencast](#screencast)
18
+ - [Setup](#setup)
19
+ - [Gem installation](#gem-installation)
20
+ - [Database setup](#database-setup)
21
+ - [Model configuration](#model-configuration)
22
+ - [Custom activities](#custom-activities)
23
+ - [Displaying activities](#displaying-activities)
24
+ - [Layouts](#layouts)
25
+ - [Locals](#locals)
26
+ - [Activity views](#activity-views)
27
+ - [I18n](#I18n)
28
+ - [Testing](#testing)
29
+ - [Documentation](#documentation)
30
+ - [Common examples](#common-examples)
31
+ - [Help](#help)
32
+ - [License](#license)
35
33
 
36
34
  ## Example
37
35
 
@@ -197,7 +195,7 @@ For example, if you have an activity with `:key` set to `"activity.user.changed_
197
195
 
198
196
  If a view file does not exist, then p_a falls back to the old behaviour and tries to translate the activity `:key` using `I18n#translate` method (see the section below).
199
197
 
200
- #### i18n
198
+ #### I18n
201
199
 
202
200
  Translations are used by the `#text` method, to which you can pass additional options in form of a hash. `#render` method uses translations when view templates have not been provided. You can render pure i18n strings by passing `{display: :i18n}` to `#render_activity` or `#render`.
203
201
 
@@ -224,7 +222,7 @@ require 'public_activity/testing'
224
222
  PublicActivity.enabled = false
225
223
  ```
226
224
 
227
- In your specs you can then blockwise decide wether to turn `public_activity` on
225
+ In your specs you can then blockwise decide whether to turn `public_activity` on
228
226
  or off.
229
227
 
230
228
  ```ruby
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 'generators/public_activity'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'migrations_base'
4
+
1
5
  # Migration responsible for creating a table with activities
2
- class CreateActivities < (ActiveRecord.version.release() < Gem::Version.new('5.2.0') ? ActiveRecord::Migration : ActiveRecord::Migration[5.2])
3
- # Create table
6
+ class CreateActivities < MigrationsBase
4
7
  def self.up
5
8
  create_table :activities do |t|
6
9
  t.belongs_to :trackable, :polymorphic => true
@@ -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 'rails/generators/named_base'
2
4
 
3
5
  module PublicActivity
@@ -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,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..7
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
@@ -33,9 +49,9 @@ module PublicActivity
33
49
  else
34
50
  warn("[WARN] table #{name} doesn't exist. Skipping PublicActivity::Activity#parameters's serialization")
35
51
  end
36
- rescue ::ActiveRecord::NoDatabaseError => e
52
+ rescue ::ActiveRecord::NoDatabaseError
37
53
  warn("[WARN] database doesn't exist. Skipping PublicActivity::Activity#parameters's serialization")
38
- rescue ::PG::ConnectionBad => e
54
+ rescue ::PG::ConnectionBad
39
55
  warn("[WARN] couldn't connect to database. Skipping PublicActivity::Activity#parameters's serialization")
40
56
  rescue Mysql2::Error::ConnectionError
41
57
  warn("[WARN] couldn't connect to database. Skipping PublicActivity::Activity#parameters's serialization")
@@ -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,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 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 "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 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,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
  # Provides logic for rendering activities. Handles both i18n strings
3
5
  # support and smart partials rendering (different templates per activity key).
@@ -10,7 +12,8 @@ module PublicActivity
10
12
  k.unshift('activity') if k.first != 'activity'
11
13
  k = k.join('.')
12
14
 
13
- I18n.t(k, parameters.merge(params) || {})
15
+ translate_params = parameters.merge(params) || {}
16
+ I18n.t(k, **translate_params)
14
17
  end
15
18
 
16
19
  # Renders activity from views.
@@ -140,7 +143,7 @@ module PublicActivity
140
143
  def prepare_layout(root, layout)
141
144
  if layout
142
145
  path = layout.to_s
143
- unless path.starts_with?(root) || path.starts_with?("/")
146
+ unless path.start_with?(root) || path.start_with?("/")
144
147
  return File.join(root, path)
145
148
  end
146
149
  end
@@ -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 = '2.0.0'
4
6
  end
@@ -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 +1 @@
1
- test/migrations/../../lib/generators/public_activity/migration/templates/migration.rb
1
+ ../../lib/generators/public_activity/migration/templates/migration.rb
@@ -1,4 +1,6 @@
1
- require 'migrations_base.rb'
1
+ # frozen_string_literal: true
2
+
3
+ require 'migrations_base'
2
4
 
3
5
  class CreateArticles < MigrationsBase
4
6
  def self.up
@@ -1,4 +1,6 @@
1
- require 'migrations_base.rb'
1
+ # frozen_string_literal: true
2
+
3
+ require 'migrations_base'
2
4
 
3
5
  class CreateUsers < MigrationsBase
4
6
  def self.up
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'migrations_base.rb'
2
4
 
3
5
  class AddNonstandardToActivities < MigrationsBase
@@ -1,5 +1,7 @@
1
- MigrationsBase = if ActiveRecord.version.release() < Gem::Version.new('5.2.0')
1
+ # frozen_string_literal: true
2
+
3
+ MigrationsBase = if ActiveRecord.version.release() < Gem::Version.new('5.1.0')
2
4
  ActiveRecord::Migration
3
5
  else
4
- ActiveRecord::Migration[5.2]
6
+ ActiveRecord::Migration[5.1]
5
7
  end
@@ -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
data/test/test_common.rb CHANGED
@@ -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,22 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if ENV["PA_ORM"] == "active_record"
2
4
 
3
5
  require 'test_helper'
4
6
  require 'rails/generators/test_case'
5
- require 'generators/public_activity/activity/activity_generator'
6
7
  require 'generators/public_activity/migration/migration_generator'
7
8
  require 'generators/public_activity/migration_upgrade/migration_upgrade_generator'
8
9
 
9
- class TestActivityGenerator < Rails::Generators::TestCase
10
- tests PublicActivity::Generators::ActivityGenerator
11
- destination File.expand_path("../tmp", File.dirname(__FILE__))
12
- setup :prepare_destination
13
-
14
- def test_generating_activity_model
15
- run_generator
16
- assert_file "app/models/activity.rb"
17
- end
18
- end
19
-
20
10
  class TestMigrationGenerator < Rails::Generators::TestCase
21
11
  tests PublicActivity::Generators::MigrationGenerator
22
12
  destination File.expand_path("../tmp", File.dirname(__FILE__))
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rubygems"
2
4
  require "bundler"
3
5
  Bundler.setup(:default, :test)
@@ -27,11 +29,15 @@ when :active_record
27
29
  ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
28
30
 
29
31
  migrations_path = File.expand_path('../migrations', __FILE__)
32
+ active_record_version = ActiveRecord.version.release()
30
33
 
31
- if ActiveRecord.version.release() < Gem::Version.new('5.2.0')
32
- ActiveRecord::Migrator.migrate(migrations_path)
33
- else
34
+ if active_record_version >= Gem::Version.new('6.0.0')
35
+ schema_path = File.expand_path("../tmp/schema.rb", File.dirname(__FILE__))
36
+ ActiveRecord::MigrationContext.new(migrations_path, ActiveRecord::SchemaMigration).migrate
37
+ elsif active_record_version >= Gem::Version.new('5.2.0')
34
38
  ActiveRecord::MigrationContext.new(migrations_path).migrate
39
+ else # active_record_version < Gem::Version.new('5.2.0')
40
+ ActiveRecord::Migrator.migrate(migrations_path)
35
41
  end
36
42
 
37
43
  $stdout = STDOUT
data/test/test_testing.rb CHANGED
@@ -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,15 +1,15 @@
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: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotrek Okoński
8
8
  - Kuba Okoński
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-20 00:00:00.000000000 Z
12
+ date: 2022-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 3.0.0
20
+ version: 5.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 3.0.0
27
+ version: 5.0.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: railties
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 3.0.0
34
+ version: 5.0.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 3.0.0
41
+ version: 5.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: i18n
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -59,84 +59,98 @@ dependencies:
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '3.0'
62
+ version: '5.0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '3.0'
69
+ version: '5.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: appraisal
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: sqlite3
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: 1.3.7
90
+ version: 1.4.1
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - "~>"
82
96
  - !ruby/object:Gem::Version
83
- version: 1.3.7
97
+ version: 1.4.1
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: mocha
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
- - - "~>"
102
+ - - ">="
89
103
  - !ruby/object:Gem::Version
90
- version: 1.5.0
104
+ version: '0'
91
105
  type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
- - - "~>"
109
+ - - ">="
96
110
  - !ruby/object:Gem::Version
97
- version: 1.5.0
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: simplecov
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - "~>"
116
+ - - ">="
103
117
  - !ruby/object:Gem::Version
104
- version: 0.7.0
118
+ version: '0'
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
- - - "~>"
123
+ - - ">="
110
124
  - !ruby/object:Gem::Version
111
- version: 0.7.0
125
+ version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: test-unit
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
- - - "~>"
130
+ - - ">="
117
131
  - !ruby/object:Gem::Version
118
- version: 3.2.8
132
+ version: '0'
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - "~>"
137
+ - - ">="
124
138
  - !ruby/object:Gem::Version
125
- version: 3.2.8
139
+ version: '0'
126
140
  - !ruby/object:Gem::Dependency
127
141
  name: minitest
128
142
  requirement: !ruby/object:Gem::Requirement
129
143
  requirements:
130
- - - "~>"
144
+ - - ">="
131
145
  - !ruby/object:Gem::Version
132
- version: 4.7.5
146
+ version: '0'
133
147
  type: :development
134
148
  prerelease: false
135
149
  version_requirements: !ruby/object:Gem::Requirement
136
150
  requirements:
137
- - - "~>"
151
+ - - ">="
138
152
  - !ruby/object:Gem::Version
139
- version: 4.7.5
153
+ version: '0'
140
154
  - !ruby/object:Gem::Dependency
141
155
  name: redcarpet
142
156
  requirement: !ruby/object:Gem::Requirement
@@ -155,16 +169,16 @@ dependencies:
155
169
  name: yard
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - "~>"
172
+ - - ">="
159
173
  - !ruby/object:Gem::Version
160
- version: 0.9.11
174
+ version: '0'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - "~>"
179
+ - - ">="
166
180
  - !ruby/object:Gem::Version
167
- version: 0.9.11
181
+ version: '0'
168
182
  - !ruby/object:Gem::Dependency
169
183
  name: pry
170
184
  requirement: !ruby/object:Gem::Requirement
@@ -192,8 +206,6 @@ files:
192
206
  - README.md
193
207
  - Rakefile
194
208
  - lib/generators/public_activity.rb
195
- - lib/generators/public_activity/activity/activity_generator.rb
196
- - lib/generators/public_activity/activity/templates/activity.rb
197
209
  - lib/generators/public_activity/migration/migration_generator.rb
198
210
  - lib/generators/public_activity/migration/templates/migration.rb
199
211
  - lib/generators/public_activity/migration_upgrade/migration_upgrade_generator.rb
@@ -255,7 +267,7 @@ homepage: https://github.com/pokonski/public_activity
255
267
  licenses:
256
268
  - MIT
257
269
  metadata: {}
258
- post_install_message:
270
+ post_install_message:
259
271
  rdoc_options: []
260
272
  require_paths:
261
273
  - lib
@@ -263,16 +275,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
263
275
  requirements:
264
276
  - - ">="
265
277
  - !ruby/object:Gem::Version
266
- version: 1.9.2
278
+ version: 2.5.0
267
279
  required_rubygems_version: !ruby/object:Gem::Requirement
268
280
  requirements:
269
281
  - - ">="
270
282
  - !ruby/object:Gem::Version
271
283
  version: '0'
272
284
  requirements: []
273
- rubyforge_project:
274
- rubygems_version: 2.7.6
275
- signing_key:
285
+ rubygems_version: 3.3.13
286
+ signing_key:
276
287
  specification_version: 4
277
288
  summary: Easy activity tracking for ActiveRecord models
278
289
  test_files:
@@ -1,17 +0,0 @@
1
- require 'generators/public_activity'
2
- require 'rails/generators/active_record'
3
-
4
- module PublicActivity
5
- module Generators
6
- # Activity generator that creates activity model file from template
7
- class ActivityGenerator < ActiveRecord::Generators::Base
8
- extend Base
9
-
10
- argument :name, :type => :string, :default => 'activity'
11
- # Create model in project's folder
12
- def generate_files
13
- copy_file 'activity.rb', "app/models/#{name}.rb"
14
- end
15
- end
16
- end
17
- end
@@ -1,3 +0,0 @@
1
- # Activity model for customisation & custom methods
2
- class Activity < PublicActivity::Activity
3
- end