ku_fu 0.0.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.
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/ku_fu.gemspec +24 -0
- data/lib/ku_fu/base.rb +28 -0
- data/lib/ku_fu/version.rb +3 -0
- data/lib/ku_fu.rb +2 -0
- data/spec/ku_fu_spec.rb +40 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/support/document.rb +4 -0
- data/spec/support/user.rb +12 -0
- metadata +83 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/ku_fu.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ku_fu/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ku_fu"
|
7
|
+
s.version = KuFu::VERSION
|
8
|
+
s.authors = ["Andrea Campolonghi"]
|
9
|
+
s.email = ["acampolonghi@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = "register who created, updated or deleted an active record object"
|
12
|
+
s.description = "register who created, updated or deleted an active record object"
|
13
|
+
|
14
|
+
s.rubyforge_project = "ku_fu"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "rspec"
|
23
|
+
s.add_runtime_dependency "activerecord"
|
24
|
+
end
|
data/lib/ku_fu/base.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module KuFu
|
2
|
+
|
3
|
+
def self.included base
|
4
|
+
base.class_eval do
|
5
|
+
extend ClassMethods
|
6
|
+
include InstanceMethods
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def register_ku_fu
|
12
|
+
before_save :ku_fu_register
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module InstanceMethods
|
17
|
+
def ku_fu_register
|
18
|
+
if new_record?
|
19
|
+
write_attribute(:creator_id, User.current.id) if self.respond_to?(:creator_id)
|
20
|
+
else
|
21
|
+
write_attribute(:updater_id, User.current.id) if self.respond_to?(:updater_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
ActiveRecord::Base.send(:include, KuFu)
|
data/lib/ku_fu.rb
ADDED
data/spec/ku_fu_spec.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "ku_fu" do
|
4
|
+
|
5
|
+
it "should verify that User.current is not nil" do
|
6
|
+
User.current.should_not be_nil
|
7
|
+
end
|
8
|
+
|
9
|
+
context "given a class that register_ku_fu" do
|
10
|
+
|
11
|
+
before do
|
12
|
+
@subject = Document
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when creating" do
|
16
|
+
|
17
|
+
it "should save the User.current id as creator_id" do
|
18
|
+
model = @subject.create!
|
19
|
+
model.creator_id.should_not be_nil
|
20
|
+
model.creator_id.should eq User.current.id
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context "when updating" do
|
26
|
+
|
27
|
+
it "should save the User.current id as creator_id" do
|
28
|
+
model = @subject.create!
|
29
|
+
new_user = User.create!
|
30
|
+
User.current = new_user
|
31
|
+
model.save!
|
32
|
+
model.updater_id.should eq User.current.id
|
33
|
+
model.creator_id.should_not eq model.updater_id
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'active_record'
|
3
|
+
require 'sqlite3'
|
4
|
+
|
5
|
+
require 'ku_fu'
|
6
|
+
|
7
|
+
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
|
8
|
+
FileUtils.mkdir_p File.dirname(__FILE__) + '/../db/'
|
9
|
+
ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => "db/test.sqlite3"
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.mock_with :rspec
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.filter_run :focus
|
16
|
+
|
17
|
+
config.before :suite do
|
18
|
+
ActiveRecord::Base.connection.create_table(:users,:force => true) do |t|
|
19
|
+
t.timestamps
|
20
|
+
end
|
21
|
+
ActiveRecord::Base.connection.create_table(:documents,:force => true) do |t|
|
22
|
+
t.string :title
|
23
|
+
t.integer :creator_id
|
24
|
+
t.integer :updater_id
|
25
|
+
t.timestamps
|
26
|
+
end
|
27
|
+
User.current = User.create!
|
28
|
+
end
|
29
|
+
|
30
|
+
config.before(:each) do
|
31
|
+
Document.delete_all
|
32
|
+
end
|
33
|
+
|
34
|
+
config.after(:suite) do
|
35
|
+
ActiveRecord::Base.connection.drop_table(:users)
|
36
|
+
ActiveRecord::Base.connection.drop_table(:documents)
|
37
|
+
end
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ku_fu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Andrea Campolonghi
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70275885299360 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70275885299360
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activerecord
|
27
|
+
requirement: &70275885298800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70275885298800
|
36
|
+
description: register who created, updated or deleted an active record object
|
37
|
+
email:
|
38
|
+
- acampolonghi@gmail.com
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- .gitignore
|
44
|
+
- .rspec
|
45
|
+
- Gemfile
|
46
|
+
- Rakefile
|
47
|
+
- ku_fu.gemspec
|
48
|
+
- lib/ku_fu.rb
|
49
|
+
- lib/ku_fu/base.rb
|
50
|
+
- lib/ku_fu/version.rb
|
51
|
+
- spec/ku_fu_spec.rb
|
52
|
+
- spec/spec_helper.rb
|
53
|
+
- spec/support/document.rb
|
54
|
+
- spec/support/user.rb
|
55
|
+
homepage: ''
|
56
|
+
licenses: []
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project: ku_fu
|
75
|
+
rubygems_version: 1.8.10
|
76
|
+
signing_key:
|
77
|
+
specification_version: 3
|
78
|
+
summary: register who created, updated or deleted an active record object
|
79
|
+
test_files:
|
80
|
+
- spec/ku_fu_spec.rb
|
81
|
+
- spec/spec_helper.rb
|
82
|
+
- spec/support/document.rb
|
83
|
+
- spec/support/user.rb
|