nakajima-fixjour 0.1.4 → 0.1.5

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.
@@ -1,4 +1,5 @@
1
1
  module Fixjour
2
+ include Counter
2
3
  class << self
3
4
  include Definitions
4
5
 
@@ -0,0 +1,20 @@
1
+ module Fixjour
2
+ module Counter
3
+ def self.reset(key=nil)
4
+ if key
5
+ @counters[key] = lambda { s ||= 0; s += 1 }
6
+ else
7
+ @counters = Hash.new { |h,k| s ||= 0; c = lambda { s += 1 }; h[k] = c }
8
+ end
9
+ end
10
+ reset
11
+
12
+ def self.counter(key)
13
+ @counters[key][]
14
+ end
15
+
16
+ def counter(key=nil)
17
+ Counter.counter(key)
18
+ end
19
+ end
20
+ end
@@ -8,19 +8,19 @@ module Fixjour
8
8
  def verify!
9
9
  builders.each do |klass|
10
10
  result = new_record(klass)
11
-
11
+
12
12
  unless result.valid?
13
13
  error(klass, InvalidBuilder, "returns an invalid object: #{result.errors.inspect}")
14
14
  end
15
-
15
+
16
16
  unless result.new_record?
17
17
  error(klass, BuilderSavedRecord, "must return a new record")
18
18
  end
19
-
19
+
20
20
  unless result.is_a?(klass)
21
21
  error(klass, WrongBuilderType, "must return an instance of #{klass}")
22
22
  end
23
-
23
+
24
24
  klass.transaction do
25
25
  begin
26
26
  result.save!
@@ -40,13 +40,13 @@ module Fixjour
40
40
  end
41
41
  end
42
42
  end
43
-
43
+
44
44
  def new_record(klass)
45
45
  evaluator.send("new_#{name_for(klass)}")
46
46
  end
47
-
47
+
48
48
  private
49
-
49
+
50
50
  def error(klass, exception, msg)
51
51
  raise exception.new("The builder for #{klass} #{msg} ")
52
52
  end
data/lib/fixjour.rb CHANGED
@@ -11,6 +11,7 @@ require 'fixjour/verify'
11
11
  require 'fixjour/errors'
12
12
  require 'fixjour/generator'
13
13
  require 'fixjour/definitions'
14
+ require 'fixjour/counter'
14
15
  require 'fixjour/builders'
15
16
  require 'fixjour/deprecation'
16
17
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nakajima-fixjour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Nakajima
@@ -14,6 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -35,6 +36,7 @@ files:
35
36
  - lib/core_ext/object.rb
36
37
  - lib/fixjour
37
38
  - lib/fixjour/builders.rb
39
+ - lib/fixjour/counter.rb
38
40
  - lib/fixjour/definitions.rb
39
41
  - lib/fixjour/deprecation.rb
40
42
  - lib/fixjour/errors.rb