clerk 0.2.2 → 0.2.3

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
  SHA1:
3
- metadata.gz: b9b9856f19754930ae0e19639ddd18727dd74d34
4
- data.tar.gz: b3551d9cb8d3826d4ef1e817c3b3c1b80f4d820e
3
+ metadata.gz: f2ee29689040f515048d33262d9717d47e4572ea
4
+ data.tar.gz: cfc014bf93106d3b0c82709f03da3ba3546b81e3
5
5
  SHA512:
6
- metadata.gz: e98730c6d484a6eb0fb8eba042da984301f6e664ab21d4402e262c48674b932e6af2f1e03fdcc559b2ac2d48753b4a7774e22c860d0e90a072c463277d62102e
7
- data.tar.gz: b3e9e6f698c162343166e2cfc4a3f032e7c82f6e46bce6de39e4d399623d9f287dc39db0d4b584d74d7ec24b68fa5501dc931e1d1ced64b0674da7dec1d7991c
6
+ metadata.gz: 3d42c93804677c2df22c6706e1a716d1da502d0b0f73b4e9f5dfb9237f03cc1bb8c92f2b7ab629b9ae5f7c6bd7f4649626785a8050eea53cc0db3b4f83209c07
7
+ data.tar.gz: 4c8e491a147aff637ab02c7a4d7bb9b42c345b154ac59a2989e2e3c857008f418f3c9a2e4d6bda985a10b497f252b390458e732595e94f743ba8855e2118d593
@@ -1,10 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.8.7"
4
- - "1.9.2"
5
3
  - "1.9.3"
6
- - jruby-18mode # JRuby in 1.8 mode
4
+ - "2.0.0"
5
+ - "2.1.7"
6
+ - "2.2.3"
7
7
  - jruby-19mode # JRuby in 1.9 mode
8
- - rbx-18mode
9
- - rbx-19mode
10
8
  script: bundle exec rspec spec
data/README.md CHANGED
@@ -86,6 +86,18 @@ Since we are using `sentient_user` you can also set the updater or creator in te
86
86
  Post.create!(:title => "New Post")
87
87
  Post.last.creator == user # => true
88
88
 
89
+ ## Configuration
90
+
91
+ In case you need to customize Clerk. Just create `config/initializers/clerk.rb` and set up your configuration:
92
+
93
+ ```ruby
94
+ Clerk.configure do |config|
95
+ config.silence_warnings = true | false # Defaults: false (true in test env)
96
+ config.logger = MyCustomLogger.new() # Defaults: Rails.logger
97
+ end
98
+ ```
99
+
100
+
89
101
  ## Resources used in the development of this gem
90
102
 
91
103
  * [http://ryanbigg.com/2011/01/extending-active-record/](http://ryanbigg.com/2011/01/extending-active-record/)
@@ -94,3 +106,4 @@ Since we are using `sentient_user` you can also set the updater or creator in te
94
106
  * [http://www.cowboycoded.com/2011/01/31/developing-is_able-or-acts_as-plugins-for-rails/](http://www.cowboycoded.com/2011/01/31/developing-is_able-or-acts_as-plugins-for-rails/)
95
107
  * [http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html](http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html)
96
108
  * [https://github.com/bokmann/sentient_user](https://github.com/bokmann/sentient_user)
109
+ * [https://robots.thoughtbot.com/mygem-configure-block](https://robots.thoughtbot.com/mygem-configure-block)
@@ -1,6 +1,7 @@
1
1
  require 'active_record'
2
2
  require 'sentient_user'
3
3
  require 'clerk/version'
4
+ require 'clerk/configuration'
4
5
  require 'clerk/callback'
5
6
  require 'clerk/railtie'
6
7
 
@@ -4,21 +4,33 @@ module Clerk
4
4
  record.creator = current_user if record.respond_to?(:creator) && current_user
5
5
  record.updater = current_user if record.respond_to?(:updater) && current_user
6
6
  end
7
-
7
+
8
8
  def before_update(record)
9
9
  record.updater = current_user if record.respond_to?(:updater) && current_user
10
10
  end
11
-
11
+
12
12
  # relies on `include SentientUser` on User
13
13
  def current_user
14
- logger.warn "WARNING: User#current is not defined, are you including SentientUser on your User model?" unless User.respond_to?(:current)
15
- logger.warn "WARNING: User#current is nil, are you including SentientController on your ApplicationController?" unless User.current
14
+ warn "User#current is not defined, are you including SentientUser on your User model?" unless User.respond_to?(:current)
15
+ warn "User#current is nil, are you including SentientController on your ApplicationController?" unless User.current
16
16
 
17
17
  User.current
18
- end
19
-
18
+ end
19
+
20
+ #######
21
+ private
22
+ #######
23
+
24
+ def warn(message)
25
+ logger.warn "WARNING: #{message}" unless configuration.silence_warnings
26
+ end
27
+
20
28
  def logger
21
- Rails.logger
29
+ configuration.logger
30
+ end
31
+
32
+ def configuration
33
+ Clerk.configuration
22
34
  end
23
35
  end
24
36
  end
@@ -0,0 +1,22 @@
1
+ require 'active_support/logger'
2
+
3
+ module Clerk
4
+ class << self
5
+ attr_accessor :configuration
6
+ end
7
+
8
+ def self.configure
9
+ self.configuration ||= Configuration.new
10
+ yield(configuration)
11
+ end
12
+
13
+ class Configuration
14
+ attr_accessor :silence_warnings,
15
+ :logger
16
+
17
+ def initialize
18
+ @silence_warnings = false
19
+ @logger = ActiveSupport::Logger.new(STDOUT)
20
+ end
21
+ end
22
+ end
@@ -5,6 +5,11 @@ module Clerk
5
5
  class Railtie < Rails::Railtie
6
6
  initializer 'clerk.ar_extensions' do |app|
7
7
  ActiveRecord::Base.extend Clerk
8
+
9
+ Clerk.configure do |config|
10
+ config.silence_warnings = Rails.env.test?
11
+ config.logger = Rails.logger
12
+ end
8
13
  end
9
14
  end
10
15
  end
@@ -1,3 +1,3 @@
1
1
  module Clerk
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe Clerk::Configuration do
4
+ before(:each) do
5
+ Clerk.configure {}
6
+ end
7
+
8
+ after(:each) do
9
+ Clerk.configuration = Clerk::Configuration.new
10
+ end
11
+
12
+ it "should have a configuration" do
13
+ Clerk.configuration.should be_a(Clerk::Configuration)
14
+ end
15
+
16
+ context 'silence_warnings' do
17
+ it 'should be false by default' do
18
+ Clerk.configuration.silence_warnings.should be_false
19
+ end
20
+
21
+ it 'can be toggled to true' do
22
+ Clerk.configure { |c| c.silence_warnings = true }
23
+ Clerk.configuration.silence_warnings.should be_true
24
+ end
25
+ end
26
+
27
+ context 'logger' do
28
+ it 'should exist by default' do
29
+ Clerk.configuration.logger.should be_a ActiveSupport::Logger
30
+ end
31
+
32
+ it 'should be configurable' do
33
+ class FakeLogger
34
+ def warn(msg)
35
+ # noop
36
+ end
37
+ end
38
+
39
+ Clerk.configure { |c| c.logger = FakeLogger.new() }
40
+
41
+ Clerk.configuration.logger.should be_a FakeLogger
42
+ end
43
+ end
44
+ end
@@ -76,4 +76,69 @@ describe Clerk do
76
76
  this.updater.name.should == "creator"
77
77
  end
78
78
  end
79
+
80
+ describe "warning messages" do
81
+ Post.extend Clerk
82
+
83
+ class PostExtended < Post
84
+ track_who_does_it
85
+ end
86
+
87
+ before(:each) do
88
+ @logger = double("logger", warn: true)
89
+ Clerk.configure { |c| c.logger = @logger }
90
+ end
91
+
92
+ after(:each) do
93
+ # Reset configuration
94
+ Clerk.configuration = Clerk::Configuration.new
95
+ end
96
+
97
+ context "when missing SentientUser" do
98
+ before do
99
+ User.stub(:respond_to?).with(:current).and_return(false)
100
+ end
101
+ it "should log a message" do
102
+ @logger.should_receive(:warn).with("WARNING: User#current is not defined, are you including SentientUser on your User model?")
103
+ this = FooExtended.new(:bar => "Test")
104
+ this.save
105
+ end
106
+
107
+ context "amd warning are silenced" do
108
+ before do
109
+ Clerk.configure { |c| c.silence_warnings = true }
110
+ end
111
+
112
+ it "should not show a log message" do
113
+ @logger.should_not_receive(:warn).with("WARNING: User#current is not defined, are you including SentientUser on your User model?")
114
+ this = FooExtended.new(:bar => "Test")
115
+ this.save
116
+ end
117
+ end
118
+ end
119
+
120
+ context "when missing User.current" do
121
+ before do
122
+ User.current = nil
123
+ end
124
+
125
+ it "should log a message" do
126
+ @logger.should_receive(:warn).with("WARNING: User#current is nil, are you including SentientController on your ApplicationController?")
127
+ this = FooExtended.new(:bar => "Test")
128
+ this.save
129
+ end
130
+
131
+ context "amd warning are silenced" do
132
+ before do
133
+ Clerk.configure { |c| c.silence_warnings = true }
134
+ end
135
+
136
+ it "should not show a log message" do
137
+ @logger.should_not_receive(:warn).with("WARNING: User#current is nil, are you including SentientController on your ApplicationController?")
138
+ this = FooExtended.new(:bar => "Test")
139
+ this.save
140
+ end
141
+ end
142
+ end
143
+ end
79
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse House
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-13 00:00:00.000000000 Z
11
+ date: 2017-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -114,8 +114,10 @@ files:
114
114
  - clerk.gemspec
115
115
  - lib/clerk.rb
116
116
  - lib/clerk/callback.rb
117
+ - lib/clerk/configuration.rb
117
118
  - lib/clerk/railtie.rb
118
119
  - lib/clerk/version.rb
120
+ - spec/clerk/configuration_spec.rb
119
121
  - spec/clerk_spec.rb
120
122
  - spec/spec_helper.rb
121
123
  - spec/support/data.rb
@@ -141,12 +143,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
143
  version: '0'
142
144
  requirements: []
143
145
  rubyforge_project:
144
- rubygems_version: 2.2.0
146
+ rubygems_version: 2.5.1
145
147
  signing_key:
146
148
  specification_version: 4
147
149
  summary: For Rails applications - add creator and updater to your ActiveRecord models
148
150
  and automatically set these from current_user
149
151
  test_files:
152
+ - spec/clerk/configuration_spec.rb
150
153
  - spec/clerk_spec.rb
151
154
  - spec/spec_helper.rb
152
155
  - spec/support/data.rb