- Dagnabit <= 3.1.1 is not compatible with ActiveRecord 3.1, so tweaked its gemspec to reflect this. To use dagnabit with ActiveRecord >= 3.1, use the code in the activerecord-edge branch, which will likely become dagnabit 4.0.0.
- Added Dagnabit::Graph#sinks, a method to find sinks in a directed graph.
- Declare compatibility with ActiveRecord 3.
- Eagerly load parent and child associations for edges loaded by
Dagnabit::Graph#load_descendants!
. - Loosened up RSpec dependency.
- Completely new data model: no more post-insert processing, no more transitive closure table. Downside: only PostgreSQL is presently supported.
- Fixed version requirements.
- Ported development code to Bundler 1.0.
- Removed usage of
Object#returning
, which was deprecated in ActiveSupport 2.3.9.
- Ensure that ActiveRecord is loaded before dagnabit's extensions are loaded. This fixes a problem that would occasionally occur when using dagnabit in Bundler.
- It was not possible to delete links having custom data attributes in dagnabit versions <= 2.3.2. This has been fixed.
- Slightly smarter transitive closure maintenance: if a link was saved but neither its ancestor nor descendant changed, the transitive closure will not be recalculated.
- Removed usage of deprecated
require 'activesupport'
.
- Added NUBIC provenance.
- Commonized models used in dagnabit's tests.
- Switched to named scopes to implement Link#linking and TransitiveClosureLink#linking.
-
Fixed overzealous on-destroy transitive closure maintenance in situations like these:
n1 -> n2 -> n3 |__________|
Previously, deleting the edges (n1, n2) and (n2, n3) would also delete the edge (n1, n3).
-
Link models now validate their ancestor and descendant. This means that Link#connect will fail if a link cannot be made due to node validation failures.
Unfortunately, this also means you can no longer write (say)
node1.links_as_parent.build(:descendant => node2)
ornode2.links_as_child.build(:ancestor => node1)
.See commit
61d6e3841b63fdcaad7fcecd05b24f4b9f217ba2
for more details.