watchmaker 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Guardfile CHANGED
@@ -3,19 +3,8 @@
3
3
 
4
4
  guard 'rspec', :version => 2 do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
- watch(%r{^lib/(.+)\.rb$}) { "spec/" }
7
- watch('spec/spec_helper.rb') { "spec/" }
8
-
9
- # Rails example
10
- watch(%r{^spec/.+_spec\.rb$})
11
- watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
12
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
- watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
14
- watch(%r{^spec/support/(.+)\.rb$}) { "spec/" }
15
- watch('spec/spec_helper.rb') { "spec/" }
16
- watch('config/routes.rb') { "spec/routing" }
17
- watch('app/controllers/application_controller.rb') { "spec/controllers" }
18
- # Capybara request specs
19
- watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
6
+ watch(%r{^lib/(.+)\.rb$}) { "spec/" }
7
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec/" }
8
+ watch('spec/spec_helper.rb') { "spec/" }
20
9
  end
21
10
 
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2011 Swipely, Inc.
3
+ Copyright (c) 2011 Christopher Meiklejohn
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.rdoc CHANGED
@@ -19,6 +19,14 @@ objects are meant for integration tests where persistence is required.
19
19
 
20
20
  === Learn profiles
21
21
 
22
+ ==== Implicit profiles
23
+
24
+ Specify a dependency hash of profile name to objects. The watchmaker
25
+ will either yield another watchmaker or a factory when resolving those
26
+ dependencies.
27
+
28
+ Watchmaker.learn :lots_of_things => [:car, :garage, :boat]
29
+
22
30
  ==== Lambda-based profiles
23
31
 
24
32
  When called, will call the lambda.
@@ -51,6 +51,7 @@ GEM
51
51
  factory_girl_rails (1.1.0)
52
52
  factory_girl (~> 2.0.0)
53
53
  railties (>= 3.0.0)
54
+ ffi (1.0.9)
54
55
  guard (0.5.1)
55
56
  thor (~> 0.14.6)
56
57
  guard-rspec (0.4.1)
@@ -58,6 +59,8 @@ GEM
58
59
  horo (1.0.3)
59
60
  rdoc (>= 2.5)
60
61
  i18n (0.5.0)
62
+ libnotify (0.5.7)
63
+ ffi (= 1.0.9)
61
64
  mail (2.2.19)
62
65
  activesupport (>= 2.3.6)
63
66
  i18n (>= 0.4.0)
@@ -86,6 +89,8 @@ GEM
86
89
  rdoc (~> 3.4)
87
90
  thor (~> 0.14.4)
88
91
  rake (0.9.2)
92
+ rb-inotify (0.8.6)
93
+ ffi (>= 0.5.0)
89
94
  rdoc (3.9.2)
90
95
  rspec (2.6.0)
91
96
  rspec-core (~> 2.6.0)
@@ -105,7 +110,6 @@ GEM
105
110
  simplecov-html (0.4.5)
106
111
  sqlite3 (1.3.4)
107
112
  thor (0.14.6)
108
- timecop (0.3.5)
109
113
  treetop (1.4.10)
110
114
  polyglot
111
115
  polyglot (>= 0.3.1)
@@ -122,11 +126,12 @@ DEPENDENCIES
122
126
  guard
123
127
  guard-rspec
124
128
  horo
129
+ libnotify
125
130
  mocha
126
131
  rails (= 3.0.9)
132
+ rb-inotify
127
133
  rspec
128
134
  rspec-rails
129
135
  simplecov
130
136
  sqlite3
131
- timecop
132
137
  watchmaker!
@@ -53,6 +53,7 @@ GEM
53
53
  factory_girl_rails (1.1.0)
54
54
  factory_girl (~> 2.0.0)
55
55
  railties (>= 3.0.0)
56
+ ffi (1.0.9)
56
57
  guard (0.5.1)
57
58
  thor (~> 0.14.6)
58
59
  guard-rspec (0.4.1)
@@ -61,6 +62,8 @@ GEM
61
62
  horo (1.0.3)
62
63
  rdoc (>= 2.5)
63
64
  i18n (0.6.0)
65
+ libnotify (0.5.7)
66
+ ffi (= 1.0.9)
64
67
  mail (2.3.0)
65
68
  i18n (>= 0.4.0)
66
69
  mime-types (~> 1.16)
@@ -94,6 +97,8 @@ GEM
94
97
  rdoc (~> 3.4)
95
98
  thor (~> 0.14.6)
96
99
  rake (0.9.2)
100
+ rb-inotify (0.8.6)
101
+ ffi (>= 0.5.0)
97
102
  rdoc (3.9.2)
98
103
  rspec (2.6.0)
99
104
  rspec-core (~> 2.6.0)
@@ -118,7 +123,6 @@ GEM
118
123
  sqlite3 (1.3.4)
119
124
  thor (0.14.6)
120
125
  tilt (1.3.2)
121
- timecop (0.3.5)
122
126
  treetop (1.4.10)
123
127
  polyglot
124
128
  polyglot (>= 0.3.1)
@@ -135,11 +139,12 @@ DEPENDENCIES
135
139
  guard
136
140
  guard-rspec
137
141
  horo
142
+ libnotify
138
143
  mocha
139
144
  rails (= 3.1.0.rc5)
145
+ rb-inotify
140
146
  rspec
141
147
  rspec-rails
142
148
  simplecov
143
149
  sqlite3
144
- timecop
145
150
  watchmaker!
@@ -74,6 +74,7 @@ GEM
74
74
  factory_girl_rails (1.1.0)
75
75
  factory_girl (~> 2.0.0)
76
76
  railties (>= 3.0.0)
77
+ ffi (1.0.9)
77
78
  guard (0.5.1)
78
79
  thor (~> 0.14.6)
79
80
  guard-rspec (0.4.1)
@@ -82,6 +83,8 @@ GEM
82
83
  horo (1.0.3)
83
84
  rdoc (>= 2.5)
84
85
  i18n (0.6.0)
86
+ libnotify (0.5.7)
87
+ ffi (= 1.0.9)
85
88
  mail (2.3.0)
86
89
  i18n (>= 0.4.0)
87
90
  mime-types (~> 1.16)
@@ -100,6 +103,8 @@ GEM
100
103
  rack-test (0.6.1)
101
104
  rack (>= 1.0)
102
105
  rake (0.9.2)
106
+ rb-inotify (0.8.6)
107
+ ffi (>= 0.5.0)
103
108
  rdoc (3.9.2)
104
109
  rspec (2.6.0)
105
110
  rspec-core (~> 2.6.0)
@@ -124,7 +129,6 @@ GEM
124
129
  sqlite3 (1.3.4)
125
130
  thor (0.14.6)
126
131
  tilt (1.3.2)
127
- timecop (0.3.5)
128
132
  treetop (1.4.10)
129
133
  polyglot
130
134
  polyglot (>= 0.3.1)
@@ -141,11 +145,12 @@ DEPENDENCIES
141
145
  guard
142
146
  guard-rspec
143
147
  horo
148
+ libnotify
144
149
  mocha
145
150
  rails!
151
+ rb-inotify
146
152
  rspec
147
153
  rspec-rails
148
154
  simplecov
149
155
  sqlite3
150
- timecop
151
156
  watchmaker!
data/lib/watchmaker.rb CHANGED
@@ -1,76 +1,11 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require "watchmaker/version"
4
+ require "watchmaker/configuration"
5
+ require "watchmaker/learner"
6
+ require "watchmaker/constructor"
4
7
 
5
8
  module Watchmaker # :nodoc:
6
-
7
- # Attribute accessors to hold profile mappings.
8
- #
9
- mattr_accessor :profiles
10
-
11
- # Learn a new profile.
12
- #
13
- def self.learn(profile, options = {}, &block)
14
-
15
- # Initialize the profiles unless they exist.
16
- #
17
- @@profiles = {} unless @@profiles
18
-
19
- # Add the block to the list of known profiles.
20
- #
21
- @@profiles[profile] = {
22
- :options => options,
23
- :block => block
24
- }
25
-
26
- end
27
-
28
- # Contruct a profile based on lambda.
29
- #
30
- def self.construct(profile)
31
-
32
- # Store created objects.
33
- #
34
- objects = []
35
-
36
- # If a profile exists, call the proc we've stored; if not, raise.
37
- #
38
- if selected_profile = @@profiles[profile]
39
-
40
- if options = selected_profile[:options]
41
-
42
- # For any supplied factories, create them.
43
- #
44
- if factories = options[:factories]
45
- factories.each do |factory|
46
- objects << Factory.create(factory.to_sym)
47
- end
48
- end
49
-
50
- # For any supplied watchmakers, create them.
51
- #
52
- if watchmakers = options[:watchmakers]
53
- watchmakers.each do |watchmaker|
54
- objects << Watchmaker.construct(watchmaker.to_sym)
55
- end
56
- end
57
-
58
- end
59
-
60
- # Run the supplied block.
61
- #
62
- if block = selected_profile.delete(:block)
63
- objects << block.call(objects)
64
- end
65
-
66
- # Return objects.
67
- #
68
- objects
69
-
70
- else
71
- raise "#{profile} is not a valid profile"
72
- end
73
-
74
- end
75
-
9
+ include Learner
10
+ include Constructor
76
11
  end
@@ -0,0 +1,46 @@
1
+ # encoding: UTF-8
2
+
3
+ module Watchmaker # :nodoc:
4
+
5
+ # Singleton configuration class to hold all configured information.
6
+ #
7
+ class Configuration
8
+
9
+ include Singleton
10
+
11
+ # Store list of all profiles.
12
+ #
13
+ attr_accessor :profiles
14
+
15
+ # Initialize to an empty hash.
16
+ #
17
+ def initialize
18
+ @profiles = {}
19
+ end
20
+
21
+ def self.learn(name, dependencies, &block)
22
+ instance.learn(name, dependencies, &block)
23
+ end
24
+
25
+ def self.learned(name)
26
+ instance.learned(name)
27
+ end
28
+
29
+ def self.learned?(name)
30
+ !!learned(name)
31
+ end
32
+
33
+ def learn(name, dependencies, &block) # :nodoc:
34
+ @profiles[name] = {
35
+ :dependencies => dependencies,
36
+ :block => block
37
+ }
38
+ end
39
+
40
+ def learned(name) # :nodoc:
41
+ @profiles[name]
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,83 @@
1
+ # encoding: UTF-8
2
+
3
+ module Watchmaker
4
+ module Constructor
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ # Construct from a factory.
10
+ #
11
+ def construct_from_factory(factory)
12
+ Factory.create(factory.to_sym)
13
+ end
14
+
15
+ # Construct from another watchmaker.
16
+ #
17
+ def construct_from_watchmaker(watchmaker)
18
+ construct(watchmaker.to_sym)
19
+ end
20
+
21
+ # Contruct a profile.
22
+ #
23
+ def construct(profile)
24
+
25
+ # Store created objects.
26
+ #
27
+ objects = []
28
+
29
+ # If a profile exists, call the proc we've stored; if not, raise.
30
+ #
31
+ if selected_profile = Configuration.learned(profile)
32
+
33
+ if dependencies = selected_profile[:dependencies]
34
+
35
+ # For any abstract dependencies, infer how to create them.
36
+ #
37
+ if abstracts = dependencies[:abstract]
38
+ abstracts.each do |abstract|
39
+ if Configuration.learned?(abstract)
40
+ objects << construct_from_watchmaker(abstract)
41
+ else
42
+ objects << construct_from_factory(abstract)
43
+ end
44
+ end
45
+ end
46
+
47
+ # For any supplied factories, create them.
48
+ #
49
+ if factories = dependencies[:factories]
50
+ factories.each do |factory|
51
+ objects << construct_from_factory(factory)
52
+ end
53
+ end
54
+
55
+ # For any supplied watchmakers, create them.
56
+ #
57
+ if watchmakers = dependencies[:watchmakers]
58
+ watchmakers.each do |watchmaker|
59
+ objects << construct_from_watchmaker(watchmaker)
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ # Run the supplied block.
66
+ #
67
+ if block = selected_profile[:block]
68
+ objects << block.call(objects)
69
+ end
70
+
71
+ # Return objects.
72
+ #
73
+ objects
74
+
75
+ else
76
+ raise "#{profile} is not a valid profile"
77
+ end
78
+
79
+ end
80
+
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: UTF-8
2
+
3
+ module Watchmaker
4
+ module Learner
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ # Learn a profile by taking explicit dependencies.
10
+ #
11
+ def learn(name, dependencies = {}, &block)
12
+
13
+ if name.is_a?(Hash)
14
+
15
+ # Convert the hash into a profile name and a list of
16
+ # dependencies that's either a hash of nested classes or
17
+ # array.
18
+ #
19
+ name, dependencies =
20
+ name_and_dependencies_from_dependency_hash(name)
21
+
22
+ # Specifically store these as abstract dependencies.
23
+ #
24
+ dependencies = { :abstract => dependencies }
25
+
26
+ end
27
+
28
+ Configuration.learn(name, dependencies, &block)
29
+ end
30
+
31
+ # Get the profile name out of a dependency hash.
32
+ #
33
+ def name_and_dependencies_from_dependency_hash(dependencies)
34
+ name = dependencies.keys.first
35
+ [name, dependencies[name]]
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Watchmaker # :nodoc:
4
- VERSION = "0.0.1"
4
+ VERSION = "0.1.0"
5
5
  end
@@ -8,26 +8,40 @@ describe Garage do
8
8
  Garage.all.count.should == 2
9
9
  end
10
10
 
11
+ it "should the result of the lambda evaluation when constructing that way" do
12
+ Watchmaker.construct(:two_cars).first.should == 2
13
+ Car.all.count.should == 2
14
+ end
15
+
11
16
  it "should create a garage from the factory based watchmaker" do
12
17
  Watchmaker.construct(:garage)
13
18
  Garage.all.count.should == 1
14
19
  end
15
20
 
16
21
  it "return the objects created from a watchmaker" do
17
- Watchmaker.construct(:garage).first.should be_a_kind_of Garage
18
- Garage.all.count.should == 1
22
+ Watchmaker.construct(:garage).first.should == Garage.first
19
23
  end
20
24
 
21
25
  it "should create a garage and it's from the factory based watchmaker" do
22
- Watchmaker.construct(:car_in_garage)
26
+ Watchmaker.construct(:car_in_garage).map do |o|
27
+ o.class.to_s
28
+ end.should == ["Garage", "Car", "Array"]
29
+
23
30
  Car.all.count.should == 1
24
31
  Garage.all.count.should == 1
25
32
  Garage.first.cars.should include(Car.first)
26
33
  end
27
34
 
28
35
  it "should create a car from the watchmaker based watchmaker" do
29
- Watchmaker.construct(:car)
36
+ Watchmaker.construct(:car_with_garage).first.should be_a_kind_of Car
30
37
  Car.all.count.should == 1
31
38
  Garage.all.count.should == 1
32
39
  end
40
+
41
+ it "should be able to use the new syntax to build based on factories or watchmakers" do
42
+ Watchmaker.construct(:two_cars_and_two_garages)
43
+ Garage.all.count.should == 2
44
+ Car.all.count.should == 2
45
+ Garage.last.cars.count.should == 2
46
+ end
33
47
  end
data/spec/spec_helper.rb CHANGED
@@ -13,16 +13,20 @@ require 'diesel/testing'
13
13
  require 'rspec/rails'
14
14
 
15
15
  require 'factory_girl_rails'
16
- require 'timecop'
17
16
 
18
17
  require 'watchmaker'
19
18
 
20
- require 'simplecov'
21
- SimpleCov.start
19
+ if RUBY_VERSION > "1.9"
20
+ require 'simplecov'
21
+ SimpleCov.start
22
+ end
22
23
 
23
24
  Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
24
25
 
25
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
26
+ ActiveRecord::Base.establish_connection(
27
+ :adapter => "sqlite3",
28
+ :database => ":memory:"
29
+ )
26
30
 
27
31
  ActiveRecord::Base.silence do
28
32
  ActiveRecord::Migration.verbose = false
@@ -6,10 +6,25 @@ Watchmaker.learn :two_garages do
6
6
  end
7
7
  end
8
8
 
9
+ Watchmaker.learn :two_cars do
10
+ 2.times do
11
+ Factory.create(:car)
12
+ end
13
+ end
14
+
9
15
  Watchmaker.learn :garage, :factories => [:garage]
10
16
 
11
- Watchmaker.learn :car, :factories => [:car], :watchmakers => [:garage]
17
+ Watchmaker.learn :car_with_garage, :factories => [:car], :watchmakers => [:garage]
12
18
 
13
19
  Watchmaker.learn :car_in_garage, :factories => [:garage, :car] do |garage, car|
14
20
  garage.cars << car
15
21
  end
22
+
23
+ Watchmaker.learn :two_garages, :factories => [:garage, :garage]
24
+
25
+ Watchmaker.learn :two_cars_and_two_garages => [:two_garages, :car, :car] do |garages, car1, car2|
26
+ garages.each do |garage|
27
+ garage.cars << car1
28
+ garage.cars << car2
29
+ end
30
+ end
data/watchmaker.gemspec CHANGED
@@ -30,11 +30,15 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency('sqlite3')
31
31
  s.add_development_dependency('mocha')
32
32
  s.add_development_dependency('appraisal', '~> 0.3.5')
33
- s.add_development_dependency('timecop')
34
33
  s.add_development_dependency('horo')
35
34
  s.add_development_dependency('simplecov')
36
35
  s.add_development_dependency('diesel')
37
36
  s.add_development_dependency('ZenTest')
38
37
  s.add_development_dependency('guard')
39
- s.add_development_dependency('guard-rspec')
38
+ s.add_development_dependency('guard-rspec')
39
+
40
+ if RUBY_PLATFORM =~ /linux/i
41
+ s.add_development_dependency('rb-inotify')
42
+ s.add_development_dependency('libnotify')
43
+ end
40
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watchmaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-11 00:00:00.000000000 -04:00
13
- default_executable:
12
+ date: 2011-08-21 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rails
17
- requirement: &17963700 !ruby/object:Gem::Requirement
16
+ requirement: &9725140 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: '3.0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *17963700
24
+ version_requirements: *9725140
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: factory_girl
28
- requirement: &17963120 !ruby/object:Gem::Requirement
27
+ requirement: &9724420 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ! '>='
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: '0'
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *17963120
35
+ version_requirements: *9724420
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: factory_girl_rails
39
- requirement: &17935800 !ruby/object:Gem::Requirement
38
+ requirement: &9723520 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ! '>='
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: '0'
45
44
  type: :runtime
46
45
  prerelease: false
47
- version_requirements: *17935800
46
+ version_requirements: *9723520
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: bundler
50
- requirement: &17933900 !ruby/object:Gem::Requirement
49
+ requirement: &9722740 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ~>
@@ -55,10 +54,10 @@ dependencies:
55
54
  version: 1.0.15
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *17933900
57
+ version_requirements: *9722740
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: rspec
61
- requirement: &17932280 !ruby/object:Gem::Requirement
60
+ requirement: &9722080 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ! '>='
@@ -66,10 +65,10 @@ dependencies:
66
65
  version: '0'
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *17932280
68
+ version_requirements: *9722080
70
69
  - !ruby/object:Gem::Dependency
71
70
  name: rspec-rails
72
- requirement: &17931100 !ruby/object:Gem::Requirement
71
+ requirement: &9721340 !ruby/object:Gem::Requirement
73
72
  none: false
74
73
  requirements:
75
74
  - - ! '>='
@@ -77,10 +76,10 @@ dependencies:
77
76
  version: '0'
78
77
  type: :development
79
78
  prerelease: false
80
- version_requirements: *17931100
79
+ version_requirements: *9721340
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: sqlite3
83
- requirement: &17929280 !ruby/object:Gem::Requirement
82
+ requirement: &9720740 !ruby/object:Gem::Requirement
84
83
  none: false
85
84
  requirements:
86
85
  - - ! '>='
@@ -88,10 +87,10 @@ dependencies:
88
87
  version: '0'
89
88
  type: :development
90
89
  prerelease: false
91
- version_requirements: *17929280
90
+ version_requirements: *9720740
92
91
  - !ruby/object:Gem::Dependency
93
92
  name: mocha
94
- requirement: &17907180 !ruby/object:Gem::Requirement
93
+ requirement: &9719920 !ruby/object:Gem::Requirement
95
94
  none: false
96
95
  requirements:
97
96
  - - ! '>='
@@ -99,10 +98,10 @@ dependencies:
99
98
  version: '0'
100
99
  type: :development
101
100
  prerelease: false
102
- version_requirements: *17907180
101
+ version_requirements: *9719920
103
102
  - !ruby/object:Gem::Dependency
104
103
  name: appraisal
105
- requirement: &17906380 !ruby/object:Gem::Requirement
104
+ requirement: &9719140 !ruby/object:Gem::Requirement
106
105
  none: false
107
106
  requirements:
108
107
  - - ~>
@@ -110,10 +109,10 @@ dependencies:
110
109
  version: 0.3.5
111
110
  type: :development
112
111
  prerelease: false
113
- version_requirements: *17906380
112
+ version_requirements: *9719140
114
113
  - !ruby/object:Gem::Dependency
115
- name: timecop
116
- requirement: &17905660 !ruby/object:Gem::Requirement
114
+ name: horo
115
+ requirement: &9718420 !ruby/object:Gem::Requirement
117
116
  none: false
118
117
  requirements:
119
118
  - - ! '>='
@@ -121,10 +120,10 @@ dependencies:
121
120
  version: '0'
122
121
  type: :development
123
122
  prerelease: false
124
- version_requirements: *17905660
123
+ version_requirements: *9718420
125
124
  - !ruby/object:Gem::Dependency
126
- name: horo
127
- requirement: &17904840 !ruby/object:Gem::Requirement
125
+ name: simplecov
126
+ requirement: &9644280 !ruby/object:Gem::Requirement
128
127
  none: false
129
128
  requirements:
130
129
  - - ! '>='
@@ -132,10 +131,10 @@ dependencies:
132
131
  version: '0'
133
132
  type: :development
134
133
  prerelease: false
135
- version_requirements: *17904840
134
+ version_requirements: *9644280
136
135
  - !ruby/object:Gem::Dependency
137
- name: simplecov
138
- requirement: &17903660 !ruby/object:Gem::Requirement
136
+ name: diesel
137
+ requirement: &9643720 !ruby/object:Gem::Requirement
139
138
  none: false
140
139
  requirements:
141
140
  - - ! '>='
@@ -143,10 +142,10 @@ dependencies:
143
142
  version: '0'
144
143
  type: :development
145
144
  prerelease: false
146
- version_requirements: *17903660
145
+ version_requirements: *9643720
147
146
  - !ruby/object:Gem::Dependency
148
- name: diesel
149
- requirement: &17902220 !ruby/object:Gem::Requirement
147
+ name: ZenTest
148
+ requirement: &9642480 !ruby/object:Gem::Requirement
150
149
  none: false
151
150
  requirements:
152
151
  - - ! '>='
@@ -154,10 +153,10 @@ dependencies:
154
153
  version: '0'
155
154
  type: :development
156
155
  prerelease: false
157
- version_requirements: *17902220
156
+ version_requirements: *9642480
158
157
  - !ruby/object:Gem::Dependency
159
- name: ZenTest
160
- requirement: &17901160 !ruby/object:Gem::Requirement
158
+ name: guard
159
+ requirement: &9641860 !ruby/object:Gem::Requirement
161
160
  none: false
162
161
  requirements:
163
162
  - - ! '>='
@@ -165,10 +164,10 @@ dependencies:
165
164
  version: '0'
166
165
  type: :development
167
166
  prerelease: false
168
- version_requirements: *17901160
167
+ version_requirements: *9641860
169
168
  - !ruby/object:Gem::Dependency
170
- name: guard
171
- requirement: &17900380 !ruby/object:Gem::Requirement
169
+ name: guard-rspec
170
+ requirement: &9641260 !ruby/object:Gem::Requirement
172
171
  none: false
173
172
  requirements:
174
173
  - - ! '>='
@@ -176,10 +175,21 @@ dependencies:
176
175
  version: '0'
177
176
  type: :development
178
177
  prerelease: false
179
- version_requirements: *17900380
178
+ version_requirements: *9641260
180
179
  - !ruby/object:Gem::Dependency
181
- name: guard-rspec
182
- requirement: &17877800 !ruby/object:Gem::Requirement
180
+ name: rb-inotify
181
+ requirement: &9640760 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: *9640760
190
+ - !ruby/object:Gem::Dependency
191
+ name: libnotify
192
+ requirement: &9640320 !ruby/object:Gem::Requirement
183
193
  none: false
184
194
  requirements:
185
195
  - - ! '>='
@@ -187,7 +197,7 @@ dependencies:
187
197
  version: '0'
188
198
  type: :development
189
199
  prerelease: false
190
- version_requirements: *17877800
200
+ version_requirements: *9640320
191
201
  description: Build complex objects easily for use in integration tests.
192
202
  email:
193
203
  - christopher.meiklejohn@gmail.com
@@ -213,6 +223,9 @@ files:
213
223
  - gemfiles/rails-master.gemfile
214
224
  - gemfiles/rails-master.gemfile.lock
215
225
  - lib/watchmaker.rb
226
+ - lib/watchmaker/configuration.rb
227
+ - lib/watchmaker/constructor.rb
228
+ - lib/watchmaker/learner.rb
216
229
  - lib/watchmaker/version.rb
217
230
  - spec/database.yml
218
231
  - spec/models/garage_spec.rb
@@ -221,7 +234,6 @@ files:
221
234
  - spec/support/models.rb
222
235
  - spec/support/watchmakers.rb
223
236
  - watchmaker.gemspec
224
- has_rdoc: true
225
237
  homepage: https://github.com/cmeiklejohn/watchmaker
226
238
  licenses: []
227
239
  post_install_message:
@@ -236,7 +248,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
248
  version: '0'
237
249
  segments:
238
250
  - 0
239
- hash: 2836815950547273425
251
+ hash: -449342221056611785
240
252
  required_rubygems_version: !ruby/object:Gem::Requirement
241
253
  none: false
242
254
  requirements:
@@ -245,10 +257,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
257
  version: '0'
246
258
  segments:
247
259
  - 0
248
- hash: 2836815950547273425
260
+ hash: -449342221056611785
249
261
  requirements: []
250
262
  rubyforge_project: watchmaker
251
- rubygems_version: 1.6.2
263
+ rubygems_version: 1.8.6
252
264
  signing_key:
253
265
  specification_version: 3
254
266
  summary: Build complex objects easily for use in integration tests.