dagnabit 2.2.6 → 3.0.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/History.md +105 -0
- data/LICENSE +1 -1
- data/MIGRATION.md +56 -0
- data/README.md +222 -0
- data/bin/dagnabit-test +11 -31
- data/db/connection.rb +3 -0
- data/{test/connections/native_postgresql → db/connections/postgresql}/connection.rb +6 -5
- data/db/models/edge.rb +6 -0
- data/db/models/other_edge.rb +6 -0
- data/db/models/other_vertex.rb +6 -0
- data/db/models/vertex.rb +6 -0
- data/db/schema.rb +32 -0
- data/lib/dagnabit.rb +6 -19
- data/lib/dagnabit/edge.rb +7 -0
- data/lib/dagnabit/edge/activation.rb +14 -0
- data/lib/dagnabit/edge/associations.rb +10 -0
- data/lib/dagnabit/edge/connectivity.rb +38 -0
- data/lib/dagnabit/graph.rb +143 -0
- data/lib/dagnabit/migration.rb +98 -0
- data/lib/dagnabit/version.rb +3 -0
- data/lib/dagnabit/vertex.rb +10 -0
- data/lib/dagnabit/vertex/activation.rb +19 -0
- data/lib/dagnabit/vertex/associations.rb +24 -0
- data/lib/dagnabit/vertex/bonding.rb +43 -0
- data/lib/dagnabit/vertex/connectivity.rb +130 -0
- data/lib/dagnabit/vertex/neighbors.rb +50 -0
- data/lib/dagnabit/vertex/settings.rb +56 -0
- metadata +94 -143
- data/.autotest +0 -5
- data/.document +0 -5
- data/.gitignore +0 -7
- data/Gemfile +0 -15
- data/Gemfile.lock +0 -38
- data/History.txt +0 -81
- data/README.rdoc +0 -202
- data/Rakefile +0 -52
- data/VERSION.yml +0 -5
- data/dagnabit.gemspec +0 -142
- data/init.rb +0 -1
- data/lib/dagnabit/activation.rb +0 -60
- data/lib/dagnabit/link/associations.rb +0 -18
- data/lib/dagnabit/link/class_methods.rb +0 -43
- data/lib/dagnabit/link/configuration.rb +0 -40
- data/lib/dagnabit/link/cycle_prevention.rb +0 -31
- data/lib/dagnabit/link/named_scopes.rb +0 -65
- data/lib/dagnabit/link/transitive_closure_link_model.rb +0 -86
- data/lib/dagnabit/link/transitive_closure_recalculation.rb +0 -17
- data/lib/dagnabit/link/transitive_closure_recalculation/on_create.rb +0 -104
- data/lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb +0 -125
- data/lib/dagnabit/link/transitive_closure_recalculation/on_update.rb +0 -17
- data/lib/dagnabit/link/transitive_closure_recalculation/utilities.rb +0 -56
- data/lib/dagnabit/link/validations.rb +0 -26
- data/lib/dagnabit/node/associations.rb +0 -84
- data/lib/dagnabit/node/class_methods.rb +0 -74
- data/lib/dagnabit/node/configuration.rb +0 -26
- data/lib/dagnabit/node/neighbors.rb +0 -73
- data/test/connections/native_sqlite3/connection.rb +0 -24
- data/test/dagnabit/link/test_associations.rb +0 -61
- data/test/dagnabit/link/test_class_methods.rb +0 -102
- data/test/dagnabit/link/test_configuration.rb +0 -38
- data/test/dagnabit/link/test_cycle_prevention.rb +0 -64
- data/test/dagnabit/link/test_named_scopes.rb +0 -32
- data/test/dagnabit/link/test_transitive_closure_link_model.rb +0 -69
- data/test/dagnabit/link/test_transitive_closure_recalculation.rb +0 -178
- data/test/dagnabit/link/test_validations.rb +0 -39
- data/test/dagnabit/node/test_associations.rb +0 -147
- data/test/dagnabit/node/test_class_methods.rb +0 -49
- data/test/dagnabit/node/test_configuration.rb +0 -29
- data/test/dagnabit/node/test_neighbors.rb +0 -91
- data/test/helper.rb +0 -26
- data/test/models/beta_node.rb +0 -3
- data/test/models/custom_data_link.rb +0 -4
- data/test/models/customized_link.rb +0 -7
- data/test/models/customized_link_node.rb +0 -4
- data/test/models/link.rb +0 -4
- data/test/models/node.rb +0 -3
- data/test/schema/schema.rb +0 -51
data/.autotest
DELETED
data/.document
DELETED
data/.gitignore
DELETED
data/Gemfile
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# A sample Gemfile
|
2
|
-
source :gemcutter
|
3
|
-
|
4
|
-
gem 'activerecord', '~> 2.3.5'
|
5
|
-
|
6
|
-
group :development do
|
7
|
-
gem 'jeweler'
|
8
|
-
gem 'mocha', '0.9.8'
|
9
|
-
gem 'pg'
|
10
|
-
gem 'shoulda', '2.10.2'
|
11
|
-
gem 'sqlite3-ruby'
|
12
|
-
gem 'redgreen'
|
13
|
-
gem 'rcov'
|
14
|
-
gem 'ZenTest'
|
15
|
-
end
|
data/Gemfile.lock
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
ZenTest (4.4.0)
|
5
|
-
activerecord (2.3.9)
|
6
|
-
activesupport (= 2.3.9)
|
7
|
-
activesupport (2.3.9)
|
8
|
-
gemcutter (0.6.1)
|
9
|
-
git (1.2.5)
|
10
|
-
jeweler (1.4.0)
|
11
|
-
gemcutter (>= 0.1.0)
|
12
|
-
git (>= 1.2.5)
|
13
|
-
rubyforge (>= 2.0.0)
|
14
|
-
json_pure (1.4.6)
|
15
|
-
mocha (0.9.8)
|
16
|
-
rake
|
17
|
-
pg (0.9.0)
|
18
|
-
rake (0.8.7)
|
19
|
-
rcov (0.9.9)
|
20
|
-
redgreen (1.2.2)
|
21
|
-
rubyforge (2.0.4)
|
22
|
-
json_pure (>= 1.1.7)
|
23
|
-
shoulda (2.10.2)
|
24
|
-
sqlite3-ruby (1.3.1)
|
25
|
-
|
26
|
-
PLATFORMS
|
27
|
-
ruby
|
28
|
-
|
29
|
-
DEPENDENCIES
|
30
|
-
ZenTest
|
31
|
-
activerecord (~> 2.3.5)
|
32
|
-
jeweler
|
33
|
-
mocha (= 0.9.8)
|
34
|
-
pg
|
35
|
-
rcov
|
36
|
-
redgreen
|
37
|
-
shoulda (= 2.10.2)
|
38
|
-
sqlite3-ruby
|
data/History.txt
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
== 2.2.6 2010-01-01
|
2
|
-
|
3
|
-
=== Bugfixes
|
4
|
-
|
5
|
-
* Fixed version requirements.
|
6
|
-
|
7
|
-
== 2.2.5 2010-10-01
|
8
|
-
|
9
|
-
=== Minor changes
|
10
|
-
|
11
|
-
* Ported development code to Bundler 1.0.
|
12
|
-
* Removed usage of Object#returning, which was deprecated in ActiveSupport
|
13
|
-
2.3.9.
|
14
|
-
|
15
|
-
== 2.2.4 2010-03-15
|
16
|
-
|
17
|
-
=== Bugfixes
|
18
|
-
|
19
|
-
* Ensure that ActiveRecord is loaded before dagnabit's extensions are loaded.
|
20
|
-
This fixes a problem that would occasionally occur when using dagnabit in
|
21
|
-
Bundler.
|
22
|
-
|
23
|
-
== 2.2.3 2010-02-17
|
24
|
-
|
25
|
-
=== Bugfixes
|
26
|
-
|
27
|
-
* It was not possible to delete links having custom data attributes in dagnabit
|
28
|
-
versions <= 2.3.2. This has been fixed.
|
29
|
-
|
30
|
-
== 2.2.2 2010-02-04
|
31
|
-
|
32
|
-
=== Minor enhancements
|
33
|
-
|
34
|
-
* Slightly smarter transitive closure maintenance: if a link was saved but
|
35
|
-
neither its ancestor nor descendant changed, the transitive closure will not
|
36
|
-
be recalculated.
|
37
|
-
* Removed usage of deprecated "require 'activesupport'".
|
38
|
-
|
39
|
-
== 2.2.1 2009-12-07
|
40
|
-
|
41
|
-
=== Minor enhancements
|
42
|
-
|
43
|
-
* Added NUBIC provenance.
|
44
|
-
More information on NUBIC: http://www.nucats.northwestern.edu/centers/nubic/index.html
|
45
|
-
|
46
|
-
== 2.2.0 2009-09-14
|
47
|
-
|
48
|
-
=== Minor enhancements
|
49
|
-
|
50
|
-
* Commonized models used in dagnabit's tests.
|
51
|
-
* Switched to named scopes to implement Link#linking and TransitiveClosureLink#linking.
|
52
|
-
|
53
|
-
== 2.1.0 2009-09-04
|
54
|
-
|
55
|
-
=== Bugfixes
|
56
|
-
|
57
|
-
* Fixed overzealous on-destroy transitive closure maintenance in situations like these:
|
58
|
-
|
59
|
-
n1 -> n2 -> n3
|
60
|
-
|__________|
|
61
|
-
|
62
|
-
Previously, deleting the edges (n1, n2) and (n2, n3) would also delete the
|
63
|
-
edge (n1, n3).
|
64
|
-
|
65
|
-
== 2.0.0 2009-08-17
|
66
|
-
|
67
|
-
=== Major changes
|
68
|
-
|
69
|
-
* Link models now validate their ancestor and descendant. This means that
|
70
|
-
Link#connect will fail if a link cannot be made due to node validation
|
71
|
-
failures.
|
72
|
-
|
73
|
-
Unfortunately, this also means you can no longer write code like this:
|
74
|
-
|
75
|
-
node1.links_as_parent.build(:descendant => node2)
|
76
|
-
|
77
|
-
or
|
78
|
-
|
79
|
-
node2.links_as_child.build(:ancestor => node1)
|
80
|
-
|
81
|
-
See commit 61d6e3841b63fdcaad7fcecd05b24f4b9f217ba2 for more details.
|
data/README.rdoc
DELETED
@@ -1,202 +0,0 @@
|
|
1
|
-
= Read this first
|
2
|
-
|
3
|
-
dagnabit is shutting down. Errors will be fixed, but no new features will be
|
4
|
-
added.
|
5
|
-
|
6
|
-
If you need fast reachability queries in a Ruby application that uses an SQL
|
7
|
-
database, consider using a database that supports recursive common table
|
8
|
-
expressions (e.g. PostgreSQL) and Sequel, which has a Ruby interface for
|
9
|
-
constructing recursive CTEs.
|
10
|
-
|
11
|
-
= dagnabit
|
12
|
-
|
13
|
-
dagnabit is (yet another) ActiveRecord plugin for directed acyclic graphs. It
|
14
|
-
provides an underlying representation that facilitates fast reachability
|
15
|
-
queries at the expense of edge insertion/deletion speed and execution time.
|
16
|
-
|
17
|
-
The data structure used by dagnabit is the structure described in:
|
18
|
-
|
19
|
-
DONG, G., LIBKIN, L., SU, J., and WONG, L. "Maintaining the
|
20
|
-
transitive closure of graphs in SQL." In Int. J. Information Technology, vol.
|
21
|
-
5, 1999.
|
22
|
-
|
23
|
-
dagnabit was developed for a Ruby on Rails application designed for management
|
24
|
-
and querying of large-and-rapidly-growing biospecimen banks (i.e. for cancer
|
25
|
-
research). The application uses directed acyclic graphs for knowledge
|
26
|
-
representation (storage and application of workflows) and representing
|
27
|
-
biospecimen heritage.
|
28
|
-
|
29
|
-
dagnabit was developed at the Northwestern University Biomedical Informatics
|
30
|
-
Center <http://www.nucats.northwestern.edu/centers/nubic/index.html>.
|
31
|
-
|
32
|
-
dagnabit is hosted at Gitorious and Github:
|
33
|
-
|
34
|
-
http://gitorious.org/dagnabit/dagnabit
|
35
|
-
http://github.com/yipdw/dagnabit
|
36
|
-
|
37
|
-
The Gitorious repository is always updated before the Github repository, and
|
38
|
-
should be considered canonical.
|
39
|
-
|
40
|
-
== Related work
|
41
|
-
|
42
|
-
This plugin was inspired by Matthew Leventi's acts-as-dag plugin
|
43
|
-
<http://github.com/mleventi/acts-as-dag/tree/master>. Indeed, Leventi's
|
44
|
-
acts-as-dag plugin was originally used in the application from which this
|
45
|
-
plugin was extracted, and dagnabit's node and edge interfaces were modeled
|
46
|
-
after the interfaces provided by acts-as-dag.
|
47
|
-
|
48
|
-
The primary differences between dagnabit and acts-as-dag are:
|
49
|
-
|
50
|
-
* acts-as-dag does not permit linking of unpersisted nodes, i.e.
|
51
|
-
|
52
|
-
n1 = Node.new
|
53
|
-
n2 = Node.new
|
54
|
-
e1 = Link.new(:ancestor => n1, :descendant => n2)
|
55
|
-
... other code ...
|
56
|
-
|
57
|
-
[n1, n2, e1].map { |o| o.save }
|
58
|
-
|
59
|
-
With acts-as-dag, one must save the nodes _before_ creating the edge.
|
60
|
-
The above code segment works in dagnabit.
|
61
|
-
|
62
|
-
* acts-as-dag issues O(x*y) queries on edge insert, update, and delete, where x
|
63
|
-
and y are the number of ancestors and descendants of a node. In environments
|
64
|
-
where network latency between database and application server is considerable,
|
65
|
-
this can adversely affect application performance.
|
66
|
-
|
67
|
-
dagnabit uses a constant number of queries for insert, update, and delete.
|
68
|
-
(The execution time and memory usage of queries are, of course, still
|
69
|
-
affected by the size of the transitive closure set being updated.)
|
70
|
-
|
71
|
-
== Database compatibility
|
72
|
-
|
73
|
-
dagnabit is only known to work with SQLite and PostgreSQL. Other databases may
|
74
|
-
work, but they have not been tested.
|
75
|
-
|
76
|
-
dagnabit is known to _not_ work on Oracle XE 10g databases via the ActiveRecord
|
77
|
-
oracle-enhanced adapter.
|
78
|
-
|
79
|
-
== Setup
|
80
|
-
|
81
|
-
dagnabit is distributed as a gem plugin; you can therefore install it as you
|
82
|
-
would any other RubyGem. Integration with your Rails application can be
|
83
|
-
achieved by adding dagnabit to your application's gem dependencies list.
|
84
|
-
|
85
|
-
Details for creating the link tables are discussed below.
|
86
|
-
|
87
|
-
In your link model, put
|
88
|
-
|
89
|
-
acts_as_dag_link
|
90
|
-
|
91
|
-
In your node models, put
|
92
|
-
|
93
|
-
acts_as_dag_node_linked_by (your link model name)
|
94
|
-
|
95
|
-
+acts_as_dag_link+ accepts some configuration options. These configuration
|
96
|
-
options are discussed below.
|
97
|
-
|
98
|
-
For a code example of a complete setup, see the <tt>dagnabit-test</tt> script
|
99
|
-
in +bin+.
|
100
|
-
|
101
|
-
=== Link table schemas
|
102
|
-
|
103
|
-
Link storage is accomplished with two tables having identical schemas. One
|
104
|
-
table holds explicitly specified links between nodes. The other table contains
|
105
|
-
the _transitive closure_ of all graphs, i.e. one tuple per path in the graph.
|
106
|
-
(The transitive closure table is therefore a superset of the direct link
|
107
|
-
table.)
|
108
|
-
|
109
|
-
The transitive closure table is automatically maintained by dagnabit and should
|
110
|
-
not be manually modified. The transitive closure table does not need to be
|
111
|
-
mapped to a model in your application.
|
112
|
-
|
113
|
-
The expected schema for both tables is:
|
114
|
-
|
115
|
-
t.integer :ancestor_id # or configured foreign key ID
|
116
|
-
t.integer :descendant_id # or configured foreign key ID
|
117
|
-
t.string :ancestor_type # not configurable
|
118
|
-
t.string :descendant_type # not configurable
|
119
|
-
|
120
|
-
The behavior of the plugin with a deviant schema is unspecified.
|
121
|
-
|
122
|
-
=== Configuration options for +acts_as_dag_link+
|
123
|
-
|
124
|
-
* +transitive_closure_table_name+: The table where tuples in the transitive
|
125
|
-
closure of the graph should be stored. Defaults to
|
126
|
-
<tt>#{link_table_name}_transitive_closure_tuples</tt>.
|
127
|
-
* +transitive_closure_class_name+: The transitive closure is represented with
|
128
|
-
an ActiveRecord class whose name defaults to +TransitiveClosureLink+. Set this
|
129
|
-
option to change that name.
|
130
|
-
* +descendant_id_column+: Column in the link tables for recording the ID of a
|
131
|
-
descendant. Defaults to +descendant_id+.
|
132
|
-
* +ancestor_id_column+: Column in the link tables for recording the ID of a
|
133
|
-
ancestor. Defaults to +ancestor_id+.
|
134
|
-
|
135
|
-
== Usage
|
136
|
-
|
137
|
-
The recommended usage pattern is (in pseudocode)
|
138
|
-
|
139
|
-
nodes = make_nodes
|
140
|
-
links = connect_up(nodes)
|
141
|
-
save(nodes)
|
142
|
-
save(links)
|
143
|
-
|
144
|
-
Node and edge creation is identical to creation of any ActiveRecord model. For
|
145
|
-
example, if your Node models were called +AlphaNode+ and +BetaNode+ and your
|
146
|
-
edge model was called +Link+, these would be valid expressions:
|
147
|
-
|
148
|
-
n1 = AlphaNode.new
|
149
|
-
n2 = BetaNode.new
|
150
|
-
|
151
|
-
e1 = Link.new(:ancestor => n1, :descendant => n2)
|
152
|
-
n1.save
|
153
|
-
n2.save
|
154
|
-
e1.save
|
155
|
-
|
156
|
-
=== Node interface
|
157
|
-
|
158
|
-
+acts_as_dag_node+ adds the following associations to nodes:
|
159
|
-
|
160
|
-
* +links_as_child+: Links for which the node is a child.
|
161
|
-
* +links_as_parent+: Links for which the node is a parent.
|
162
|
-
* +links_as_ancestor+: Links for which the node is an ancestor. Read-only.
|
163
|
-
* +links_as_descendant+: Links for which the node is a descendant. Read-only.
|
164
|
-
|
165
|
-
+acts_as_dag_node+ adds the following instance methods to nodes:
|
166
|
-
|
167
|
-
* +children+: All children of the node. Read-only.
|
168
|
-
* +parents+: All parents of the node. Read-only.
|
169
|
-
* +ancestors+: All ancestors of the node. Read-only.
|
170
|
-
* +descendants+: All descendants of the node. Read-only.
|
171
|
-
|
172
|
-
=== Link interface
|
173
|
-
|
174
|
-
The following class methods are available on links:
|
175
|
-
|
176
|
-
* +paths+: Retrieves all paths from one node to another.
|
177
|
-
* <tt>path?</tt>: Returns whether a node is reachable from another node.
|
178
|
-
* +build_edge+: Builds an edge from one node to another node.
|
179
|
-
* +connect+: Builds and saves an edge from one node to another. Identical to
|
180
|
-
<tt>build_edge(nodeA, nodeB).save</tt>.
|
181
|
-
|
182
|
-
== Introduction to the codebase
|
183
|
-
|
184
|
-
Here are some starting points to become acquainted with the dagnabit codebase:
|
185
|
-
|
186
|
-
[Dagnabit::Activation]
|
187
|
-
How to mix this functionality into your models.
|
188
|
-
[Dagnabit::Link::Configuration]
|
189
|
-
Link configuration options.
|
190
|
-
[Dagnabit::Link::Associations]
|
191
|
-
Associations exposed on links.
|
192
|
-
[Dagnabit::Node::Associations]
|
193
|
-
Associations exposed on nodes.
|
194
|
-
[Dagnabit::Node::Neighbors]
|
195
|
-
How to locate a node's neighbors.
|
196
|
-
[Dagnabit::Link::TransitiveClosureRecalculation]
|
197
|
-
How the transitive closure is maintained.
|
198
|
-
|
199
|
-
== Copyright
|
200
|
-
|
201
|
-
Copyright (c) 2009 David Yip. Released under the MIT License; see LICENSE for
|
202
|
-
details.
|
data/Rakefile
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'yaml'
|
3
|
-
require 'bundler'
|
4
|
-
Bundler.setup
|
5
|
-
|
6
|
-
require 'jeweler'
|
7
|
-
|
8
|
-
Jeweler::Tasks.new do |gem|
|
9
|
-
gem.name = 'dagnabit'
|
10
|
-
gem.summary = %Q{Directed acyclic graph plugin for ActiveRecord}
|
11
|
-
gem.email = 'yipdw@northwestern.edu'
|
12
|
-
gem.homepage = 'http://gitorious.org/dagnabit/dagnabit'
|
13
|
-
gem.authors = ['David Yip']
|
14
|
-
|
15
|
-
gem.add_bundler_dependencies
|
16
|
-
end
|
17
|
-
|
18
|
-
task :test => [:test_sqlite3, :test_postgresql]
|
19
|
-
|
20
|
-
require 'rake/testtask'
|
21
|
-
['sqlite3', 'postgresql'].map { |adapter| ["test_#{adapter}", "native_#{adapter}"] }.each do |task_name, adapter_name|
|
22
|
-
Rake::TestTask.new(task_name) do |test|
|
23
|
-
test.libs << 'lib' << 'test' << "test/connections/#{adapter_name}"
|
24
|
-
test.pattern = 'test/dagnabit/**/test_*.rb'
|
25
|
-
test.verbose = false
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
require 'rcov/rcovtask'
|
30
|
-
Rcov::RcovTask.new do |test|
|
31
|
-
test.libs << 'test' << 'test/connections/native_sqlite3'
|
32
|
-
test.pattern = 'test/dagnabit/**/test_*.rb'
|
33
|
-
test.verbose = true
|
34
|
-
test.rcov_opts << '--exclude gems/*,.bundle/environment.rb'
|
35
|
-
end
|
36
|
-
|
37
|
-
task :default => :test
|
38
|
-
|
39
|
-
require 'rake/rdoctask'
|
40
|
-
Rake::RDocTask.new do |rdoc|
|
41
|
-
if File.exist?('VERSION.yml')
|
42
|
-
config = YAML.load(File.read('VERSION.yml'))
|
43
|
-
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
44
|
-
else
|
45
|
-
version = ""
|
46
|
-
end
|
47
|
-
|
48
|
-
rdoc.rdoc_dir = 'rdoc'
|
49
|
-
rdoc.title = "dagnabit #{version}"
|
50
|
-
rdoc.rdoc_files.include('README*')
|
51
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
52
|
-
end
|
data/VERSION.yml
DELETED
data/dagnabit.gemspec
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{dagnabit}
|
8
|
-
s.version = "2.2.6"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["David Yip"]
|
12
|
-
s.date = %q{2010-10-01}
|
13
|
-
s.default_executable = %q{dagnabit-test}
|
14
|
-
s.email = %q{yipdw@northwestern.edu}
|
15
|
-
s.executables = ["dagnabit-test"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".autotest",
|
22
|
-
".document",
|
23
|
-
".gitignore",
|
24
|
-
"Gemfile",
|
25
|
-
"Gemfile.lock",
|
26
|
-
"History.txt",
|
27
|
-
"LICENSE",
|
28
|
-
"README.rdoc",
|
29
|
-
"Rakefile",
|
30
|
-
"VERSION.yml",
|
31
|
-
"bin/dagnabit-test",
|
32
|
-
"dagnabit.gemspec",
|
33
|
-
"init.rb",
|
34
|
-
"lib/dagnabit.rb",
|
35
|
-
"lib/dagnabit/activation.rb",
|
36
|
-
"lib/dagnabit/link/associations.rb",
|
37
|
-
"lib/dagnabit/link/class_methods.rb",
|
38
|
-
"lib/dagnabit/link/configuration.rb",
|
39
|
-
"lib/dagnabit/link/cycle_prevention.rb",
|
40
|
-
"lib/dagnabit/link/named_scopes.rb",
|
41
|
-
"lib/dagnabit/link/transitive_closure_link_model.rb",
|
42
|
-
"lib/dagnabit/link/transitive_closure_recalculation.rb",
|
43
|
-
"lib/dagnabit/link/transitive_closure_recalculation/on_create.rb",
|
44
|
-
"lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb",
|
45
|
-
"lib/dagnabit/link/transitive_closure_recalculation/on_update.rb",
|
46
|
-
"lib/dagnabit/link/transitive_closure_recalculation/utilities.rb",
|
47
|
-
"lib/dagnabit/link/validations.rb",
|
48
|
-
"lib/dagnabit/node/associations.rb",
|
49
|
-
"lib/dagnabit/node/class_methods.rb",
|
50
|
-
"lib/dagnabit/node/configuration.rb",
|
51
|
-
"lib/dagnabit/node/neighbors.rb",
|
52
|
-
"test/connections/native_postgresql/connection.rb",
|
53
|
-
"test/connections/native_sqlite3/connection.rb",
|
54
|
-
"test/dagnabit/link/test_associations.rb",
|
55
|
-
"test/dagnabit/link/test_class_methods.rb",
|
56
|
-
"test/dagnabit/link/test_configuration.rb",
|
57
|
-
"test/dagnabit/link/test_cycle_prevention.rb",
|
58
|
-
"test/dagnabit/link/test_named_scopes.rb",
|
59
|
-
"test/dagnabit/link/test_transitive_closure_link_model.rb",
|
60
|
-
"test/dagnabit/link/test_transitive_closure_recalculation.rb",
|
61
|
-
"test/dagnabit/link/test_validations.rb",
|
62
|
-
"test/dagnabit/node/test_associations.rb",
|
63
|
-
"test/dagnabit/node/test_class_methods.rb",
|
64
|
-
"test/dagnabit/node/test_configuration.rb",
|
65
|
-
"test/dagnabit/node/test_neighbors.rb",
|
66
|
-
"test/helper.rb",
|
67
|
-
"test/models/beta_node.rb",
|
68
|
-
"test/models/custom_data_link.rb",
|
69
|
-
"test/models/customized_link.rb",
|
70
|
-
"test/models/customized_link_node.rb",
|
71
|
-
"test/models/link.rb",
|
72
|
-
"test/models/node.rb",
|
73
|
-
"test/schema/schema.rb"
|
74
|
-
]
|
75
|
-
s.homepage = %q{http://gitorious.org/dagnabit/dagnabit}
|
76
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
77
|
-
s.require_paths = ["lib"]
|
78
|
-
s.rubygems_version = %q{1.3.7}
|
79
|
-
s.summary = %q{Directed acyclic graph plugin for ActiveRecord}
|
80
|
-
s.test_files = [
|
81
|
-
"test/connections/native_postgresql/connection.rb",
|
82
|
-
"test/connections/native_sqlite3/connection.rb",
|
83
|
-
"test/dagnabit/link/test_associations.rb",
|
84
|
-
"test/dagnabit/link/test_class_methods.rb",
|
85
|
-
"test/dagnabit/link/test_configuration.rb",
|
86
|
-
"test/dagnabit/link/test_cycle_prevention.rb",
|
87
|
-
"test/dagnabit/link/test_named_scopes.rb",
|
88
|
-
"test/dagnabit/link/test_transitive_closure_link_model.rb",
|
89
|
-
"test/dagnabit/link/test_transitive_closure_recalculation.rb",
|
90
|
-
"test/dagnabit/link/test_validations.rb",
|
91
|
-
"test/dagnabit/node/test_associations.rb",
|
92
|
-
"test/dagnabit/node/test_class_methods.rb",
|
93
|
-
"test/dagnabit/node/test_configuration.rb",
|
94
|
-
"test/dagnabit/node/test_neighbors.rb",
|
95
|
-
"test/helper.rb",
|
96
|
-
"test/models/beta_node.rb",
|
97
|
-
"test/models/custom_data_link.rb",
|
98
|
-
"test/models/customized_link.rb",
|
99
|
-
"test/models/customized_link_node.rb",
|
100
|
-
"test/models/link.rb",
|
101
|
-
"test/models/node.rb",
|
102
|
-
"test/schema/schema.rb"
|
103
|
-
]
|
104
|
-
|
105
|
-
if s.respond_to? :specification_version then
|
106
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
107
|
-
s.specification_version = 3
|
108
|
-
|
109
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
110
|
-
s.add_runtime_dependency(%q<activerecord>, ["~> 2.3.5"])
|
111
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
112
|
-
s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
|
113
|
-
s.add_development_dependency(%q<pg>, [">= 0"])
|
114
|
-
s.add_development_dependency(%q<shoulda>, ["= 2.10.2"])
|
115
|
-
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
116
|
-
s.add_development_dependency(%q<redgreen>, [">= 0"])
|
117
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
118
|
-
s.add_development_dependency(%q<ZenTest>, [">= 0"])
|
119
|
-
else
|
120
|
-
s.add_dependency(%q<activerecord>, ["~> 2.3.5"])
|
121
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
122
|
-
s.add_dependency(%q<mocha>, ["= 0.9.8"])
|
123
|
-
s.add_dependency(%q<pg>, [">= 0"])
|
124
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.2"])
|
125
|
-
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
126
|
-
s.add_dependency(%q<redgreen>, [">= 0"])
|
127
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
128
|
-
s.add_dependency(%q<ZenTest>, [">= 0"])
|
129
|
-
end
|
130
|
-
else
|
131
|
-
s.add_dependency(%q<activerecord>, ["~> 2.3.5"])
|
132
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
133
|
-
s.add_dependency(%q<mocha>, ["= 0.9.8"])
|
134
|
-
s.add_dependency(%q<pg>, [">= 0"])
|
135
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.2"])
|
136
|
-
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
137
|
-
s.add_dependency(%q<redgreen>, [">= 0"])
|
138
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
139
|
-
s.add_dependency(%q<ZenTest>, [">= 0"])
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|