audit 0.3.0 → 0.4.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.
data/Gemfile.lock CHANGED
@@ -45,3 +45,6 @@ DEPENDENCIES
45
45
  shoulda (~> 2.11.3)
46
46
  sqlite3-ruby
47
47
  yajl-ruby (~> 0.7.7)
48
+
49
+ METADATA
50
+ version: 1.0.6
data/Rakefile CHANGED
@@ -45,14 +45,6 @@ task :compat do
45
45
  sh "rvm 1.9.2@audit,ree-1.8.7-2010.01@audit rake test"
46
46
  end
47
47
 
48
- desc "Generate RCov test coverage and open in your browser"
49
- task :coverage do
50
- require 'rcov'
51
- sh "rm -fr coverage"
52
- sh "rcov test/test_*.rb"
53
- sh "open coverage/index.html"
54
- end
55
-
56
48
  require 'rake/rdoctask'
57
49
  Rake::RDocTask.new do |rdoc|
58
50
  rdoc.rdoc_dir = 'rdoc'
@@ -61,15 +53,7 @@ Rake::RDocTask.new do |rdoc|
61
53
  rdoc.rdoc_files.include('lib/**/*.rb')
62
54
  end
63
55
 
64
- desc "Open an irb session preloaded with this library"
65
- task :console do
66
- sh "irb -rubygems -r ./lib/#{name}.rb"
67
- end
68
-
69
- # =============
70
- # = Packaging =
71
- # =============
72
-
56
+ desc "Build, tag, push and publish a new release."
73
57
  task :release => :build do
74
58
  unless `git branch` =~ /^\* master$/
75
59
  puts "You must be on the master branch to release!"
@@ -82,12 +66,14 @@ task :release => :build do
82
66
  sh "gem push pkg/#{name}-#{version}.gem"
83
67
  end
84
68
 
69
+ desc "Build a new gem"
85
70
  task :build => :gemspec do
86
71
  sh "mkdir -p pkg"
87
72
  sh "gem build #{gemspec_file}"
88
73
  sh "mv #{gem_file} pkg"
89
74
  end
90
75
 
76
+ desc "Update the generated gemspec"
91
77
  task :gemspec => :validate do
92
78
  # read spec file and split out manifest section
93
79
  spec = File.read(gemspec_file)
data/audit.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'audit'
16
- s.version = '0.3.0'
17
- s.date = '2010-10-05'
16
+ s.version = '0.4.0'
17
+ s.date = '2010-11-16'
18
18
  s.rubyforge_project = 'audit'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  ## a custom homepage, consider using your GitHub URL or the like.
28
28
  s.authors = ["Adam Keys"]
29
29
  s.email = 'adam@therealadam.com'
30
- s.homepage = 'http://github.com/therealadam/auditus'
30
+ s.homepage = 'http://github.com/therealadam/audit'
31
31
 
32
32
  ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
33
33
  ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
data/lib/audit.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Audit
4
4
 
5
5
  # Everything needs a version.
6
- VERSION = '0.3.0'
6
+ VERSION = '0.4.0'
7
7
 
8
8
  autoload :Log, "audit/log"
9
9
  autoload :Changeset, "audit/changeset"
data/lib/audit/log.rb CHANGED
@@ -14,12 +14,13 @@ module Audit::Log
14
14
  # bucket - the String name for the logical bucket this audit record belongs
15
15
  # to (i.e. table)
16
16
  # key - the String key into the logical bucket
17
+ # timestamp - timestamp to use for this record's UUID
17
18
  # changes - the changes hash (as generated by ActiveRecord) to store
18
19
  #
19
20
  # Returns nothing.
20
- def self.record(bucket, key, changes)
21
+ def self.record(bucket, key, timestamp, changes)
21
22
  json = Yajl::Encoder.encode(changes)
22
- payload = {SimpleUUID::UUID.new => json}
23
+ payload = {SimpleUUID::UUID.new(timestamp) => json}
23
24
  connection.insert(:Audits, "#{bucket}:#{key}", payload)
24
25
  end
25
26
 
@@ -34,7 +34,7 @@ module Audit::Tracking
34
34
  end
35
35
 
36
36
  data = {"changes" => changes, "metadata" => audit_metadata}
37
- Audit::Tracking.log.record(audit_bucket, self.id, data)
37
+ Audit::Tracking.log.record(audit_bucket, self.id, Time.now.utc, data)
38
38
  @audit_metadata = {}
39
39
  end
40
40
 
data/test/log_test.rb CHANGED
@@ -3,16 +3,18 @@ require 'test_helper'
3
3
  class LogTest < Test::Unit::TestCase
4
4
 
5
5
  should "save audit record" do
6
- assert Audit::Log.record(:Users, 1, simple_change)
6
+ assert_nothing_raised do
7
+ Audit::Log.record(:Users, 1, timestamp, simple_change)
8
+ end
7
9
  end
8
10
 
9
11
  should "load audit records" do
10
- Audit::Log.record(:Users, 1, simple_change)
12
+ Audit::Log.record(:Users, 1, timestamp, simple_change)
11
13
  assert_kind_of Audit::Changeset, Audit::Log.audits(:Users, 1).first
12
14
  end
13
15
 
14
16
  should "load audits with multiple changed attributes" do
15
- Audit::Log.record(:Users, 1, multiple_changes)
17
+ Audit::Log.record(:Users, 1, timestamp, multiple_changes)
16
18
  changes = Audit::Log.audits(:Users, 1).first.changes
17
19
  changes.each do |change|
18
20
  assert %w{username age}.include?(change.attribute)
@@ -20,6 +22,10 @@ class LogTest < Test::Unit::TestCase
20
22
  assert ["adam", 31].include?(change.new_value)
21
23
  end
22
24
  end
25
+
26
+ def timestamp
27
+ Time.now.utc
28
+ end
23
29
 
24
30
  def simple_change
25
31
  {"changes" => {"username" => ["akk", "adam"]}, "metadata" => {}}
@@ -2,7 +2,7 @@
2
2
  <Keyspaces>
3
3
  <Keyspace Name="Audit">
4
4
  <KeysCachedFraction>0.01</KeysCachedFraction>
5
- <ColumnFamily CompareWith="UTF8Type" Name="Audits" />
5
+ <ColumnFamily CompareWith="TimeUUIDType" Name="Audits" />
6
6
  <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>
7
7
  <ReplicationFactor>1</ReplicationFactor>
8
8
  <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>
data/test/test_helper.rb CHANGED
@@ -14,10 +14,15 @@ class Test::Unit::TestCase
14
14
 
15
15
  alias_method :original_setup, :setup
16
16
  def setup
17
- Audit::Log.connection = Cassandra::Mock.new(
18
- 'Audit',
19
- File.join(File.dirname(__FILE__), 'storage-conf.xml')
20
- )
17
+ if ENV["CASSANDRA"] == "Y"
18
+ Audit::Log.connection = Cassandra.new("Audit")
19
+ Audit::Log.connection.clear_keyspace!
20
+ else
21
+ Audit::Log.connection = Cassandra::Mock.new(
22
+ 'Audit',
23
+ File.join(File.dirname(__FILE__), 'storage-conf.xml')
24
+ )
25
+ end
21
26
  original_setup
22
27
  end
23
28
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
7
+ - 4
8
8
  - 0
9
- version: 0.3.0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Adam Keys
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-05 00:00:00 -05:00
17
+ date: 2010-11-16 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -90,7 +90,7 @@ files:
90
90
  - test/test_helper.rb
91
91
  - test/tracking_test.rb
92
92
  has_rdoc: true
93
- homepage: http://github.com/therealadam/auditus
93
+ homepage: http://github.com/therealadam/audit
94
94
  licenses: []
95
95
 
96
96
  post_install_message: