Skip to content

Instantly share code, notes, and snippets.

@openbrian
Last active October 20, 2019 16:39
Show Gist options
  • Save openbrian/f89038bbc1d5218c7d1bf83a97c170e2 to your computer and use it in GitHub Desktop.
Save openbrian/f89038bbc1d5218c7d1bf83a97c170e2 to your computer and use it in GitHub Desktop.
rake database dependency

task dependency diagram for active-record-5.2.3/lib/active_record/railties/database.rake.

All dependencies on load_config, check_protected_environments, and environment are omitted because they are numerous and distort the diagram.

black lines are dependencies gray lines are invocations, where these are obvious (like calling a .invoke method).

digraph {
"environment";
subgraph cluster_db {
label = "db";
"db:environment:set";
"db:check_protected_environments";
"db:load_config";
subgraph cluster_create {
label = "create";
"db:create:all";
}
"db:create";
subgraph cluster_drop {
label = "drop";
"db:drop:all";
}
"db:drop" -> "db:drop:_unsafe" [label="invoke", color=gray];
"db:drop";
"db:drop_unsafe";
subgraph cluster_purge {
label = "purge";
"db:purge:all";
}
"db:purge";
"db:migrate";
"db:migrate" -> "db:_dump" [label="invoke", color=gray];
"db:_dump";
"db:_dump" -> "db:schema:dump" [label="invoke", color=gray];
"db:_dump" -> "db:structure:dump" [label="invoke", color=gray];
subgraph cluster_migrate {
label = "migrate";
"db:migrate:redo";
"db:migrate:reset";
"db:migrate:up";
"db:migrate:down";
"db:migrate:status";
"db:migrate:redo" -> "db:migrate:down" [label="invoke", color=gray];
"db:migrate:redo" -> "db:migrate:up" [label="invoke", color=gray];
}
"db:migrate:up" -> "db:_dump" [label="invoke", color=gray];
"db:migrate:down" -> "db:_dump" [label="invoke", color=gray];
"db:migrate:reset" -> "db:drop";
"db:migrate:reset" -> "db:create";
"db:migrate:reset" -> "db:migrate";
"db:rollback";
"db:rollback" -> "db:_dump" [label="invoke", color=gray];
"db:forward";
"db:forward" -> "db:_dump" [label="invoke", color=gray];
"db:reset" -> "db:drop";
"db:reset" -> "db:setup";
"db:charset";
"db:collation";
"db:version";
"db:abort_if_pending_migrations";
"db:setup" -> "db:schema:load_if_ruby";
"db:setup" -> "db:structure:load_if_sql";
"db:setup" -> seed;
"db:seed";
"db:seed" -> "db:abort_if_pending_migrations" [label="invoke", color=gray];
subgraph cluster_fixtures {
label = "fixtures";
"db:fixtures:load";
"db:fixtures:identify";
}
subgraph cluster_schema {
label = "schema";
"db:schema:dump";
"db:schema:load";
"db:schema:load_if_ruby";
subgraph cluster_cache {
label = "cache";
"db:schema:cache:dump";
"db:schema:cache:clear";
}
}
subgraph cluster_structure {
label = "structure";
"db:structure:dump";
"db:structure:load";
"db:structure:load_if_sql";
}
"db:structure:load";
subgraph cluster_test {
label = "test";
"db:test:load";
"db:test:load_schema";
"db:test:load_structure";
"db:test:purge";
"db:test:prepare";
}
"db:test:load" -> "db:test:purge";
"db:test:load" -> "db:test:load_schema" [label="invoke", color=gray];
"db:test:load" -> "db:test:load_structure" [label="invoke", color=gray];
"db:test:load_schema" -> "db:test:purge";
"db:test:load_structure" -> "db:test:purge";
"db:test:purge";
"db:test:prepare" -> "db:test:load" [label="invoke", color=gray];
}
// "db:load_config" -> "environment";
// "db:schema:load_if_ruby" -> "environment";
"db:schema:load_if_ruby" -> "db:schema:load" [label="invoke", color=gray];
// "db:structure:load_if_sql" -> "environment";
"db:structure:load_if_sql" -> "db:structure:load" [label="invoke", color=gray];
}
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="3230pt" height="877pt"
viewBox="0.00 0.00 3229.90 877.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 873)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-873 3225.895,-873 3225.895,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_db</title>
<polygon fill="none" stroke="#000000" points="121.895,-8 121.895,-861 3213.895,-861 3213.895,-8 121.895,-8"/>
<text text-anchor="middle" x="1667.895" y="-845.8" font-family="Times,serif" font-size="14.00" fill="#000000">db</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_create</title>
<polygon fill="none" stroke="#000000" points="3081.895,-755 3081.895,-830 3205.895,-830 3205.895,-755 3081.895,-755"/>
<text text-anchor="middle" x="3143.895" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">create</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_drop</title>
<polygon fill="none" stroke="#000000" points="2959.895,-755 2959.895,-830 3073.895,-830 3073.895,-755 2959.895,-755"/>
<text text-anchor="middle" x="3016.895" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">drop</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_purge</title>
<polygon fill="none" stroke="#000000" points="2829.895,-755 2829.895,-830 2951.895,-830 2951.895,-755 2829.895,-755"/>
<text text-anchor="middle" x="2890.895" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">purge</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_migrate</title>
<polygon fill="none" stroke="#000000" points="2354.895,-519 2354.895,-830 2821.895,-830 2821.895,-519 2354.895,-519"/>
<text text-anchor="middle" x="2588.395" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">migrate</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_fixtures</title>
<polygon fill="none" stroke="#000000" points="1920.895,-755 1920.895,-830 2244.895,-830 2244.895,-755 1920.895,-755"/>
<text text-anchor="middle" x="2082.895" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">fixtures</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_schema</title>
<polygon fill="none" stroke="#000000" points="2421.895,-16 2421.895,-323 3205.895,-323 3205.895,-16 2421.895,-16"/>
<text text-anchor="middle" x="2813.895" y="-307.8" font-family="Times,serif" font-size="14.00" fill="#000000">schema</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_cache</title>
<polygon fill="none" stroke="#000000" points="2793.895,-217 2793.895,-292 3197.895,-292 3197.895,-217 2793.895,-217"/>
<text text-anchor="middle" x="2995.895" y="-276.8" font-family="Times,serif" font-size="14.00" fill="#000000">cache</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_structure</title>
<polygon fill="none" stroke="#000000" points="2039.895,-16 2039.895,-292 2413.895,-292 2413.895,-16 2039.895,-16"/>
<text text-anchor="middle" x="2226.895" y="-276.8" font-family="Times,serif" font-size="14.00" fill="#000000">structure</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_test</title>
<polygon fill="none" stroke="#000000" points="1417.895,-16 1417.895,-830 1811.895,-830 1811.895,-16 1417.895,-16"/>
<text text-anchor="middle" x="1614.895" y="-814.8" font-family="Times,serif" font-size="14.00" fill="#000000">test</text>
</g>
<!-- environment -->
<g id="node1" class="node">
<title>environment</title>
<ellipse fill="none" stroke="#000000" cx="55.895" cy="-781" rx="55.7903" ry="18"/>
<text text-anchor="middle" x="55.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">environment</text>
</g>
<!-- db:environment:set -->
<g id="node2" class="node">
<title>db:environment:set</title>
<ellipse fill="none" stroke="#000000" cx="1330.895" cy="-781" rx="79.0865" ry="18"/>
<text text-anchor="middle" x="1330.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:environment:set</text>
</g>
<!-- db:check_protected_environments -->
<g id="node3" class="node">
<title>db:check_protected_environments</title>
<ellipse fill="none" stroke="#000000" cx="1101.895" cy="-781" rx="131.8766" ry="18"/>
<text text-anchor="middle" x="1101.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:check_protected_environments</text>
</g>
<!-- db:load_config -->
<g id="node4" class="node">
<title>db:load_config</title>
<ellipse fill="none" stroke="#000000" cx="887.895" cy="-781" rx="63.8893" ry="18"/>
<text text-anchor="middle" x="887.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:load_config</text>
</g>
<!-- db:create:all -->
<g id="node5" class="node">
<title>db:create:all</title>
<ellipse fill="none" stroke="#000000" cx="3143.895" cy="-781" rx="53.8905" ry="18"/>
<text text-anchor="middle" x="3143.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:create:all</text>
</g>
<!-- db:create -->
<g id="node6" class="node">
<title>db:create</title>
<ellipse fill="none" stroke="#000000" cx="1878.895" cy="-656" rx="42.7926" ry="18"/>
<text text-anchor="middle" x="1878.895" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:create</text>
</g>
<!-- db:drop:all -->
<g id="node7" class="node">
<title>db:drop:all</title>
<ellipse fill="none" stroke="#000000" cx="3016.895" cy="-781" rx="49.2915" ry="18"/>
<text text-anchor="middle" x="3016.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:drop:all</text>
</g>
<!-- db:drop -->
<g id="node8" class="node">
<title>db:drop</title>
<ellipse fill="none" stroke="#000000" cx="1940.895" cy="-420" rx="38.1938" ry="18"/>
<text text-anchor="middle" x="1940.895" y="-416.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:drop</text>
</g>
<!-- db:drop:_unsafe -->
<g id="node9" class="node">
<title>db:drop:_unsafe</title>
<ellipse fill="none" stroke="#000000" cx="1889.895" cy="-243" rx="67.6881" ry="18"/>
<text text-anchor="middle" x="1889.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:drop:_unsafe</text>
</g>
<!-- db:drop&#45;&gt;db:drop:_unsafe -->
<g id="edge1" class="edge">
<title>db:drop&#45;&gt;db:drop:_unsafe</title>
<path fill="none" stroke="#c0c0c0" d="M1935.7242,-402.0542C1926.8275,-371.1775 1908.5623,-307.7864 1897.9742,-271.0396"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="1901.2115,-269.6333 1895.0795,-260.9933 1894.4851,-271.5714 1901.2115,-269.6333"/>
<text text-anchor="middle" x="1943.395" y="-353.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:drop_unsafe -->
<g id="node10" class="node">
<title>db:drop_unsafe</title>
<ellipse fill="none" stroke="#000000" cx="740.895" cy="-781" rx="65.7887" ry="18"/>
<text text-anchor="middle" x="740.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:drop_unsafe</text>
</g>
<!-- db:purge:all -->
<g id="node11" class="node">
<title>db:purge:all</title>
<ellipse fill="none" stroke="#000000" cx="2890.895" cy="-781" rx="53.0913" ry="18"/>
<text text-anchor="middle" x="2890.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:purge:all</text>
</g>
<!-- db:purge -->
<g id="node12" class="node">
<title>db:purge</title>
<ellipse fill="none" stroke="#000000" cx="614.895" cy="-781" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="614.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:purge</text>
</g>
<!-- db:migrate -->
<g id="node13" class="node">
<title>db:migrate</title>
<ellipse fill="none" stroke="#000000" cx="2244.895" cy="-656" rx="49.2915" ry="18"/>
<text text-anchor="middle" x="2244.895" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate</text>
</g>
<!-- db:_dump -->
<g id="node14" class="node">
<title>db:_dump</title>
<ellipse fill="none" stroke="#000000" cx="2330.895" cy="-420" rx="46.5926" ry="18"/>
<text text-anchor="middle" x="2330.895" y="-416.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:_dump</text>
</g>
<!-- db:migrate&#45;&gt;db:_dump -->
<g id="edge2" class="edge">
<title>db:migrate&#45;&gt;db:_dump</title>
<path fill="none" stroke="#c0c0c0" d="M2218.0845,-640.8142C2204.9388,-631.2117 2191.895,-617.4204 2191.895,-600.5 2191.895,-600.5 2191.895,-600.5 2191.895,-482.5 2191.895,-462.2728 2241.4758,-443.9131 2281.4141,-432.4052"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2282.3786,-435.7698 2291.0632,-429.7011 2280.4897,-429.0294 2282.3786,-435.7698"/>
<text text-anchor="middle" x="2210.395" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:schema:dump -->
<g id="node15" class="node">
<title>db:schema:dump</title>
<ellipse fill="none" stroke="#000000" cx="2712.895" cy="-243" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="2712.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:schema:dump</text>
</g>
<!-- db:_dump&#45;&gt;db:schema:dump -->
<g id="edge3" class="edge">
<title>db:_dump&#45;&gt;db:schema:dump</title>
<path fill="none" stroke="#c0c0c0" d="M2373.846,-412.844C2434.952,-401.2462 2548.8785,-374.2906 2632.895,-323 2656.2347,-308.7516 2677.8485,-286.3409 2692.7111,-268.8595"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2695.7601,-270.6652 2699.4429,-260.7311 2690.3689,-266.2003 2695.7601,-270.6652"/>
<text text-anchor="middle" x="2597.395" y="-353.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:structure:dump -->
<g id="node16" class="node">
<title>db:structure:dump</title>
<ellipse fill="none" stroke="#000000" cx="2330.895" cy="-243" rx="75.2868" ry="18"/>
<text text-anchor="middle" x="2330.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:structure:dump</text>
</g>
<!-- db:_dump&#45;&gt;db:structure:dump -->
<g id="edge4" class="edge">
<title>db:_dump&#45;&gt;db:structure:dump</title>
<path fill="none" stroke="#c0c0c0" d="M2330.895,-401.7246C2330.895,-370.774 2330.895,-307.8423 2330.895,-271.202"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2334.3951,-271.176 2330.895,-261.176 2327.3951,-271.1761 2334.3951,-271.176"/>
<text text-anchor="middle" x="2349.395" y="-353.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:migrate:redo -->
<g id="node17" class="node">
<title>db:migrate:redo</title>
<ellipse fill="none" stroke="#000000" cx="2745.895" cy="-781" rx="67.6881" ry="18"/>
<text text-anchor="middle" x="2745.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate:redo</text>
</g>
<!-- db:migrate:up -->
<g id="node19" class="node">
<title>db:migrate:up</title>
<ellipse fill="none" stroke="#000000" cx="2508.895" cy="-545" rx="60.3893" ry="18"/>
<text text-anchor="middle" x="2508.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate:up</text>
</g>
<!-- db:migrate:redo&#45;&gt;db:migrate:up -->
<g id="edge6" class="edge">
<title>db:migrate:redo&#45;&gt;db:migrate:up</title>
<path fill="none" stroke="#c0c0c0" d="M2704.6141,-766.6061C2655.1607,-749.213 2578.895,-721.8472 2578.895,-718.5 2578.895,-718.5 2578.895,-718.5 2578.895,-600.5 2578.895,-591.553 2579.3665,-588.079 2573.895,-581 2568.9029,-574.5411 2562.4071,-569.0757 2555.4559,-564.5072"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2556.874,-561.2792 2546.4866,-559.1929 2553.3058,-567.3015 2556.874,-561.2792"/>
<text text-anchor="middle" x="2597.395" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:migrate:down -->
<g id="node20" class="node">
<title>db:migrate:down</title>
<ellipse fill="none" stroke="#000000" cx="2700.895" cy="-545" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="2700.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate:down</text>
</g>
<!-- db:migrate:redo&#45;&gt;db:migrate:down -->
<g id="edge5" class="edge">
<title>db:migrate:redo&#45;&gt;db:migrate:down</title>
<path fill="none" stroke="#c0c0c0" d="M2735.4718,-763.0411C2729.3863,-750.8808 2722.895,-734.2245 2722.895,-718.5 2722.895,-718.5 2722.895,-718.5 2722.895,-600.5 2722.895,-590.7571 2719.9289,-580.6862 2716.1748,-571.8419"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2719.3368,-570.3411 2711.895,-562.7998 2713.0097,-573.3358 2719.3368,-570.3411"/>
<text text-anchor="middle" x="2741.395" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:migrate:reset -->
<g id="node18" class="node">
<title>db:migrate:reset</title>
<ellipse fill="none" stroke="#000000" cx="2591.895" cy="-781" rx="68.4888" ry="18"/>
<text text-anchor="middle" x="2591.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate:reset</text>
</g>
<!-- db:migrate:reset&#45;&gt;db:create -->
<g id="edge10" class="edge">
<title>db:migrate:reset&#45;&gt;db:create</title>
<path fill="none" stroke="#000000" d="M2554.403,-765.9358C2541.7473,-761.5462 2527.4018,-757.3119 2513.895,-755 2482.2395,-749.5816 1963.9361,-760.6567 1935.895,-745 1912.2453,-731.7952 1896.917,-704.2251 1888.177,-683.248"/>
<polygon fill="#000000" stroke="#000000" points="1891.4097,-681.9039 1884.5134,-673.8608 1884.8887,-684.449 1891.4097,-681.9039"/>
</g>
<!-- db:migrate:reset&#45;&gt;db:drop -->
<g id="edge9" class="edge">
<title>db:migrate:reset&#45;&gt;db:drop</title>
<path fill="none" stroke="#000000" d="M2553.5426,-766.0289C2541.0791,-761.7574 2527.0645,-757.5694 2513.895,-755 2482.5875,-748.8918 1940.895,-750.3979 1940.895,-718.5 1940.895,-718.5 1940.895,-718.5 1940.895,-482.5 1940.895,-471.2695 1940.895,-458.904 1940.895,-448.1568"/>
<polygon fill="#000000" stroke="#000000" points="1944.3951,-448.0511 1940.895,-438.0511 1937.3951,-448.0511 1944.3951,-448.0511"/>
</g>
<!-- db:migrate:reset&#45;&gt;db:migrate -->
<g id="edge11" class="edge">
<title>db:migrate:reset&#45;&gt;db:migrate</title>
<path fill="none" stroke="#000000" d="M2551.4106,-766.4163C2486.0627,-742.876 2357.7979,-696.6711 2289.7566,-672.1605"/>
<polygon fill="#000000" stroke="#000000" points="2290.7637,-668.8032 2280.1693,-668.7069 2288.3913,-675.3889 2290.7637,-668.8032"/>
</g>
<!-- db:migrate:up&#45;&gt;db:_dump -->
<g id="edge7" class="edge">
<title>db:migrate:up&#45;&gt;db:_dump</title>
<path fill="none" stroke="#c0c0c0" d="M2485.258,-528.401C2453.5241,-506.1159 2397.0811,-466.479 2361.9486,-441.8073"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2363.6989,-438.7596 2353.5038,-435.8769 2359.676,-444.4882 2363.6989,-438.7596"/>
<text text-anchor="middle" x="2446.395" y="-478.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:migrate:down&#45;&gt;db:_dump -->
<g id="edge8" class="edge">
<title>db:migrate:down&#45;&gt;db:_dump</title>
<path fill="none" stroke="#c0c0c0" d="M2658.0899,-530.5388C2587.598,-506.724 2447.7471,-459.4771 2375.8639,-435.1922"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2376.7805,-431.8076 2366.1863,-431.9227 2374.54,-438.4393 2376.7805,-431.8076"/>
<text text-anchor="middle" x="2552.395" y="-478.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:migrate:status -->
<g id="node21" class="node">
<title>db:migrate:status</title>
<ellipse fill="none" stroke="#000000" cx="2433.895" cy="-781" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="2433.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:migrate:status</text>
</g>
<!-- db:rollback -->
<g id="node22" class="node">
<title>db:rollback</title>
<ellipse fill="none" stroke="#000000" cx="2104.895" cy="-545" rx="50.8918" ry="18"/>
<text text-anchor="middle" x="2104.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:rollback</text>
</g>
<!-- db:rollback&#45;&gt;db:_dump -->
<g id="edge12" class="edge">
<title>db:rollback&#45;&gt;db:_dump</title>
<path fill="none" stroke="#c0c0c0" d="M2113.0894,-527.0351C2120.8178,-511.6682 2133.6329,-489.7575 2149.895,-475 2163.5845,-462.5772 2169.5921,-462.5067 2186.895,-456 2216.5404,-444.8519 2250.9119,-436.1103 2278.6383,-430.0341"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2279.4856,-433.4321 2288.5316,-427.9166 2278.0205,-426.5872 2279.4856,-433.4321"/>
<text text-anchor="middle" x="2168.395" y="-478.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:forward -->
<g id="node23" class="node">
<title>db:forward</title>
<ellipse fill="none" stroke="#000000" cx="2296.895" cy="-545" rx="50.0912" ry="18"/>
<text text-anchor="middle" x="2296.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:forward</text>
</g>
<!-- db:forward&#45;&gt;db:_dump -->
<g id="edge13" class="edge">
<title>db:forward&#45;&gt;db:_dump</title>
<path fill="none" stroke="#c0c0c0" d="M2301.8389,-526.8239C2307.4541,-506.1798 2316.6849,-472.2431 2323.2342,-448.1648"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2326.6978,-448.7661 2325.9452,-438.198 2319.9432,-446.9288 2326.6978,-448.7661"/>
<text text-anchor="middle" x="2333.395" y="-478.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:reset -->
<g id="node24" class="node">
<title>db:reset</title>
<ellipse fill="none" stroke="#000000" cx="1997.895" cy="-545" rx="38.1938" ry="18"/>
<text text-anchor="middle" x="1997.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:reset</text>
</g>
<!-- db:reset&#45;&gt;db:drop -->
<g id="edge14" class="edge">
<title>db:reset&#45;&gt;db:drop</title>
<path fill="none" stroke="#000000" d="M1989.8492,-527.3557C1980.3552,-506.5355 1964.4607,-471.6792 1953.3672,-447.3511"/>
<polygon fill="#000000" stroke="#000000" points="1956.4181,-445.6058 1949.0845,-437.9593 1950.049,-448.5102 1956.4181,-445.6058"/>
</g>
<!-- db:setup -->
<g id="node25" class="node">
<title>db:setup</title>
<ellipse fill="none" stroke="#000000" cx="2067.895" cy="-420" rx="40.0939" ry="18"/>
<text text-anchor="middle" x="2067.895" y="-416.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:setup</text>
</g>
<!-- db:reset&#45;&gt;db:setup -->
<g id="edge15" class="edge">
<title>db:reset&#45;&gt;db:setup</title>
<path fill="none" stroke="#000000" d="M2007.7759,-527.3557C2019.6056,-506.2311 2039.5272,-470.6569 2053.1722,-446.2908"/>
<polygon fill="#000000" stroke="#000000" points="2056.2322,-447.9898 2058.0645,-437.5546 2050.1246,-444.5695 2056.2322,-447.9898"/>
</g>
<!-- db:schema:load_if_ruby -->
<g id="node30" class="node">
<title>db:schema:load_if_ruby</title>
<ellipse fill="none" stroke="#000000" cx="2526.895" cy="-243" rx="96.6831" ry="18"/>
<text text-anchor="middle" x="2526.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:schema:load_if_ruby</text>
</g>
<!-- db:setup&#45;&gt;db:schema:load_if_ruby -->
<g id="edge16" class="edge">
<title>db:setup&#45;&gt;db:schema:load_if_ruby</title>
<path fill="none" stroke="#000000" d="M2102.615,-410.7408C2188.1911,-387.8704 2403.376,-330.0449 2417.895,-323 2448.0981,-308.3449 2478.5734,-285.0965 2499.5905,-267.4299"/>
<polygon fill="#000000" stroke="#000000" points="2502.1099,-269.8808 2507.4374,-260.7228 2497.5617,-264.5597 2502.1099,-269.8808"/>
</g>
<!-- db:structure:load_if_sql -->
<g id="node31" class="node">
<title>db:structure:load_if_sql</title>
<ellipse fill="none" stroke="#000000" cx="2142.895" cy="-243" rx="94.7833" ry="18"/>
<text text-anchor="middle" x="2142.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:structure:load_if_sql</text>
</g>
<!-- db:setup&#45;&gt;db:structure:load_if_sql -->
<g id="edge17" class="edge">
<title>db:setup&#45;&gt;db:structure:load_if_sql</title>
<path fill="none" stroke="#000000" d="M2075.4992,-402.0542C2088.6387,-371.045 2115.674,-307.2416 2131.2137,-270.5679"/>
<polygon fill="#000000" stroke="#000000" points="2134.5919,-271.5663 2135.2708,-260.9933 2128.1466,-268.8352 2134.5919,-271.5663"/>
</g>
<!-- seed -->
<g id="node32" class="node">
<title>seed</title>
<ellipse fill="none" stroke="#000000" cx="2002.895" cy="-243" rx="27" ry="18"/>
<text text-anchor="middle" x="2002.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">seed</text>
</g>
<!-- db:setup&#45;&gt;seed -->
<g id="edge18" class="edge">
<title>db:setup&#45;&gt;seed</title>
<path fill="none" stroke="#000000" d="M2061.3048,-402.0542C2049.8877,-370.9646 2026.3651,-306.9108 2012.9144,-270.2834"/>
<polygon fill="#000000" stroke="#000000" points="2016.1389,-268.9106 2009.4061,-260.7301 2009.5679,-271.3237 2016.1389,-268.9106"/>
</g>
<!-- db:charset -->
<g id="node26" class="node">
<title>db:charset</title>
<ellipse fill="none" stroke="#000000" cx="507.895" cy="-781" rx="46.5926" ry="18"/>
<text text-anchor="middle" x="507.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:charset</text>
</g>
<!-- db:collation -->
<g id="node27" class="node">
<title>db:collation</title>
<ellipse fill="none" stroke="#000000" cx="390.895" cy="-781" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="390.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:collation</text>
</g>
<!-- db:version -->
<g id="node28" class="node">
<title>db:version</title>
<ellipse fill="none" stroke="#000000" cx="271.895" cy="-781" rx="48.1917" ry="18"/>
<text text-anchor="middle" x="271.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:version</text>
</g>
<!-- db:abort_if_pending_migrations -->
<g id="node29" class="node">
<title>db:abort_if_pending_migrations</title>
<ellipse fill="none" stroke="#000000" cx="254.895" cy="-656" rx="124.5782" ry="18"/>
<text text-anchor="middle" x="254.895" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:abort_if_pending_migrations</text>
</g>
<!-- db:schema:load -->
<g id="node36" class="node">
<title>db:schema:load</title>
<ellipse fill="none" stroke="#000000" cx="2526.895" cy="-42" rx="66.0889" ry="18"/>
<text text-anchor="middle" x="2526.895" y="-38.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:schema:load</text>
</g>
<!-- db:schema:load_if_ruby&#45;&gt;db:schema:load -->
<g id="edge26" class="edge">
<title>db:schema:load_if_ruby&#45;&gt;db:schema:load</title>
<path fill="none" stroke="#c0c0c0" d="M2526.895,-224.5C2526.895,-213.7083 2526.895,-199.8333 2526.895,-187.5 2526.895,-187.5 2526.895,-187.5 2526.895,-97.5 2526.895,-88.7318 2526.895,-79.1843 2526.895,-70.5196"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2530.3951,-70.5 2526.895,-60.5 2523.3951,-70.5 2530.3951,-70.5"/>
<text text-anchor="middle" x="2545.395" y="-138.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:structure:load -->
<g id="node39" class="node">
<title>db:structure:load</title>
<ellipse fill="none" stroke="#000000" cx="2142.895" cy="-42" rx="70.3881" ry="18"/>
<text text-anchor="middle" x="2142.895" y="-38.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:structure:load</text>
</g>
<!-- db:structure:load_if_sql&#45;&gt;db:structure:load -->
<g id="edge27" class="edge">
<title>db:structure:load_if_sql&#45;&gt;db:structure:load</title>
<path fill="none" stroke="#c0c0c0" d="M2142.895,-224.5C2142.895,-213.7083 2142.895,-199.8333 2142.895,-187.5 2142.895,-187.5 2142.895,-187.5 2142.895,-97.5 2142.895,-88.7318 2142.895,-79.1843 2142.895,-70.5196"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="2146.3951,-70.5 2142.895,-60.5 2139.3951,-70.5 2146.3951,-70.5"/>
<text text-anchor="middle" x="2161.395" y="-138.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:seed -->
<g id="node33" class="node">
<title>db:seed</title>
<ellipse fill="none" stroke="#000000" cx="167.895" cy="-781" rx="37.8943" ry="18"/>
<text text-anchor="middle" x="167.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:seed</text>
</g>
<!-- db:seed&#45;&gt;db:abort_if_pending_migrations -->
<g id="edge19" class="edge">
<title>db:seed&#45;&gt;db:abort_if_pending_migrations</title>
<path fill="none" stroke="#c0c0c0" d="M179.8096,-763.8814C194.3991,-742.9195 219.2729,-707.1812 236.367,-682.6207"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="239.4395,-684.3331 242.2794,-674.126 233.6941,-680.3343 239.4395,-684.3331"/>
<text text-anchor="middle" x="233.395" y="-714.8" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:fixtures:load -->
<g id="node34" class="node">
<title>db:fixtures:load</title>
<ellipse fill="none" stroke="#000000" cx="2170.895" cy="-781" rx="66.0889" ry="18"/>
<text text-anchor="middle" x="2170.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:fixtures:load</text>
</g>
<!-- db:fixtures:identify -->
<g id="node35" class="node">
<title>db:fixtures:identify</title>
<ellipse fill="none" stroke="#000000" cx="2007.895" cy="-781" rx="78.7863" ry="18"/>
<text text-anchor="middle" x="2007.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:fixtures:identify</text>
</g>
<!-- db:schema:cache:dump -->
<g id="node37" class="node">
<title>db:schema:cache:dump</title>
<ellipse fill="none" stroke="#000000" cx="3095.895" cy="-243" rx="94.4839" ry="18"/>
<text text-anchor="middle" x="3095.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:schema:cache:dump</text>
</g>
<!-- db:schema:cache:clear -->
<g id="node38" class="node">
<title>db:schema:cache:clear</title>
<ellipse fill="none" stroke="#000000" cx="2892.895" cy="-243" rx="90.9839" ry="18"/>
<text text-anchor="middle" x="2892.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:schema:cache:clear</text>
</g>
<!-- db:test:load -->
<g id="node40" class="node">
<title>db:test:load</title>
<ellipse fill="none" stroke="#000000" cx="1618.895" cy="-545" rx="51.9908" ry="18"/>
<text text-anchor="middle" x="1618.895" y="-541.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:test:load</text>
</g>
<!-- db:test:load_schema -->
<g id="node41" class="node">
<title>db:test:load_schema</title>
<ellipse fill="none" stroke="#000000" cx="1720.895" cy="-243" rx="83.3857" ry="18"/>
<text text-anchor="middle" x="1720.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:test:load_schema</text>
</g>
<!-- db:test:load&#45;&gt;db:test:load_schema -->
<g id="edge21" class="edge">
<title>db:test:load&#45;&gt;db:test:load_schema</title>
<path fill="none" stroke="#c0c0c0" d="M1650.971,-530.7022C1668.99,-520.2672 1687.895,-504.1582 1687.895,-482.5 1687.895,-482.5 1687.895,-482.5 1687.895,-357.5 1687.895,-326.8646 1698.9374,-293.3583 1708.247,-270.5537"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="1711.5415,-271.7495 1712.2247,-261.1767 1705.0974,-269.0158 1711.5415,-271.7495"/>
<text text-anchor="middle" x="1706.395" y="-416.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:test:load_structure -->
<g id="node42" class="node">
<title>db:test:load_structure</title>
<ellipse fill="none" stroke="#000000" cx="1512.895" cy="-243" rx="87.1846" ry="18"/>
<text text-anchor="middle" x="1512.895" y="-239.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:test:load_structure</text>
</g>
<!-- db:test:load&#45;&gt;db:test:load_structure -->
<g id="edge22" class="edge">
<title>db:test:load&#45;&gt;db:test:load_structure</title>
<path fill="none" stroke="#c0c0c0" d="M1581.714,-532.3818C1560.4204,-522.5482 1537.895,-506.4788 1537.895,-482.5 1537.895,-482.5 1537.895,-482.5 1537.895,-357.5 1537.895,-327.3279 1529.5067,-293.6917 1522.4479,-270.7283"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="1525.7106,-269.4398 1519.3332,-260.9794 1519.0427,-271.5702 1525.7106,-269.4398"/>
<text text-anchor="middle" x="1556.395" y="-416.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
<!-- db:test:purge -->
<g id="node43" class="node">
<title>db:test:purge</title>
<ellipse fill="none" stroke="#000000" cx="1618.895" cy="-42" rx="56.59" ry="18"/>
<text text-anchor="middle" x="1618.895" y="-38.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:test:purge</text>
</g>
<!-- db:test:load&#45;&gt;db:test:purge -->
<g id="edge20" class="edge">
<title>db:test:load&#45;&gt;db:test:purge</title>
<path fill="none" stroke="#000000" d="M1618.895,-526.9489C1618.895,-514.4659 1618.895,-497.474 1618.895,-482.5 1618.895,-482.5 1618.895,-482.5 1618.895,-97.5 1618.895,-88.7318 1618.895,-79.1843 1618.895,-70.5196"/>
<polygon fill="#000000" stroke="#000000" points="1622.3951,-70.5 1618.895,-60.5 1615.3951,-70.5 1622.3951,-70.5"/>
</g>
<!-- db:test:load_schema&#45;&gt;db:test:purge -->
<g id="edge23" class="edge">
<title>db:test:load_schema&#45;&gt;db:test:purge</title>
<path fill="none" stroke="#000000" d="M1698.9547,-225.3132C1689.2066,-215.4047 1679.895,-202.115 1679.895,-187.5 1679.895,-187.5 1679.895,-187.5 1679.895,-97.5 1679.895,-83.2137 1670.6279,-71.6325 1659.3176,-62.8181"/>
<polygon fill="#000000" stroke="#000000" points="1661.0276,-59.7434 1650.8243,-56.8897 1657.021,-65.4834 1661.0276,-59.7434"/>
</g>
<!-- db:test:load_structure&#45;&gt;db:test:purge -->
<g id="edge24" class="edge">
<title>db:test:load_structure&#45;&gt;db:test:purge</title>
<path fill="none" stroke="#000000" d="M1535.9057,-225.5233C1546.1292,-215.6723 1555.895,-202.3706 1555.895,-187.5 1555.895,-187.5 1555.895,-187.5 1555.895,-97.5 1555.895,-82.8143 1565.6528,-71.0917 1577.4879,-62.2746"/>
<polygon fill="#000000" stroke="#000000" points="1579.5538,-65.1036 1585.919,-56.6339 1575.6613,-59.2856 1579.5538,-65.1036"/>
</g>
<!-- db:test:prepare -->
<g id="node44" class="node">
<title>db:test:prepare</title>
<ellipse fill="none" stroke="#000000" cx="1618.895" cy="-781" rx="63.0888" ry="18"/>
<text text-anchor="middle" x="1618.895" y="-777.3" font-family="Times,serif" font-size="14.00" fill="#000000">db:test:prepare</text>
</g>
<!-- db:test:prepare&#45;&gt;db:test:load -->
<g id="edge25" class="edge">
<title>db:test:prepare&#45;&gt;db:test:load</title>
<path fill="none" stroke="#c0c0c0" d="M1618.895,-762.9489C1618.895,-750.4659 1618.895,-733.474 1618.895,-718.5 1618.895,-718.5 1618.895,-718.5 1618.895,-600.5 1618.895,-591.7318 1618.895,-582.1843 1618.895,-573.5196"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="1622.3951,-573.5 1618.895,-563.5 1615.3951,-573.5 1622.3951,-573.5"/>
<text text-anchor="middle" x="1637.395" y="-652.3" font-family="Times,serif" font-size="14.00" fill="#000000">invoke</text>
</g>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment