paper_trail-rails 0.3.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c131d41ac82f9058ed9bfbf6bbb0ec4c41d81bb0831213354a8a489d13ab02fa
4
- data.tar.gz: ad5bc11f3012ff9155c6891a4cdd5b55a424c505aaa6872f38a4a9bae2a0e776
3
+ metadata.gz: df6b12e02d1b44eabbb7c41961258e502db07a2b7f1078d48f72b56def92f948
4
+ data.tar.gz: d5eba93e47293263d99c743e280ca385d2773c5752eaff08090f5fbe0d023466
5
5
  SHA512:
6
- metadata.gz: ecf6879903c63aeca60556f75877f4bf709022a7953975610c732bb13819e4f0939e19f3c220b8aad562c1d6516c900b90b12b71666a4284d7b4dfc32c9c5309
7
- data.tar.gz: d8956bd5abfe35a712cfec8f24df52319e1d3cbbb9a06162eab2582c4dcba0f05f2f422a9d7b7d4c8ddf62e09103c08111a046ff83f11f0ddf3a249ef0ab7336
6
+ metadata.gz: 33952094c64fd705018a4b33108c7e398ab5dc624449402e1a95cd4dc70a65544372e41906cb697b326b66fb7dc688c6ca2bfe35d82aecb7d8197a585358b064
7
+ data.tar.gz: b26c1c50f90b35dddf67291024beeacab8b4d37578f7450cb169f9c83d4794c455d66fadf6dd8d75ed9f9ad51dce589cb29b969818eaf5d6a5a1e71f410d8a97
data/Changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.4.0 (2020-04-23)
2
+ - Allow user to be selected by index in addition to id
3
+ - Add config.select_user_inspect
4
+ - Fix: Remove .default_order which may not be defined. Included as config example instead.
5
+ - Fix: Replace respond.id with respond_to?(:id)
6
+ - Fix: Should use require_user rather than require_reason
7
+
1
8
  ## 0.3.0 (2019-09-16)
2
9
  - Fix: When running db:migrate:redo, command got recorded as "rails db:migrate:redo VERSION=2019…"
3
10
  instead of as "rails db:migrate: MigrationName (up)" as intended.
data/Readme.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # PaperTrail::Rails
2
2
 
3
3
  [![Gem Version][1]][2]
4
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://rdoc.info/github/TylerRick/paper_trail-rails/master)
4
5
 
5
6
  An extension to [PaperTrail](https://github.com/paper-trail-gem/paper_trail)
6
7
  that adds some useful automatic integrations with Rails:
@@ -4,18 +4,22 @@ module PaperTrail
4
4
  def initialize
5
5
  config = self
6
6
 
7
+ #config.user_model = User
7
8
  config.select_user_filter = :itself
9
+ config.select_user_inspect = :inspect
8
10
  config.select_user_other_allowed_values = ['system', 'admin']
9
11
  config.source_location_filter = ->(line) { !line.match /paper_trail/ }
10
12
  end
11
13
 
12
14
  # Filter proc to use to show a list of users in select_user helper. For example:
13
- # ->(users) { users.admins) }
15
+ # ->(users) { users.admins.default_order }
14
16
  # or
15
- # ->(users) { users.none) }
17
+ # ->(users) { users.none }
16
18
  # Can be also be a symbol or anything that responds to to_proc.
17
19
  attr_accessor :select_user_filter
18
20
 
21
+ attr_accessor :select_user_inspect
22
+
19
23
  attr_accessor :select_user_other_allowed_values
20
24
 
21
25
  attr_accessor :source_location_filter
@@ -50,7 +50,7 @@ module PaperTrail
50
50
  end
51
51
  end
52
52
 
53
- class Engine
53
+ class Railtie
54
54
  initializer "paper_trail-rails.set_default_metadata" do |app|
55
55
  # There's no way to set up deferred evaluation of PaperTrail.request.controller_info from
56
56
  # here like we can with whodunnit, so abuse that property of PaperTrail.request.whodunnit to
@@ -73,14 +73,14 @@ module PaperTrail
73
73
  user = config.console.user_for_test.(User.all)
74
74
  else
75
75
  puts "Before you make any changes... We need to know who is making the changes, to store in the PaperTrail version history."
76
- user = PaperTrail::Rails.select_user(required: config.console.require_reason)
76
+ user = PaperTrail::Rails.select_user(required: config.console.require_user)
77
77
  puts "Thank you, #{user}! Have a wonderful time!" if user
78
78
  end
79
- user.respond.id
79
+ user.respond_to?(:id) ? user.id : user
80
80
  end
81
81
  )
82
82
 
83
- if config.console.ask_for_reason
83
+ if config.console.ask_for_reason && PaperTrail.request.controller_info[:reason].nil?
84
84
  @paper_trail_reason ||= PaperTrail::Rails.get_reason(required: config.console.require_reason)
85
85
  end
86
86
  PaperTrail.update_metadata reason: @paper_trail_reason
@@ -4,11 +4,15 @@ module PaperTrail
4
4
  module Rails
5
5
  module General
6
6
  class << self
7
- def select_user(filter: :itself, other_allowed_values: [], prompt: 'Please enter a User id', required: true)
7
+ def select_user(filter: :itself, other_allowed_values: [], prompt: '"Please enter the index of one of the users above, or a valid User id', required: true)
8
+ config = PaperTrail::Rails.config
9
+
10
+ user_options = nil
8
11
  User.logger.silence do
9
- puts 'id. user'
10
- filter.to_proc.(User.all).default_order.each do |user|
11
- puts "%4s. %s" % [user.id, user.inspect]
12
+ puts 'index. user'
13
+ user_options = filter.to_proc.(User.all)
14
+ user_options.each.with_index do |user, i|
15
+ puts "%2s. %s" % [i + 1, user.inspect]
12
16
  end
13
17
  end
14
18
 
@@ -20,7 +24,11 @@ module PaperTrail
20
24
  when *other_allowed_values
21
25
  user = input
22
26
  else
23
- user = User.find(input) rescue nil
27
+ if (i = Integer(input) rescue nil)
28
+ user = user_options[i - 1] || (User.find(input) rescue nil)
29
+ else # allow for non-numeric ids like uuids
30
+ user = User.find(input) rescue nil
31
+ end
24
32
  end
25
33
  break unless required
26
34
  end
@@ -1,12 +1,14 @@
1
- # paper_trail gem also provides a Railtie (Engine) in this require. It seems to
2
- # work to just add initializers to that existing Railtie. If needed, though, we
3
- # could define a different one, like "Railtie".
4
1
  require 'rails'
5
- require 'paper_trail/frameworks/rails/engine'
2
+ require 'paper_trail/frameworks/rails'
6
3
 
7
4
  module PaperTrail
8
5
  module Rails
9
- class Engine
6
+ # lib/paper_trail/rails/console.rb adds an initializer to this Railtie.
7
+ #
8
+ # paper_trail gem also provides a Railtie, PaperTrail::Railtie
9
+ # (paper_trail/frameworks/rails/railtie.rb), but that is different from this one.
10
+ #
11
+ class Railtie < ::Rails::Railtie
10
12
  end
11
13
  end
12
14
  end
@@ -1,7 +1,7 @@
1
1
  module PaperTrail
2
2
  module Rails
3
3
  def self.version
4
- "0.3.0"
4
+ "0.5.1"
5
5
  end
6
6
  end
7
7
  end
@@ -30,6 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "rails"
31
31
 
32
32
  spec.add_development_dependency "bundler", "~> 2.0"
33
- spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency 'rake', '>= 12.3.3'
34
34
  spec.add_development_dependency "rspec", "~> 3.0"
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_trail-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Rick
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-16 00:00:00.000000000 Z
11
+ date: 2022-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paper_trail
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  - !ruby/object:Gem::Version
129
129
  version: '0'
130
130
  requirements: []
131
- rubygems_version: 3.0.3
131
+ rubygems_version: 3.3.3
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: Integrate with rails console and migrations. In rails console, ask who is