dagnabit 2.2.6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/History.md +105 -0
  2. data/LICENSE +1 -1
  3. data/MIGRATION.md +56 -0
  4. data/README.md +222 -0
  5. data/bin/dagnabit-test +11 -31
  6. data/db/connection.rb +3 -0
  7. data/{test/connections/native_postgresql → db/connections/postgresql}/connection.rb +6 -5
  8. data/db/models/edge.rb +6 -0
  9. data/db/models/other_edge.rb +6 -0
  10. data/db/models/other_vertex.rb +6 -0
  11. data/db/models/vertex.rb +6 -0
  12. data/db/schema.rb +32 -0
  13. data/lib/dagnabit.rb +6 -19
  14. data/lib/dagnabit/edge.rb +7 -0
  15. data/lib/dagnabit/edge/activation.rb +14 -0
  16. data/lib/dagnabit/edge/associations.rb +10 -0
  17. data/lib/dagnabit/edge/connectivity.rb +38 -0
  18. data/lib/dagnabit/graph.rb +143 -0
  19. data/lib/dagnabit/migration.rb +98 -0
  20. data/lib/dagnabit/version.rb +3 -0
  21. data/lib/dagnabit/vertex.rb +10 -0
  22. data/lib/dagnabit/vertex/activation.rb +19 -0
  23. data/lib/dagnabit/vertex/associations.rb +24 -0
  24. data/lib/dagnabit/vertex/bonding.rb +43 -0
  25. data/lib/dagnabit/vertex/connectivity.rb +130 -0
  26. data/lib/dagnabit/vertex/neighbors.rb +50 -0
  27. data/lib/dagnabit/vertex/settings.rb +56 -0
  28. metadata +94 -143
  29. data/.autotest +0 -5
  30. data/.document +0 -5
  31. data/.gitignore +0 -7
  32. data/Gemfile +0 -15
  33. data/Gemfile.lock +0 -38
  34. data/History.txt +0 -81
  35. data/README.rdoc +0 -202
  36. data/Rakefile +0 -52
  37. data/VERSION.yml +0 -5
  38. data/dagnabit.gemspec +0 -142
  39. data/init.rb +0 -1
  40. data/lib/dagnabit/activation.rb +0 -60
  41. data/lib/dagnabit/link/associations.rb +0 -18
  42. data/lib/dagnabit/link/class_methods.rb +0 -43
  43. data/lib/dagnabit/link/configuration.rb +0 -40
  44. data/lib/dagnabit/link/cycle_prevention.rb +0 -31
  45. data/lib/dagnabit/link/named_scopes.rb +0 -65
  46. data/lib/dagnabit/link/transitive_closure_link_model.rb +0 -86
  47. data/lib/dagnabit/link/transitive_closure_recalculation.rb +0 -17
  48. data/lib/dagnabit/link/transitive_closure_recalculation/on_create.rb +0 -104
  49. data/lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb +0 -125
  50. data/lib/dagnabit/link/transitive_closure_recalculation/on_update.rb +0 -17
  51. data/lib/dagnabit/link/transitive_closure_recalculation/utilities.rb +0 -56
  52. data/lib/dagnabit/link/validations.rb +0 -26
  53. data/lib/dagnabit/node/associations.rb +0 -84
  54. data/lib/dagnabit/node/class_methods.rb +0 -74
  55. data/lib/dagnabit/node/configuration.rb +0 -26
  56. data/lib/dagnabit/node/neighbors.rb +0 -73
  57. data/test/connections/native_sqlite3/connection.rb +0 -24
  58. data/test/dagnabit/link/test_associations.rb +0 -61
  59. data/test/dagnabit/link/test_class_methods.rb +0 -102
  60. data/test/dagnabit/link/test_configuration.rb +0 -38
  61. data/test/dagnabit/link/test_cycle_prevention.rb +0 -64
  62. data/test/dagnabit/link/test_named_scopes.rb +0 -32
  63. data/test/dagnabit/link/test_transitive_closure_link_model.rb +0 -69
  64. data/test/dagnabit/link/test_transitive_closure_recalculation.rb +0 -178
  65. data/test/dagnabit/link/test_validations.rb +0 -39
  66. data/test/dagnabit/node/test_associations.rb +0 -147
  67. data/test/dagnabit/node/test_class_methods.rb +0 -49
  68. data/test/dagnabit/node/test_configuration.rb +0 -29
  69. data/test/dagnabit/node/test_neighbors.rb +0 -91
  70. data/test/helper.rb +0 -26
  71. data/test/models/beta_node.rb +0 -3
  72. data/test/models/custom_data_link.rb +0 -4
  73. data/test/models/customized_link.rb +0 -7
  74. data/test/models/customized_link_node.rb +0 -4
  75. data/test/models/link.rb +0 -4
  76. data/test/models/node.rb +0 -3
  77. data/test/schema/schema.rb +0 -51
@@ -0,0 +1,19 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # This module provides a method to set up all of the Vertex modules in a
6
+ # class.
7
+ module Activation
8
+ ##
9
+ # Sets up dagnabit's vertex modules in a vertex class.
10
+ def acts_as_vertex
11
+ extend Associations
12
+ extend Connectivity
13
+ extend Settings
14
+
15
+ include Bonding
16
+ include Neighbors
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # Associates a vertex with its edges.
6
+ module Associations
7
+ include Settings
8
+
9
+ ##
10
+ # An override of {Settings#connected_by} that installs `has_many`
11
+ # associations named `in_edges` and `out_edges` on a vertex model.
12
+ #
13
+ # `in_edges` is the collection of edges that flow _into_ a vertex;
14
+ # `out_edges` is the collection of edges that flow _out of_ a vertex.
15
+ #
16
+ # @return [void]
17
+ def connected_by(*args)
18
+ super
19
+
20
+ has_many :in_edges, :class_name => edge_model_name, :foreign_key => 'child_id', :dependent => :destroy
21
+ has_many :out_edges, :class_name => edge_model_name, :foreign_key => 'parent_id', :dependent => :destroy
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # Contains methods for bonding a vertex to a graph.
6
+ module Bonding
7
+ ##
8
+ # Calculates a bond for this vertex (the method receiver) to all source
9
+ # vertices of `graph`.
10
+ #
11
+ # This method expects the receiver to have been persisted, and will raise
12
+ # `RuntimeError` if that is not the case.
13
+ #
14
+ # Persisted edges that already connect the receiver vertex to source
15
+ # vertices in `graph` will not be duplicated. Unpersisted edges connecting
16
+ # the receiver to a source in `graph` _will_ be duplicated, so it is
17
+ # advised that you ensure that all vertices and edges in `graph` have been
18
+ # persisted before using {#bond_for}.
19
+ #
20
+ # This method requires the existence of an edge model; see
21
+ # {Settings#edge_model} and {Settings#edge_model_name=}. If an edge model
22
+ # has not been set, this method raises `RuntimeError`.
23
+ #
24
+ # Edges instantiated by `bond_for` are not automatically saved.
25
+ #
26
+ # @param [Dagnabit::Graph] graph the graph to bond
27
+ # @return [Array<edge_model>] a list of edges that, when saved, will bond the
28
+ # vertex to `graph`
29
+ # @raise [RuntimeError] if an edge model has not been set
30
+ def bond_for(graph)
31
+ edge = self.class.edge_model
32
+
33
+ raise 'edge_model must be set' unless edge
34
+ raise "#{self} must be persisted before invoking bond_for" if new_record?
35
+
36
+ sources = graph.sources
37
+ existing = edge.all(:conditions => { :parent_id => id, :child_id => sources.map(&:id) }).map { |e| [e.parent_id, e.child_id] }
38
+ new = sources.inject([]) { |es, s| es << [id, s.id] }
39
+
40
+ (new - existing).map { |p, c| edge.new(:parent_id => p, :child_id => c) }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,130 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # Methods for checking connectivity between vertices.
6
+ #
7
+ # This module is meant to be used by ActiveRecord::Base subclasses.
8
+ module Connectivity
9
+ include Settings
10
+
11
+ ##
12
+ # Finds all source vertices of the given `vertices`. A source vertex is a
13
+ # vertex that has an indegree of zero.
14
+ #
15
+ # The result is the set union of all source vertices of the vertices in
16
+ # `vertices`. The ordering of the result is unspecified.
17
+ #
18
+ # @param [Array<ActiveRecord::Base>] vertices a list of vertices
19
+ # @return [Array<ActiveRecord::Base>] a list of source vertices
20
+ def roots_of(*vertices)
21
+ ids = vertices.map(&:id)
22
+
23
+ find_by_sql([%Q{
24
+ WITH RECURSIVE roots(id) AS (
25
+ SELECT #{edge_table}.parent_id FROM #{table_name} INNER JOIN #{edge_table} ON #{edge_table}.child_id = #{table_name}.id WHERE #{table_name}.id IN (?)
26
+ UNION
27
+ SELECT #{edge_table}.parent_id FROM roots INNER JOIN #{edge_table} ON #{edge_table}.child_id = roots.id
28
+ )
29
+ SELECT
30
+ *
31
+ FROM
32
+ #{table_name}
33
+ WHERE
34
+ #{table_name}.id IN (SELECT
35
+ roots.id
36
+ FROM
37
+ roots
38
+ LEFT JOIN
39
+ #{edge_table} ON roots.id = #{edge_table}.child_id
40
+ WHERE #{edge_table}.child_id IS NULL)
41
+ }, ids])
42
+ end
43
+
44
+ ##
45
+ # Find all ancestors of the given `vertices`.
46
+ #
47
+ # The result is the set union of all ancestors of the vertices in
48
+ # `vertices`. The ordering of the result is unspecified.
49
+ #
50
+ # @param [Array<ActiveRecord::Base>] vertices a list of vertices
51
+ # @return [Array<ActiveRecord::Base>] a list of ancestor vertices
52
+ def ancestors_of(*vertices)
53
+ ids = vertices.map(&:id)
54
+
55
+ find_by_sql([%Q{
56
+ WITH RECURSIVE ancestors(id) AS (
57
+ SELECT #{edge_table}.parent_id FROM #{table_name} INNER JOIN #{edge_table} ON #{edge_table}.child_id = #{table_name}.id WHERE #{table_name}.id IN (?)
58
+ UNION
59
+ SELECT #{edge_table}.parent_id FROM ancestors INNER JOIN #{edge_table} ON #{edge_table}.child_id = ancestors.id
60
+ )
61
+ SELECT * FROM #{table_name} WHERE #{table_name}.id IN (SELECT id FROM ancestors)
62
+ }, ids])
63
+ end
64
+
65
+ ##
66
+ # Finds all immediate parents of `vertices`.
67
+ #
68
+ # The result is the set union of all immediate parents of the vertices in
69
+ # `vertices`. The ordering of the result is unspecified.
70
+ #
71
+ # @param [Array<ActiveRecord::Base>] vertices a list of vertices
72
+ # @return [Array<ActiveRecord::Base>] a list of parent vertices
73
+ def parents_of(*vertices)
74
+ ids = vertices.map(&:id)
75
+
76
+ find_by_sql([%Q{
77
+ SELECT
78
+ *
79
+ FROM
80
+ #{table_name}
81
+ WHERE
82
+ #{table_name}.id IN
83
+ (SELECT parent_id FROM #{edge_table} WHERE child_id IN (?))
84
+ }, ids])
85
+ end
86
+
87
+ ##
88
+ # Finds all immediate children of `vertices`.
89
+ #
90
+ # The result is the set union of all immediate children of the vertices in
91
+ # `vertices`. The ordering of the result is unspecified.
92
+ #
93
+ # @param [Array<ActiveRecord::Base>] vertices a list of vertices
94
+ # @return [Array<ActiveRecord::Base>] a list of child vertices
95
+ def children_of(*vertices)
96
+ ids = vertices.map(&:id)
97
+
98
+ find_by_sql([%Q{
99
+ SELECT
100
+ *
101
+ FROM
102
+ #{table_name}
103
+ WHERE
104
+ #{table_name}.id IN
105
+ (SELECT child_id FROM #{edge_table} WHERE parent_id IN (?))
106
+ }, ids])
107
+ end
108
+
109
+ ##
110
+ # Find all descendants of the given `vertices`.
111
+ #
112
+ # The result is the set union of all descendants of the vertices in
113
+ # `vertices`. The ordering of the result is unspecified.
114
+ #
115
+ # @param [Array<ActiveRecord::Base>] vertices a list of vertices
116
+ # @return [Array<ActiveRecord::Base>] a list of descendant vertices
117
+ def descendants_of(*vertices)
118
+ ids = vertices.map(&:id)
119
+
120
+ find_by_sql([%Q{
121
+ WITH RECURSIVE descendants(id) AS (
122
+ SELECT #{edge_table}.child_id FROM #{table_name} INNER JOIN #{edge_table} ON #{edge_table}.parent_id = #{table_name}.id WHERE #{table_name}.id IN (?)
123
+ UNION
124
+ SELECT #{edge_table}.child_id FROM descendants INNER JOIN #{edge_table} ON #{edge_table}.parent_id = descendants.id
125
+ )
126
+ SELECT * FROM #{table_name} WHERE #{table_name}.id IN (SELECT id FROM descendants)
127
+ }, ids])
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,50 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # Provides per-vertex connectivity queries.
6
+ #
7
+ # This module should be included into a class that has been extended by
8
+ # {Dagnabit::Vertex::Connectivity}. See this module's spec for example usage.
9
+ module Neighbors
10
+ ##
11
+ # Finds all source vertices of the receiver object.
12
+ #
13
+ # @return [Array<ActiveRecord::Base>] a list of source vertices
14
+ def roots
15
+ self.class.roots_of(self)
16
+ end
17
+
18
+ ##
19
+ # Finds all ancestors of the receiver object.
20
+ #
21
+ # @return [Array<ActiveRecord::Base>] a list of ancestor vertices
22
+ def ancestors
23
+ self.class.ancestors_of(self)
24
+ end
25
+
26
+ ##
27
+ # Finds all parents of the receiver object.
28
+ #
29
+ # @return [Array<ActiveRecord::Base>] a list of parent vertices
30
+ def parents
31
+ self.class.parents_of(self)
32
+ end
33
+
34
+ ##
35
+ # Finds all children of the receiver object.
36
+ #
37
+ # @return [Array<ActiveRecord::Base>] a list of child vertices
38
+ def children
39
+ self.class.children_of(self)
40
+ end
41
+
42
+ ##
43
+ # Finds all descendants of the receiver object.
44
+ #
45
+ # @return [Array<ActiveRecord::Base>] a list of descendant vertices
46
+ def descendants
47
+ self.class.descendants_of(self)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,56 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. vertex))
2
+
3
+ module Dagnabit::Vertex
4
+ ##
5
+ # Contains parameters that can be customized on a per-vertex-model basis.
6
+ module Settings
7
+ ##
8
+ # The name of this vertex's edge model.
9
+ #
10
+ # @return [String]
11
+ attr_accessor :edge_model_name
12
+
13
+ ##
14
+ # The edge model associated with a vertex model.
15
+ #
16
+ # @return [Class] the edge model
17
+ def edge_model
18
+ edge_model_name.constantize
19
+ end
20
+
21
+ ##
22
+ # The edge table used by connectivity queries. Equivalent to
23
+ #
24
+ # edge_model.table_name
25
+ #
26
+ # @return [String] the name of the edge table
27
+ def edge_table
28
+ edge_model.table_name
29
+ end
30
+
31
+ ##
32
+ # Sets the name of the edge model associated with a vertex.
33
+ #
34
+ # {#edge_model} uses ActiveSupport's `constantize` method to look up the
35
+ # model from `edge_model_name`.
36
+ #
37
+ # @param [String] edge_model_name the name of the edge model to use
38
+ # @return [void]
39
+ def connected_by(edge_model_name)
40
+ self.edge_model_name = edge_model_name
41
+ end
42
+
43
+ ##
44
+ # This callback ensures that whenever a class that extends Settings is
45
+ # inherited, the settings for the superclass are passed to the subclass.
46
+ #
47
+ # This callback executes any previously-defined definitions of `inherited`
48
+ # beforee executing its own code.
49
+ #
50
+ # @param [Class] subclass the descendant class
51
+ def inherited(subclass)
52
+ super
53
+ subclass.connected_by(edge_model_name)
54
+ end
55
+ end
56
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dagnabit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
- - 2
8
- - 2
9
- - 6
10
- version: 2.2.6
7
+ - 3
8
+ - 0
9
+ - 0
10
+ version: 3.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Yip
@@ -15,30 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-01 00:00:00 -05:00
19
- default_executable: dagnabit-test
18
+ date: 2011-01-10 00:00:00 -06:00
19
+ default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- prerelease: false
24
22
  name: activerecord
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
26
25
  none: false
27
26
  requirements:
28
27
  - - ~>
29
28
  - !ruby/object:Gem::Version
30
- hash: 9
29
+ hash: 3
31
30
  segments:
32
31
  - 2
33
32
  - 3
34
- - 5
35
- version: 2.3.5
36
- requirement: *id001
33
+ - 0
34
+ version: 2.3.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- type: :development
38
+ name: autotest
39
39
  prerelease: false
40
- name: jeweler
41
- version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ requirement: &id002 !ruby/object:Gem::Requirement
42
41
  none: false
43
42
  requirements:
44
43
  - - ">="
@@ -47,28 +46,26 @@ dependencies:
47
46
  segments:
48
47
  - 0
49
48
  version: "0"
50
- requirement: *id002
51
- - !ruby/object:Gem::Dependency
52
49
  type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: bluecloth
53
53
  prerelease: false
54
- name: mocha
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ requirement: &id003 !ruby/object:Gem::Requirement
56
55
  none: false
57
56
  requirements:
58
- - - "="
57
+ - - ">="
59
58
  - !ruby/object:Gem::Version
60
- hash: 43
59
+ hash: 3
61
60
  segments:
62
61
  - 0
63
- - 9
64
- - 8
65
- version: 0.9.8
66
- requirement: *id003
67
- - !ruby/object:Gem::Dependency
62
+ version: "0"
68
63
  type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: cucumber
69
67
  prerelease: false
70
- name: pg
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ requirement: &id004 !ruby/object:Gem::Requirement
72
69
  none: false
73
70
  requirements:
74
71
  - - ">="
@@ -77,28 +74,26 @@ dependencies:
77
74
  segments:
78
75
  - 0
79
76
  version: "0"
80
- requirement: *id004
81
- - !ruby/object:Gem::Dependency
82
77
  type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: rake
83
81
  prerelease: false
84
- name: shoulda
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ requirement: &id005 !ruby/object:Gem::Requirement
86
83
  none: false
87
84
  requirements:
88
- - - "="
85
+ - - ">="
89
86
  - !ruby/object:Gem::Version
90
- hash: 35
87
+ hash: 3
91
88
  segments:
92
- - 2
93
- - 10
94
- - 2
95
- version: 2.10.2
96
- requirement: *id005
97
- - !ruby/object:Gem::Dependency
89
+ - 0
90
+ version: "0"
98
91
  type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: rcov
99
95
  prerelease: false
100
- name: sqlite3-ruby
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
102
97
  none: false
103
98
  requirements:
104
99
  - - ">="
@@ -107,26 +102,28 @@ dependencies:
107
102
  segments:
108
103
  - 0
109
104
  version: "0"
110
- requirement: *id006
111
- - !ruby/object:Gem::Dependency
112
105
  type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: rspec
113
109
  prerelease: false
114
- name: redgreen
115
- version_requirements: &id007 !ruby/object:Gem::Requirement
110
+ requirement: &id007 !ruby/object:Gem::Requirement
116
111
  none: false
117
112
  requirements:
118
- - - ">="
113
+ - - ~>
119
114
  - !ruby/object:Gem::Version
120
- hash: 3
115
+ hash: 15
121
116
  segments:
117
+ - 2
122
118
  - 0
123
- version: "0"
124
- requirement: *id007
125
- - !ruby/object:Gem::Dependency
119
+ - 0
120
+ version: 2.0.0
126
121
  type: :development
122
+ version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: pg
127
125
  prerelease: false
128
- name: rcov
129
- version_requirements: &id008 !ruby/object:Gem::Requirement
126
+ requirement: &id008 !ruby/object:Gem::Requirement
130
127
  none: false
131
128
  requirements:
132
129
  - - ">="
@@ -135,12 +132,12 @@ dependencies:
135
132
  segments:
136
133
  - 0
137
134
  version: "0"
138
- requirement: *id008
139
- - !ruby/object:Gem::Dependency
140
135
  type: :development
136
+ version_requirements: *id008
137
+ - !ruby/object:Gem::Dependency
138
+ name: yard
141
139
  prerelease: false
142
- name: ZenTest
143
- version_requirements: &id009 !ruby/object:Gem::Requirement
140
+ requirement: &id009 !ruby/object:Gem::Requirement
144
141
  none: false
145
142
  requirements:
146
143
  - - ">="
@@ -149,77 +146,52 @@ dependencies:
149
146
  segments:
150
147
  - 0
151
148
  version: "0"
152
- requirement: *id009
153
- description:
154
- email: yipdw@northwestern.edu
149
+ type: :development
150
+ version_requirements: *id009
151
+ description: Directed acyclic graph support library for applications using ActiveRecord on top of PostgreSQL.
152
+ email:
153
+ - yipdw@member.fsf.org
155
154
  executables:
156
155
  - dagnabit-test
157
156
  extensions: []
158
157
 
159
- extra_rdoc_files:
160
- - LICENSE
161
- - README.rdoc
158
+ extra_rdoc_files: []
159
+
162
160
  files:
163
- - .autotest
164
- - .document
165
- - .gitignore
166
- - Gemfile
167
- - Gemfile.lock
168
- - History.txt
161
+ - History.md
162
+ - MIGRATION.md
163
+ - README.md
169
164
  - LICENSE
170
- - README.rdoc
171
- - Rakefile
172
- - VERSION.yml
173
- - bin/dagnabit-test
174
- - dagnabit.gemspec
175
- - init.rb
165
+ - lib/dagnabit/edge/activation.rb
166
+ - lib/dagnabit/edge/associations.rb
167
+ - lib/dagnabit/edge/connectivity.rb
168
+ - lib/dagnabit/edge.rb
169
+ - lib/dagnabit/graph.rb
170
+ - lib/dagnabit/migration.rb
171
+ - lib/dagnabit/version.rb
172
+ - lib/dagnabit/vertex/activation.rb
173
+ - lib/dagnabit/vertex/associations.rb
174
+ - lib/dagnabit/vertex/bonding.rb
175
+ - lib/dagnabit/vertex/connectivity.rb
176
+ - lib/dagnabit/vertex/neighbors.rb
177
+ - lib/dagnabit/vertex/settings.rb
178
+ - lib/dagnabit/vertex.rb
176
179
  - lib/dagnabit.rb
177
- - lib/dagnabit/activation.rb
178
- - lib/dagnabit/link/associations.rb
179
- - lib/dagnabit/link/class_methods.rb
180
- - lib/dagnabit/link/configuration.rb
181
- - lib/dagnabit/link/cycle_prevention.rb
182
- - lib/dagnabit/link/named_scopes.rb
183
- - lib/dagnabit/link/transitive_closure_link_model.rb
184
- - lib/dagnabit/link/transitive_closure_recalculation.rb
185
- - lib/dagnabit/link/transitive_closure_recalculation/on_create.rb
186
- - lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb
187
- - lib/dagnabit/link/transitive_closure_recalculation/on_update.rb
188
- - lib/dagnabit/link/transitive_closure_recalculation/utilities.rb
189
- - lib/dagnabit/link/validations.rb
190
- - lib/dagnabit/node/associations.rb
191
- - lib/dagnabit/node/class_methods.rb
192
- - lib/dagnabit/node/configuration.rb
193
- - lib/dagnabit/node/neighbors.rb
194
- - test/connections/native_postgresql/connection.rb
195
- - test/connections/native_sqlite3/connection.rb
196
- - test/dagnabit/link/test_associations.rb
197
- - test/dagnabit/link/test_class_methods.rb
198
- - test/dagnabit/link/test_configuration.rb
199
- - test/dagnabit/link/test_cycle_prevention.rb
200
- - test/dagnabit/link/test_named_scopes.rb
201
- - test/dagnabit/link/test_transitive_closure_link_model.rb
202
- - test/dagnabit/link/test_transitive_closure_recalculation.rb
203
- - test/dagnabit/link/test_validations.rb
204
- - test/dagnabit/node/test_associations.rb
205
- - test/dagnabit/node/test_class_methods.rb
206
- - test/dagnabit/node/test_configuration.rb
207
- - test/dagnabit/node/test_neighbors.rb
208
- - test/helper.rb
209
- - test/models/beta_node.rb
210
- - test/models/custom_data_link.rb
211
- - test/models/customized_link.rb
212
- - test/models/customized_link_node.rb
213
- - test/models/link.rb
214
- - test/models/node.rb
215
- - test/schema/schema.rb
180
+ - bin/dagnabit-test
181
+ - db/connection.rb
182
+ - db/connections/postgresql/connection.rb
183
+ - db/models/edge.rb
184
+ - db/models/other_edge.rb
185
+ - db/models/other_vertex.rb
186
+ - db/models/vertex.rb
187
+ - db/schema.rb
216
188
  has_rdoc: true
217
- homepage: http://gitorious.org/dagnabit/dagnabit
189
+ homepage: http://rubygems.org/gems/dagnabit
218
190
  licenses: []
219
191
 
220
192
  post_install_message:
221
- rdoc_options:
222
- - --charset=UTF-8
193
+ rdoc_options: []
194
+
223
195
  require_paths:
224
196
  - lib
225
197
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -246,27 +218,6 @@ rubyforge_project:
246
218
  rubygems_version: 1.3.7
247
219
  signing_key:
248
220
  specification_version: 3
249
- summary: Directed acyclic graph plugin for ActiveRecord
250
- test_files:
251
- - test/connections/native_postgresql/connection.rb
252
- - test/connections/native_sqlite3/connection.rb
253
- - test/dagnabit/link/test_associations.rb
254
- - test/dagnabit/link/test_class_methods.rb
255
- - test/dagnabit/link/test_configuration.rb
256
- - test/dagnabit/link/test_cycle_prevention.rb
257
- - test/dagnabit/link/test_named_scopes.rb
258
- - test/dagnabit/link/test_transitive_closure_link_model.rb
259
- - test/dagnabit/link/test_transitive_closure_recalculation.rb
260
- - test/dagnabit/link/test_validations.rb
261
- - test/dagnabit/node/test_associations.rb
262
- - test/dagnabit/node/test_class_methods.rb
263
- - test/dagnabit/node/test_configuration.rb
264
- - test/dagnabit/node/test_neighbors.rb
265
- - test/helper.rb
266
- - test/models/beta_node.rb
267
- - test/models/custom_data_link.rb
268
- - test/models/customized_link.rb
269
- - test/models/customized_link_node.rb
270
- - test/models/link.rb
271
- - test/models/node.rb
272
- - test/schema/schema.rb
221
+ summary: Directed acyclic graph plugin for ActiveRecord/PostgreSQL
222
+ test_files: []
223
+