dread 0.0.7 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +102 -1
- data/dread.gemspec +2 -2
- data/lib/dread.rb +9 -2
- data/lib/dread/{graph.rb → association_graph.rb} +3 -3
- data/lib/dread/console_output.rb +10 -1
- data/lib/dread/missing_graph.rb +41 -0
- data/lib/dread/missing_graphs.rb +21 -0
- data/lib/dread/version.rb +2 -2
- data/lib/tasks/dread.rake +9 -4
- data/test/{dread_test.rb → association_graph_test.rb} +21 -12
- data/test/dummy/app/models/company.rb +6 -0
- data/test/dummy/app/models/company_organization.rb +4 -0
- data/test/dummy/app/models/headquarter.rb +3 -0
- data/test/dummy/app/models/organization.rb +4 -0
- data/test/dummy/app/models/user.rb +2 -1
- data/test/dummy/db/migrate/20151013210055_create_companies.rb +9 -0
- data/test/dummy/db/migrate/20151013210139_create_organizations.rb +9 -0
- data/test/dummy/db/migrate/20151013210204_create_company_organizations.rb +10 -0
- data/test/dummy/db/migrate/20151013210550_create_headquarters.rb +9 -0
- data/test/dummy/db/migrate/20151013211307_add_company_id_to_users.rb +5 -0
- data/test/dummy/db/schema.rb +34 -1
- data/test/missing_graph_test.rb +39 -0
- metadata +31 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec0d3b7679358d3f9941777420ff7a2792dfd32c
|
4
|
+
data.tar.gz: 39291b385b9ab7bc5f316505e4c449b82044371d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 178d16acc3ead4591374a46ddda024abfab3de1a57748837def29a9d584fd37cf3006cb1d9db396343f4acc40b22bbed6818401502eb1e44270d8bff63f5ec14
|
7
|
+
data.tar.gz: ba0265f2cf871ab1f7425e2983a7e00e3253c72b9b4366c415d8f172c923d8960a9ba0cf74b5aecddb7ba93d2d8519ba262be450f296942db1a9c3ee2f17cb80
|
data/README.md
CHANGED
@@ -1,4 +1,105 @@
|
|
1
1
|
# Dread
|
2
2
|
|
3
|
+
// missing_dependents
|
4
|
+
|
3
5
|
[](https://travis-ci.org/DamirSvrtan/dread)
|
4
|
-
[](https://codeclimate.com/github/DamirSvrtan/dread)
|
6
|
+
[](https://codeclimate.com/github/DamirSvrtan/dread)
|
7
|
+
|
8
|
+
Never dread about (not) destroying your records again!
|
9
|
+
|
10
|
+
Dread provides ways to:
|
11
|
+
1. Draw a graph of dependently destroyable associations
|
12
|
+
2. Find associations with missing depenent destroys/delets/nullifies
|
13
|
+
|
14
|
+
Supports Rails 3.2+ and Ruby 1.9.3+.
|
15
|
+
|
16
|
+
## Installation
|
17
|
+
|
18
|
+
Add the Dread gem to your Gemfile:
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
group :development do
|
22
|
+
gem 'dread', '>= 0.0.7'
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
And run `bundle install` within your app's directory.
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
The Dread gem provides a rake task for drawing all dependently destroyable associations.
|
31
|
+
|
32
|
+
```bash
|
33
|
+
$ rake dread class=user
|
34
|
+
|
35
|
+
user
|
36
|
+
tweets
|
37
|
+
comments
|
38
|
+
pictures
|
39
|
+
pictures
|
40
|
+
comments
|
41
|
+
pictures
|
42
|
+
avatar
|
43
|
+
```
|
44
|
+
|
45
|
+
#### Self joins
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
class Employee < ActiveRecord::Base
|
49
|
+
has_many :subordinates, class_name: Employee,
|
50
|
+
foreign_key: "manager_id",
|
51
|
+
dependent: :destroy
|
52
|
+
|
53
|
+
belongs_to :manager, class_name: Employee
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
57
|
+
```shell
|
58
|
+
$ rake dread class=employee
|
59
|
+
|
60
|
+
employee
|
61
|
+
subordinates
|
62
|
+
...
|
63
|
+
```
|
64
|
+
|
65
|
+
#### Circular dependent destroys
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
class Supplier < ActiveRecord::Base
|
69
|
+
has_one :account, dependent: :destroy
|
70
|
+
end
|
71
|
+
|
72
|
+
class Account < ActiveRecord::Base
|
73
|
+
belongs_to :supplier, dependent: :destroy
|
74
|
+
end
|
75
|
+
```
|
76
|
+
|
77
|
+
```shell
|
78
|
+
$ rake dread class=supplier
|
79
|
+
|
80
|
+
supplier
|
81
|
+
account
|
82
|
+
supplier
|
83
|
+
...
|
84
|
+
```
|
85
|
+
|
86
|
+
|
87
|
+
### Development
|
88
|
+
|
89
|
+
Dread uses [appraisals](https://github.com/thoughtbot/appraisal) to test the code base against multiple versions of Rails.
|
90
|
+
|
91
|
+
When first developing, you should run `bundle install` and `appraisal install` to install the all dependencies accross different gemfiles.
|
92
|
+
|
93
|
+
Run `appraisal rake` to roll the tests on multiple versions or just run a specific set with `appraisal rails-4.0 rake`.
|
94
|
+
|
95
|
+
### Bug reports
|
96
|
+
|
97
|
+
If you find a problem with the Dread gem, please submit an [issue](https://github.com/DamirSvrtan/dread/issues), along with the version of Rails you're using and the set of associations that are causing the trouble.
|
98
|
+
|
99
|
+
### Contributing
|
100
|
+
|
101
|
+
1. Fork it ( http://github.com/DamirSvrtan/dread/fork )
|
102
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
103
|
+
3. Commit your changes (`git commit -m 'Add new feature'`)
|
104
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
105
|
+
5. Create new Pull Request
|
data/dread.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.authors = ["Damir Svrtan"]
|
11
11
|
s.email = ["damir.svrtan@gmail.com"]
|
12
12
|
s.homepage = "https://github.com/DamirSvrtan/dread"
|
13
|
-
s.summary = "
|
14
|
-
s.description = "
|
13
|
+
s.summary = "Draw a graph of dependently destroyable associations."
|
14
|
+
s.description = "Draw a graph of dependently destroyable associations and never dread about destroying your records again!"
|
15
15
|
s.license = "MIT"
|
16
16
|
|
17
17
|
s.files = `git ls-files`.split("\n")
|
data/lib/dread.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'pry'
|
2
|
-
require 'dread/
|
2
|
+
require 'dread/association_graph'
|
3
|
+
require 'dread/missing_graph'
|
4
|
+
require 'dread/missing_graphs'
|
5
|
+
|
3
6
|
|
4
7
|
module Dread
|
5
8
|
class Railtie < ::Rails::Railtie
|
@@ -7,4 +10,8 @@ module Dread
|
|
7
10
|
load File.join(File.dirname(__FILE__), 'tasks/dread.rake')
|
8
11
|
end
|
9
12
|
end
|
10
|
-
|
13
|
+
|
14
|
+
def self.ar_models
|
15
|
+
ActiveRecord::Base.descendants
|
16
|
+
end
|
17
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'dread/error'
|
2
2
|
require 'dread/console_output'
|
3
3
|
module Dread
|
4
|
-
class
|
4
|
+
class AssociationGraph
|
5
5
|
|
6
6
|
attr_reader :clazz, :dependable_collection, :collected_clazzes
|
7
7
|
|
@@ -60,11 +60,11 @@ module Dread
|
|
60
60
|
relation_hash[assoc_name] = {}
|
61
61
|
when :destroy
|
62
62
|
relation_hash.merge!(
|
63
|
-
|
63
|
+
AssociationGraph.new(assoc_data, assoc_data.macro == :has_many, collected_clazzes + [self.clazz]).dependable_collection)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
end
|
70
|
-
end
|
70
|
+
end
|
data/lib/dread/console_output.rb
CHANGED
@@ -12,6 +12,15 @@ module Dread
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
def generate_missing(klasses_with_missing_dependables)
|
16
|
+
klasses_with_missing_dependables.each do |klass, missing_dependables|
|
17
|
+
puts klass
|
18
|
+
missing_dependables.each do |missing_dependable|
|
19
|
+
puts " #{missing_dependable}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
15
24
|
end
|
16
25
|
end
|
17
|
-
end
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Dread
|
2
|
+
class MissingGraph
|
3
|
+
attr_reader :clazz
|
4
|
+
|
5
|
+
def initialize(clazz)
|
6
|
+
@clazz = clazz.classify.constantize
|
7
|
+
end
|
8
|
+
|
9
|
+
def missing_dependables
|
10
|
+
possesionable_associations.map do |assoc_name, assoc_data|
|
11
|
+
assoc_name if direct_association_with_no_dependents?(assoc_data)
|
12
|
+
end.compact
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def direct_association_with_no_dependents?(assoc_data)
|
18
|
+
assoc_data.options[:through].nil? && assoc_data.options[:dependent].nil?
|
19
|
+
end
|
20
|
+
|
21
|
+
def possesionable_associations
|
22
|
+
has_many_associations.merge(has_one_associations)
|
23
|
+
end
|
24
|
+
|
25
|
+
def has_many_associations
|
26
|
+
@has_many_associations ||= begin
|
27
|
+
clazz.reflections.select do |assoc_name, assoc_data|
|
28
|
+
assoc_data.macro == :has_many
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def has_one_associations
|
34
|
+
@has_one_associations ||= begin
|
35
|
+
clazz.reflections.select do |assoc_name, assoc_data|
|
36
|
+
assoc_data.macro == :has_one
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Dread
|
2
|
+
class MissingGraphs
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
Rails.application.eager_load!
|
6
|
+
end
|
7
|
+
|
8
|
+
def all_missing_dependables
|
9
|
+
Dread.ar_models.map do |active_record_model|
|
10
|
+
missing_dependables = Dread::MissingGraph.new(active_record_model.to_s)
|
11
|
+
.missing_dependables
|
12
|
+
|
13
|
+
{ active_record_model => missing_dependables } if missing_dependables.any?
|
14
|
+
end.compact.inject {|element, all| all.merge(element)}
|
15
|
+
end
|
16
|
+
|
17
|
+
def draw
|
18
|
+
ConsoleOutput.generate_missing(all_missing_dependables)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/dread/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Dread
|
2
|
-
VERSION = "0.0
|
3
|
-
end
|
2
|
+
VERSION = "0.1.0"
|
3
|
+
end
|
data/lib/tasks/dread.rake
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'colorize'
|
2
2
|
desc 'list destroyable/deletable dependencies of your ActiveRecord class'
|
3
|
-
task
|
3
|
+
task association_graph: :environment do
|
4
4
|
begin
|
5
|
-
|
6
|
-
|
5
|
+
association_graph = Dread::AssociationGraph.new(ENV['class'])
|
6
|
+
association_graph.draw
|
7
7
|
rescue Dread::Error => e
|
8
8
|
puts e.message.colorize(:red)
|
9
9
|
end
|
10
|
-
end
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'list ActiveRecord relationships with missing dependent destroys/deletes..'
|
13
|
+
task missing_dependables: :environment do
|
14
|
+
Dread::MissingGraphs.new.draw
|
15
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class AssociationGraphTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
test 'initialization' do
|
6
6
|
assert_nothing_raised do
|
7
|
-
dread_graph = Dread::
|
7
|
+
dread_graph = Dread::AssociationGraph.new('user')
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
test 'initialization with missing constant' do
|
12
12
|
assert_raises Dread::Error do
|
13
|
-
dread_graph = Dread::
|
13
|
+
dread_graph = Dread::AssociationGraph.new('uzer')
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -19,17 +19,26 @@ class DreadTest < ActiveSupport::TestCase
|
|
19
19
|
AccountSetting
|
20
20
|
account_settings
|
21
21
|
AccountSettings).each do |model_name|
|
22
|
-
assert_equal AccountSetting, Dread::
|
22
|
+
assert_equal AccountSetting, Dread::AssociationGraph.new(model_name).clazz
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
test 'various namespaced clazz names' do
|
27
|
+
%w(Wtf::Ashtray
|
28
|
+
Wtf::Ashtrays
|
29
|
+
wtf/ashtray
|
30
|
+
wtf/ashtrays).each do |model_name|
|
31
|
+
assert_equal Wtf::Ashtray, Dread::AssociationGraph.new(model_name).clazz
|
23
32
|
end
|
24
33
|
end
|
25
34
|
|
26
35
|
test 'drawing' do
|
27
|
-
dread_graph = Dread::
|
36
|
+
dread_graph = Dread::AssociationGraph.new('user')
|
28
37
|
dread_graph.draw
|
29
38
|
end
|
30
39
|
|
31
40
|
test 'collecting' do
|
32
|
-
dread_graph = Dread::
|
41
|
+
dread_graph = Dread::AssociationGraph.new('user')
|
33
42
|
dependable_collection = dread_graph.dependable_collection
|
34
43
|
dependable_collection.assert_valid_keys(:user)
|
35
44
|
dependable_collection[:user].assert_valid_keys(:tweets, :comments, :setting, :avatar)
|
@@ -37,7 +46,7 @@ class DreadTest < ActiveSupport::TestCase
|
|
37
46
|
end
|
38
47
|
|
39
48
|
test 'self-join' do
|
40
|
-
dread_graph = Dread::
|
49
|
+
dread_graph = Dread::AssociationGraph.new('employee')
|
41
50
|
dependable_collection = dread_graph.dependable_collection
|
42
51
|
dependable_collection.assert_valid_keys(:employee)
|
43
52
|
dependable_collection[:employee].assert_valid_keys(:subordinates)
|
@@ -46,12 +55,12 @@ class DreadTest < ActiveSupport::TestCase
|
|
46
55
|
end
|
47
56
|
|
48
57
|
test 'self-join drawing' do
|
49
|
-
dread_graph = Dread::
|
58
|
+
dread_graph = Dread::AssociationGraph.new('employee')
|
50
59
|
dread_graph.draw
|
51
60
|
end
|
52
61
|
|
53
62
|
test 'circular dependent destroy has one' do
|
54
|
-
dread_graph = Dread::
|
63
|
+
dread_graph = Dread::AssociationGraph.new('supplier')
|
55
64
|
dependable_collection = dread_graph.dependable_collection
|
56
65
|
dependable_collection.assert_valid_keys(:supplier)
|
57
66
|
dependable_collection[:supplier].assert_valid_keys(:account)
|
@@ -60,7 +69,7 @@ class DreadTest < ActiveSupport::TestCase
|
|
60
69
|
end
|
61
70
|
|
62
71
|
test 'circular dependent destroy belongs_to' do
|
63
|
-
dread_graph = Dread::
|
72
|
+
dread_graph = Dread::AssociationGraph.new('account')
|
64
73
|
dependable_collection = dread_graph.dependable_collection
|
65
74
|
dependable_collection.assert_valid_keys(:account)
|
66
75
|
dependable_collection[:account].assert_valid_keys(:supplier)
|
@@ -69,9 +78,9 @@ class DreadTest < ActiveSupport::TestCase
|
|
69
78
|
end
|
70
79
|
|
71
80
|
test 'namespaced associations' do
|
72
|
-
dread_graph = Dread::
|
81
|
+
dread_graph = Dread::AssociationGraph.new('Wtf::Ashtray')
|
73
82
|
dependable_collection = dread_graph.dependable_collection
|
74
83
|
dependable_collection.assert_valid_keys(:'wtf/ashtray')
|
75
84
|
dependable_collection[:'wtf/ashtray'].assert_valid_keys(:cigarettes)
|
76
85
|
end
|
77
|
-
end
|
86
|
+
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20151013211307) do
|
15
15
|
|
16
16
|
create_table "account_settings", force: true do |t|
|
17
17
|
t.string "time_zone"
|
@@ -35,6 +35,22 @@ ActiveRecord::Schema.define(version: 20140918223342) do
|
|
35
35
|
t.datetime "updated_at"
|
36
36
|
end
|
37
37
|
|
38
|
+
create_table "companies", force: true do |t|
|
39
|
+
t.string "name"
|
40
|
+
t.datetime "created_at"
|
41
|
+
t.datetime "updated_at"
|
42
|
+
end
|
43
|
+
|
44
|
+
create_table "company_organizations", force: true do |t|
|
45
|
+
t.integer "company_id"
|
46
|
+
t.integer "organization_id"
|
47
|
+
t.datetime "created_at"
|
48
|
+
t.datetime "updated_at"
|
49
|
+
end
|
50
|
+
|
51
|
+
add_index "company_organizations", ["company_id"], name: "index_company_organizations_on_company_id"
|
52
|
+
add_index "company_organizations", ["organization_id"], name: "index_company_organizations_on_organization_id"
|
53
|
+
|
38
54
|
create_table "countries", force: true do |t|
|
39
55
|
t.string "name"
|
40
56
|
t.datetime "created_at"
|
@@ -48,6 +64,20 @@ ActiveRecord::Schema.define(version: 20140918223342) do
|
|
48
64
|
t.datetime "updated_at"
|
49
65
|
end
|
50
66
|
|
67
|
+
create_table "headquarters", force: true do |t|
|
68
|
+
t.integer "company_id"
|
69
|
+
t.datetime "created_at"
|
70
|
+
t.datetime "updated_at"
|
71
|
+
end
|
72
|
+
|
73
|
+
add_index "headquarters", ["company_id"], name: "index_headquarters_on_company_id"
|
74
|
+
|
75
|
+
create_table "organizations", force: true do |t|
|
76
|
+
t.string "name"
|
77
|
+
t.datetime "created_at"
|
78
|
+
t.datetime "updated_at"
|
79
|
+
end
|
80
|
+
|
51
81
|
create_table "pictures", force: true do |t|
|
52
82
|
t.string "url"
|
53
83
|
t.integer "imageable_id"
|
@@ -74,8 +104,11 @@ ActiveRecord::Schema.define(version: 20140918223342) do
|
|
74
104
|
t.string "email"
|
75
105
|
t.datetime "created_at"
|
76
106
|
t.datetime "updated_at"
|
107
|
+
t.integer "company_id"
|
77
108
|
end
|
78
109
|
|
110
|
+
add_index "users", ["company_id"], name: "index_users_on_company_id"
|
111
|
+
|
79
112
|
create_table "wtf_ashtrays", force: true do |t|
|
80
113
|
t.string "color"
|
81
114
|
t.datetime "created_at"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Dread::MissingGraphTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
test 'initializaties with no problems' do
|
6
|
+
assert_nothing_raised do
|
7
|
+
Dread::MissingGraph.new('user')
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'user class has no missing dependables' do
|
12
|
+
missing_dependables = Dread::MissingGraph.new('user').missing_dependables
|
13
|
+
assert_equal [], missing_dependables
|
14
|
+
end
|
15
|
+
|
16
|
+
test 'account settings class has no missing dependables' do
|
17
|
+
missing_dependables = Dread::MissingGraph.new('account_setting').missing_dependables
|
18
|
+
assert_equal [], missing_dependables
|
19
|
+
end
|
20
|
+
|
21
|
+
test 'can find the model for multiple kinds of notations' do
|
22
|
+
%w(account_setting
|
23
|
+
AccountSetting).each do |model_name|
|
24
|
+
assert_equal AccountSetting, Dread::MissingGraph.new(model_name).clazz
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
test 'can find the model for various namespaced clazz names' do
|
29
|
+
%w(Wtf::Ashtray
|
30
|
+
wtf/ashtray).each do |model_name|
|
31
|
+
assert_equal Wtf::Ashtray, Dread::MissingGraph.new(model_name).clazz
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
test 'company class has missing dependables on company_organization and headquarter' do
|
36
|
+
missing_dependables = Dread::MissingGraph.new('company').missing_dependables
|
37
|
+
assert_equal [:company_organizations, :headquarter], missing_dependables
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dread
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Svrtan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -80,7 +80,8 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
description:
|
83
|
+
description: Draw a graph of dependently destroyable associations and never dread
|
84
|
+
about destroying your records again!
|
84
85
|
email:
|
85
86
|
- damir.svrtan@gmail.com
|
86
87
|
executables: []
|
@@ -99,18 +100,24 @@ files:
|
|
99
100
|
- gemfiles/rails_4.0.gemfile
|
100
101
|
- gemfiles/rails_4.1.gemfile
|
101
102
|
- lib/dread.rb
|
103
|
+
- lib/dread/association_graph.rb
|
102
104
|
- lib/dread/console_output.rb
|
103
105
|
- lib/dread/error.rb
|
104
|
-
- lib/dread/
|
106
|
+
- lib/dread/missing_graph.rb
|
107
|
+
- lib/dread/missing_graphs.rb
|
105
108
|
- lib/dread/version.rb
|
106
109
|
- lib/tasks/dread.rake
|
107
|
-
- test/
|
110
|
+
- test/association_graph_test.rb
|
108
111
|
- test/dummy/Rakefile
|
109
112
|
- test/dummy/app/models/account.rb
|
110
113
|
- test/dummy/app/models/account_setting.rb
|
111
114
|
- test/dummy/app/models/comment.rb
|
115
|
+
- test/dummy/app/models/company.rb
|
116
|
+
- test/dummy/app/models/company_organization.rb
|
112
117
|
- test/dummy/app/models/country.rb
|
113
118
|
- test/dummy/app/models/employee.rb
|
119
|
+
- test/dummy/app/models/headquarter.rb
|
120
|
+
- test/dummy/app/models/organization.rb
|
114
121
|
- test/dummy/app/models/picture.rb
|
115
122
|
- test/dummy/app/models/supplier.rb
|
116
123
|
- test/dummy/app/models/tweet.rb
|
@@ -151,7 +158,13 @@ files:
|
|
151
158
|
- test/dummy/db/migrate/20140918220929_create_accounts.rb
|
152
159
|
- test/dummy/db/migrate/20140918223314_create_wtf_ashtrays.rb
|
153
160
|
- test/dummy/db/migrate/20140918223342_create_wtf_cigarettes.rb
|
161
|
+
- test/dummy/db/migrate/20151013210055_create_companies.rb
|
162
|
+
- test/dummy/db/migrate/20151013210139_create_organizations.rb
|
163
|
+
- test/dummy/db/migrate/20151013210204_create_company_organizations.rb
|
164
|
+
- test/dummy/db/migrate/20151013210550_create_headquarters.rb
|
165
|
+
- test/dummy/db/migrate/20151013211307_add_company_id_to_users.rb
|
154
166
|
- test/dummy/db/schema.rb
|
167
|
+
- test/missing_graph_test.rb
|
155
168
|
- test/test_helper.rb
|
156
169
|
homepage: https://github.com/DamirSvrtan/dread
|
157
170
|
licenses:
|
@@ -173,18 +186,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
186
|
version: '0'
|
174
187
|
requirements: []
|
175
188
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.
|
189
|
+
rubygems_version: 2.4.5
|
177
190
|
signing_key:
|
178
191
|
specification_version: 4
|
179
|
-
summary:
|
192
|
+
summary: Draw a graph of dependently destroyable associations.
|
180
193
|
test_files:
|
181
|
-
- test/
|
194
|
+
- test/association_graph_test.rb
|
182
195
|
- test/dummy/Rakefile
|
183
196
|
- test/dummy/app/models/account.rb
|
184
197
|
- test/dummy/app/models/account_setting.rb
|
185
198
|
- test/dummy/app/models/comment.rb
|
199
|
+
- test/dummy/app/models/company.rb
|
200
|
+
- test/dummy/app/models/company_organization.rb
|
186
201
|
- test/dummy/app/models/country.rb
|
187
202
|
- test/dummy/app/models/employee.rb
|
203
|
+
- test/dummy/app/models/headquarter.rb
|
204
|
+
- test/dummy/app/models/organization.rb
|
188
205
|
- test/dummy/app/models/picture.rb
|
189
206
|
- test/dummy/app/models/supplier.rb
|
190
207
|
- test/dummy/app/models/tweet.rb
|
@@ -225,5 +242,11 @@ test_files:
|
|
225
242
|
- test/dummy/db/migrate/20140918220929_create_accounts.rb
|
226
243
|
- test/dummy/db/migrate/20140918223314_create_wtf_ashtrays.rb
|
227
244
|
- test/dummy/db/migrate/20140918223342_create_wtf_cigarettes.rb
|
245
|
+
- test/dummy/db/migrate/20151013210055_create_companies.rb
|
246
|
+
- test/dummy/db/migrate/20151013210139_create_organizations.rb
|
247
|
+
- test/dummy/db/migrate/20151013210204_create_company_organizations.rb
|
248
|
+
- test/dummy/db/migrate/20151013210550_create_headquarters.rb
|
249
|
+
- test/dummy/db/migrate/20151013211307_add_company_id_to_users.rb
|
228
250
|
- test/dummy/db/schema.rb
|
251
|
+
- test/missing_graph_test.rb
|
229
252
|
- test/test_helper.rb
|