trackzor 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -6,15 +6,3 @@ generators/trackzor_migration/templates/migration.rb
6
6
  generators/trackzor_migration/trackzor_migration_generator.rb
7
7
  init.rb
8
8
  lib/trackzor.rb
9
- pkg/trackzor-0.1.0.gem
10
- pkg/trackzor-0.1.0.tar.gz
11
- pkg/trackzor-0.1.0/CHANGELOG
12
- pkg/trackzor-0.1.0/Manifest
13
- pkg/trackzor-0.1.0/README.rdoc
14
- pkg/trackzor-0.1.0/Rakefile
15
- pkg/trackzor-0.1.0/generators/trackzor_migration/templates/migration.rb
16
- pkg/trackzor-0.1.0/generators/trackzor_migration/trackzor_migration_generator.rb
17
- pkg/trackzor-0.1.0/init.rb
18
- pkg/trackzor-0.1.0/lib/trackzor.rb
19
- pkg/trackzor-0.1.0/trackzor.gemspec
20
- trackzor.gemspec
data/Rakefile CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('trackzor', '0.1.0') do |gem|
6
- gem.description = "Track ATTR_updated_at and ATTR_updated_by with ease."
7
- gem.url = "http://bitbucket.org/corneldm/trackzor"
5
+ Echoe.new('trackzor', '0.1.1') do |gem|
6
+ gem.description = "Track ATTR_updated_at and ATTR_updated_by"
7
+ gem.url = "http://github.com/corneldm/trackzor"
8
8
  gem.author = "David Cornelius"
9
9
  gem.email = "david.cornelius@bluefishwireless.net"
10
10
  gem.ignore_pattern = ["tmp/*", "script/*"]
@@ -1,7 +1,7 @@
1
1
  class Trackzorify<%= class_name.pluralize %> < ActiveRecord::Migration
2
2
  def self.up<% args.each do |arg| %>
3
3
  add_column :<%= table_name %>, :<%= "#{arg}_updated_at" %>, :datetime
4
- add_column :<%= table_name %>, :<%= "#{arg}_updated_by" %>, :string<% end %>
4
+ add_column :<%= table_name %>, :<%= "#{arg}_updated_by" %>, :integer<% end %>
5
5
  end
6
6
 
7
7
  def self.down<% args.each do |arg| %>
data/lib/trackzor.rb CHANGED
@@ -4,27 +4,36 @@ module Trackzor
4
4
  end
5
5
 
6
6
  module ClassMethods
7
- def trackzored
8
- self.columns.select{|column| column.name =~ /_updated_by/ }.each do |col|
9
- belongs_to "#{col.name.split('_updated_by')[0]}_source".to_sym, :class_name => 'User', :foreign_key => col.name
7
+ def trackzored(options = {})
8
+ if options[:only]
9
+ except = self.column_names - options[:only].flatten.map(&:to_s)
10
+ else
11
+ except = [self.primary_key, inheritance_column, 'lock_version', 'created_at', 'updated_at']
12
+ except |= Array(options[:except]).collect(&:to_s) if options[:except]
13
+ end
14
+
15
+ (self.column_names - except).select{|column| column =~ /_updated_by/ }.each do |col|
16
+ belongs_to "#{col.split('_updated_by')[0]}_source".to_sym, :class_name => 'User', :foreign_key => col
10
17
  end
11
18
 
12
19
  validate do |record|
13
20
  user = Thread.current[:trackzor_user] || Thread.current[:acts_as_audited_user]
14
21
 
15
22
  record.changes.keys.each do |attr|
16
- time_column = "#{attr}_updated_at"
17
- user_association = "#{attr}_source"
23
+ unless except.include?(attr)
24
+ time_column = "#{attr}_updated_at"
25
+ user_association = "#{attr}_source"
18
26
 
19
- if record.respond_to?(time_column.to_sym)
20
- record.send("#{time_column}=".to_sym, Time.now)
21
- end
27
+ if record.respond_to?(time_column.to_sym)
28
+ record.send("#{time_column}=".to_sym, Time.now)
29
+ end
22
30
 
23
- if record.respond_to?(user_association.to_sym)
24
- if user
25
- record.send("#{user_association}=".to_sym, user)
26
- else
27
- record.errors.add("#{attr}_updated_by", "requires Trackzor.user or Audit.user to be set")
31
+ if record.respond_to?(user_association.to_sym)
32
+ if user
33
+ record.send("#{user_association}=".to_sym, user)
34
+ else
35
+ record.errors.add("#{attr}_updated_by", "requires Trackzor user to be set")
36
+ end
28
37
  end
29
38
  end
30
39
  end
data/trackzor.gemspec CHANGED
@@ -2,21 +2,21 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{trackzor}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["David Cornelius"]
9
- s.date = %q{2010-01-08}
10
- s.description = %q{Track ATTR_updated_at and ATTR_updated_by with ease.}
9
+ s.date = %q{2010-01-13}
10
+ s.description = %q{Track ATTR_updated_at and ATTR_updated_by}
11
11
  s.email = %q{david.cornelius@bluefishwireless.net}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/trackzor.rb"]
13
- s.files = ["CHANGELOG", "Manifest", "README.rdoc", "Rakefile", "generators/trackzor_migration/templates/migration.rb", "generators/trackzor_migration/trackzor_migration_generator.rb", "init.rb", "lib/trackzor.rb", "pkg/trackzor-0.1.0.gem", "pkg/trackzor-0.1.0.tar.gz", "pkg/trackzor-0.1.0/CHANGELOG", "pkg/trackzor-0.1.0/Manifest", "pkg/trackzor-0.1.0/README.rdoc", "pkg/trackzor-0.1.0/Rakefile", "pkg/trackzor-0.1.0/generators/trackzor_migration/templates/migration.rb", "pkg/trackzor-0.1.0/generators/trackzor_migration/trackzor_migration_generator.rb", "pkg/trackzor-0.1.0/init.rb", "pkg/trackzor-0.1.0/lib/trackzor.rb", "pkg/trackzor-0.1.0/trackzor.gemspec", "trackzor.gemspec"]
14
- s.homepage = %q{http://bitbucket.org/corneldm/trackzor}
13
+ s.files = ["CHANGELOG", "Manifest", "README.rdoc", "Rakefile", "generators/trackzor_migration/templates/migration.rb", "generators/trackzor_migration/trackzor_migration_generator.rb", "init.rb", "lib/trackzor.rb", "trackzor.gemspec"]
14
+ s.homepage = %q{http://github.com/corneldm/trackzor}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Trackzor", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{trackzor}
18
18
  s.rubygems_version = %q{1.3.5}
19
- s.summary = %q{Track ATTR_updated_at and ATTR_updated_by with ease.}
19
+ s.summary = %q{Track ATTR_updated_at and ATTR_updated_by}
20
20
 
21
21
  if s.respond_to? :specification_version then
22
22
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackzor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cornelius
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-08 00:00:00 -05:00
12
+ date: 2010-01-13 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Track ATTR_updated_at and ATTR_updated_by with ease.
16
+ description: Track ATTR_updated_at and ATTR_updated_by
17
17
  email: david.cornelius@bluefishwireless.net
18
18
  executables: []
19
19
 
@@ -32,20 +32,9 @@ files:
32
32
  - generators/trackzor_migration/trackzor_migration_generator.rb
33
33
  - init.rb
34
34
  - lib/trackzor.rb
35
- - pkg/trackzor-0.1.0.gem
36
- - pkg/trackzor-0.1.0.tar.gz
37
- - pkg/trackzor-0.1.0/CHANGELOG
38
- - pkg/trackzor-0.1.0/Manifest
39
- - pkg/trackzor-0.1.0/README.rdoc
40
- - pkg/trackzor-0.1.0/Rakefile
41
- - pkg/trackzor-0.1.0/generators/trackzor_migration/templates/migration.rb
42
- - pkg/trackzor-0.1.0/generators/trackzor_migration/trackzor_migration_generator.rb
43
- - pkg/trackzor-0.1.0/init.rb
44
- - pkg/trackzor-0.1.0/lib/trackzor.rb
45
- - pkg/trackzor-0.1.0/trackzor.gemspec
46
35
  - trackzor.gemspec
47
36
  has_rdoc: true
48
- homepage: http://bitbucket.org/corneldm/trackzor
37
+ homepage: http://github.com/corneldm/trackzor
49
38
  licenses: []
50
39
 
51
40
  post_install_message:
@@ -76,6 +65,6 @@ rubyforge_project: trackzor
76
65
  rubygems_version: 1.3.5
77
66
  signing_key:
78
67
  specification_version: 3
79
- summary: Track ATTR_updated_at and ATTR_updated_by with ease.
68
+ summary: Track ATTR_updated_at and ATTR_updated_by
80
69
  test_files: []
81
70
 
File without changes
@@ -1,20 +0,0 @@
1
- CHANGELOG
2
- Manifest
3
- README.rdoc
4
- Rakefile
5
- generators/trackzor_migration/templates/migration.rb
6
- generators/trackzor_migration/trackzor_migration_generator.rb
7
- init.rb
8
- lib/trackzor.rb
9
- pkg/trackzor-0.1.0.gem
10
- pkg/trackzor-0.1.0.tar.gz
11
- pkg/trackzor-0.1.0/CHANGELOG
12
- pkg/trackzor-0.1.0/Manifest
13
- pkg/trackzor-0.1.0/README.rdoc
14
- pkg/trackzor-0.1.0/Rakefile
15
- pkg/trackzor-0.1.0/generators/trackzor_migration/templates/migration.rb
16
- pkg/trackzor-0.1.0/generators/trackzor_migration/trackzor_migration_generator.rb
17
- pkg/trackzor-0.1.0/init.rb
18
- pkg/trackzor-0.1.0/lib/trackzor.rb
19
- pkg/trackzor-0.1.0/trackzor.gemspec
20
- trackzor.gemspec
@@ -1,12 +0,0 @@
1
- = Quick Start
2
-
3
- Add "trackzored" to your model. By convention, any attribute that also has [ATTR]_updated_at or [ATTR]_updated_by will be tracked. If [ATTR]_updated_by is present, it is required by a validator.
4
-
5
- Use the trackzor_migration generator to quickly add columns:
6
- <tt>script/generate trackzor_migration User email phone_number</tt>
7
- This will create a migration for adding email_updated_at, email_updated_by, phone_number_updated_at, and phone_number_updated_by columns.
8
-
9
- To set the current user:
10
- <tt>Trackzor.as_user(user_obj) do
11
- ...
12
- end</tt>
@@ -1,14 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'echoe'
4
-
5
- Echoe.new('trackzor', '0.1.0') do |gem|
6
- gem.description = "Track ATTR_updated_at and ATTR_updated_by with ease."
7
- gem.url = "http://bitbucket.org/corneldm/trackzor"
8
- gem.author = "David Cornelius"
9
- gem.email = "david.cornelius@bluefishwireless.net"
10
- gem.ignore_pattern = ["tmp/*", "script/*"]
11
- gem.development_dependencies = []
12
- end
13
-
14
- Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -1,11 +0,0 @@
1
- class Trackzorify<%= class_name.pluralize %> < ActiveRecord::Migration
2
- def self.up<% args.each do |arg| %>
3
- add_column :<%= table_name %>, :<%= "#{arg}_updated_at" %>, :datetime
4
- add_column :<%= table_name %>, :<%= "#{arg}_updated_by" %>, :string<% end %>
5
- end
6
-
7
- def self.down<% args.each do |arg| %>
8
- remove_column :<%= table_name %>, :<%= "#{arg}_updated_at" %>
9
- remove_column :<%= table_name %>, :<%= "#{arg}_updated_by" %><% end %>
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- class TrackzorMigrationGenerator < Rails::Generator::NamedBase
2
- def manifest
3
- record do |m|
4
- m.migration_template 'migration.rb', 'db/migrate', {:migration_file_name => "trackzorify_#{table_name}"}
5
- end
6
- end
7
- end
@@ -1 +0,0 @@
1
- require 'trackzor'
@@ -1,47 +0,0 @@
1
- module Trackzor
2
- def self.included(base)
3
- base.extend ClassMethods
4
- end
5
-
6
- module ClassMethods
7
- def trackzored
8
- self.columns.select{|column| column.name =~ /_updated_by/ }.each do |col|
9
- belongs_to "#{col.name.split('_updated_by')[0]}_source".to_sym, :class_name => 'User', :foreign_key => col.name
10
- end
11
-
12
- validate do |record|
13
- user = Thread.current[:trackzor_user] || Thread.current[:acts_as_audited_user]
14
-
15
- record.changes.keys.each do |attr|
16
- time_column = "#{attr}_updated_at"
17
- user_association = "#{attr}_source"
18
-
19
- if record.respond_to?(time_column.to_sym)
20
- record.send("#{time_column}=".to_sym, Time.now)
21
- end
22
-
23
- if record.respond_to?(user_association.to_sym)
24
- if user
25
- record.send("#{user_association}=".to_sym, user)
26
- else
27
- record.errors.add("#{attr}_updated_by", "requires Trackzor.user or Audit.user to be set")
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
34
-
35
- # All X attribute changes where X_updated_by exists will be recorded as made by +user+.
36
- def self.as_user(user, &block)
37
- Thread.current[:trackzor_user] = user
38
-
39
- yield
40
-
41
- Thread.current[:trackzor_user] = nil
42
- end
43
- end
44
-
45
- class ActiveRecord::Base
46
- include Trackzor
47
- end
@@ -1,30 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{trackzor}
5
- s.version = "0.1.0"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["David Cornelius"]
9
- s.date = %q{2010-01-08}
10
- s.description = %q{Track ATTR_updated_at and ATTR_updated_by with ease.}
11
- s.email = %q{david.cornelius@bluefishwireless.net}
12
- s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/trackzor.rb"]
13
- s.files = ["CHANGELOG", "Manifest", "README.rdoc", "Rakefile", "generators/trackzor_migration/templates/migration.rb", "generators/trackzor_migration/trackzor_migration_generator.rb", "init.rb", "lib/trackzor.rb", "trackzor.gemspec"]
14
- s.homepage = %q{http://github.com/corneldm/trackzor}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Trackzor", "--main", "README.rdoc"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{trackzor}
18
- s.rubygems_version = %q{1.3.5}
19
- s.summary = %q{Track ATTR_updated_at and ATTR_updated_by with ease.}
20
-
21
- if s.respond_to? :specification_version then
22
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
- else
27
- end
28
- else
29
- end
30
- end
Binary file
Binary file