heart_seed 0.0.4 → 0.0.5
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/CHANGELOG.md +10 -1
- data/heart_seed.gemspec +2 -2
- data/lib/heart_seed/db_seed.rb +23 -14
- data/lib/heart_seed/version.rb +1 -1
- data/spec/db/migration.rb +4 -4
- data/spec/db/setup.rb +1 -1
- data/spec/db/test_models.rb +2 -0
- data/spec/fixtures/invalid/invalid_comments.yml +9 -0
- data/spec/heart_seed/db_seed_spec.rb +20 -13
- data/spec/spec_helper.rb +13 -3
- metadata +12 -16
- data/spec/support/models/article.rb +0 -0
- data/spec/support/models/comment.rb +0 -0
- data/spec/support/models/like.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3eac8531ec734a730680e223a8bb7a58a43dac84
|
4
|
+
data.tar.gz: d8f9f23f4759928cc439363f198292ccc849d900
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d47173b69ed309859fb0df2e1f28e2ca4e6651c765534bfe2c1fd37b46d057ceae9a6eed19125e836152a6ddd7eaee39b79d3cfda8799849e81f24c9eddfebce
|
7
|
+
data.tar.gz: 1fc16baceacbb9a16ae967250e84c391d077dd87be4b97ec42d38d8be0979a3cdd40687f289905fedefebb645fe48a18ff090d1f2483e59ce23537634ef39eff
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
## master
|
2
|
-
[full changelog](https://github.com/sue445/heart_seed/compare/v0.0.
|
2
|
+
[full changelog](https://github.com/sue445/heart_seed/compare/v0.0.5...master)
|
3
|
+
|
4
|
+
## 0.0.5 (2015/02/09)
|
5
|
+
[full changelog](https://github.com/sue445/heart_seed/compare/v0.0.4...v0.0.5)
|
6
|
+
|
7
|
+
* Stop db:seed When invalid fixture
|
8
|
+
* https://github.com/sue445/heart_seed/issues/22
|
9
|
+
* https://github.com/sue445/heart_seed/issues/23
|
10
|
+
* execute seed do follow the order in catalog file
|
11
|
+
* https://github.com/sue445/heart_seed/issues/24
|
3
12
|
|
4
13
|
## 0.0.4 (2015/01/16)
|
5
14
|
[full changelog](https://github.com/sue445/heart_seed/compare/v0.0.3...v0.0.4)
|
data/heart_seed.gemspec
CHANGED
@@ -25,10 +25,10 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency "activesupport", ">= 3.0.0"
|
26
26
|
spec.add_dependency "roo", ">= 1.13.2"
|
27
27
|
|
28
|
-
spec.add_development_dependency "bundler"
|
28
|
+
spec.add_development_dependency "bundler"
|
29
29
|
spec.add_development_dependency "codeclimate-test-reporter"
|
30
30
|
spec.add_development_dependency "coveralls"
|
31
|
-
spec.add_development_dependency "database_rewinder", "
|
31
|
+
spec.add_development_dependency "database_rewinder", ">= 0.4.2"
|
32
32
|
spec.add_development_dependency "pry"
|
33
33
|
spec.add_development_dependency "pry-nav"
|
34
34
|
spec.add_development_dependency "pry-remote"
|
data/lib/heart_seed/db_seed.rb
CHANGED
@@ -28,7 +28,7 @@ module HeartSeed
|
|
28
28
|
model_class.transaction do
|
29
29
|
model_class.delete_all
|
30
30
|
fixtures.each do |fixture|
|
31
|
-
model_class.create(fixture)
|
31
|
+
model_class.create!(fixture)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -52,16 +52,31 @@ module HeartSeed
|
|
52
52
|
raise "require TABLES or CATALOGS if production" if HeartSeed::Helper.production? && target_table_names.empty?
|
53
53
|
|
54
54
|
ActiveRecord::Migration.verbose = true
|
55
|
-
Dir.glob(File.join(seed_dir, "*.yml")) do |file_path|
|
56
|
-
table_name = File.basename(file_path, '.*')
|
57
|
-
next unless target_table?(table_name, target_table_names)
|
58
55
|
|
59
|
-
|
60
|
-
|
56
|
+
if target_table_names.empty?
|
57
|
+
# seed all tables
|
58
|
+
Dir.glob(File.join(seed_dir, "*.yml")) do |file_path|
|
59
|
+
table_name = File.basename(file_path, '.*')
|
60
|
+
|
61
|
+
ActiveRecord::Migration.say_with_time("#{file_path} -> #{table_name}") do
|
62
|
+
insert_seed(file_path: file_path, table_name: table_name, mode: mode)
|
63
|
+
ActiveRecord::Migration.say("[INFO] success", true)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
else
|
68
|
+
# seed specified tables (follow the order)
|
69
|
+
target_table_names.each do |table_name|
|
70
|
+
file_path = File.join(seed_dir, "#{table_name}.yml")
|
71
|
+
|
72
|
+
unless File.exists?(file_path)
|
73
|
+
ActiveRecord::Migration.say("[WARN] #{file_path} is not exists")
|
74
|
+
next
|
75
|
+
end
|
76
|
+
|
77
|
+
ActiveRecord::Migration.say_with_time("#{file_path} -> #{table_name}") do
|
61
78
|
insert_seed(file_path: file_path, table_name: table_name, mode: mode)
|
62
79
|
ActiveRecord::Migration.say("[INFO] success", true)
|
63
|
-
rescue => e
|
64
|
-
ActiveRecord::Migration.say("[ERROR] #{e.message}", true)
|
65
80
|
end
|
66
81
|
end
|
67
82
|
end
|
@@ -118,12 +133,6 @@ module HeartSeed
|
|
118
133
|
tables.compact
|
119
134
|
end
|
120
135
|
|
121
|
-
def self.target_table?(source_table, target_tables)
|
122
|
-
return true if target_tables.empty?
|
123
|
-
target_tables.include?(source_table)
|
124
|
-
end
|
125
|
-
private_class_method :target_table?
|
126
|
-
|
127
136
|
# insert yaml file to table
|
128
137
|
# @param file_path [String] source seed yaml file
|
129
138
|
# @param table_name [String] output destination table
|
data/lib/heart_seed/version.rb
CHANGED
data/spec/db/migration.rb
CHANGED
@@ -5,26 +5,26 @@ ActiveRecord::Schema.define(version: 1) do
|
|
5
5
|
t.string :title
|
6
6
|
t.text :description
|
7
7
|
|
8
|
-
t.timestamps
|
8
|
+
t.timestamps null: false
|
9
9
|
end
|
10
10
|
|
11
11
|
create_table :comments do |t|
|
12
12
|
t.references :article, index: true
|
13
13
|
t.text :message
|
14
14
|
|
15
|
-
t.timestamps
|
15
|
+
t.timestamps null: false
|
16
16
|
end
|
17
17
|
|
18
18
|
create_table :likes do |t|
|
19
19
|
t.references :article, index: true
|
20
20
|
|
21
|
-
t.timestamps
|
21
|
+
t.timestamps null: false
|
22
22
|
end
|
23
23
|
|
24
24
|
create_table :shard_articles do |t|
|
25
25
|
t.string :title
|
26
26
|
t.text :description
|
27
27
|
|
28
|
-
t.timestamps
|
28
|
+
t.timestamps null: false
|
29
29
|
end
|
30
30
|
end
|
data/spec/db/setup.rb
CHANGED
data/spec/db/test_models.rb
CHANGED
@@ -11,10 +11,20 @@ describe HeartSeed::DbSeed do
|
|
11
11
|
describe "#insert" do
|
12
12
|
subject { HeartSeed::DbSeed.insert(file_path: file_path, model_class: model_class) }
|
13
13
|
|
14
|
-
let(:file_path) { "#{FIXTURE_DIR}/comments.yml" }
|
15
14
|
let(:model_class) { Comment }
|
16
15
|
|
17
|
-
|
16
|
+
context "When valid data" do
|
17
|
+
let(:file_path) { "#{FIXTURE_DIR}/comments.yml" }
|
18
|
+
|
19
|
+
it{ expect{ subject }.to change(Comment, :count).by(2) }
|
20
|
+
end
|
21
|
+
|
22
|
+
context "When invalid data" do
|
23
|
+
let(:file_path) { "#{FIXTURE_DIR}/invalid/invalid_comments.yml" }
|
24
|
+
|
25
|
+
it{ expect{ subject }.to raise_error ActiveRecord::RecordInvalid }
|
26
|
+
it{ expect{ subject rescue nil }.to change(Comment, :count).by(0) }
|
27
|
+
end
|
18
28
|
end
|
19
29
|
|
20
30
|
describe "#import_all" do
|
@@ -25,16 +35,6 @@ describe HeartSeed::DbSeed do
|
|
25
35
|
let(:catalogs) { [] }
|
26
36
|
let(:mode){}
|
27
37
|
|
28
|
-
before do
|
29
|
-
# FIXME can not clear if using `DatabaseRewinder.clean`
|
30
|
-
DatabaseRewinder.clean_all
|
31
|
-
end
|
32
|
-
|
33
|
-
after do
|
34
|
-
# FIXME can not clear if using `DatabaseRewinder.clean`
|
35
|
-
DatabaseRewinder.clean_all
|
36
|
-
end
|
37
|
-
|
38
38
|
context "When empty tables" do
|
39
39
|
it{ expect{ subject }.to change(Article, :count).by(2) }
|
40
40
|
it{ expect{ subject }.to change(Comment, :count).by(2) }
|
@@ -54,10 +54,17 @@ describe HeartSeed::DbSeed do
|
|
54
54
|
|
55
55
|
before do
|
56
56
|
allow(HeartSeed::Helper).to receive(:catalogs){
|
57
|
-
{ "article" => ["articles", "likes"] }
|
57
|
+
{ "article" => ["articles", "likes", "missing_table"] }
|
58
58
|
}
|
59
59
|
end
|
60
60
|
|
61
|
+
it "should execute seed do follow the order in catalog file" do
|
62
|
+
expect(HeartSeed::DbSeed).to receive(:insert_seed).with(hash_including(table_name: "articles")).ordered
|
63
|
+
expect(HeartSeed::DbSeed).to receive(:insert_seed).with(hash_including(table_name: "likes")).ordered
|
64
|
+
expect(HeartSeed::DbSeed).not_to receive(:insert_seed).with(hash_including(table_name: "missing_table")).ordered
|
65
|
+
subject
|
66
|
+
end
|
67
|
+
|
61
68
|
it{ expect{ subject }.to change(Article, :count).by(2) }
|
62
69
|
it{ expect{ subject }.to change(Comment, :count).by(0) }
|
63
70
|
it{ expect{ subject }.to change(Like , :count).by(1) }
|
data/spec/spec_helper.rb
CHANGED
@@ -16,11 +16,15 @@
|
|
16
16
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
17
17
|
|
18
18
|
if ENV["COVERAGE"]
|
19
|
+
require "simplecov"
|
20
|
+
require "coveralls"
|
19
21
|
require "codeclimate-test-reporter"
|
20
|
-
CodeClimate::TestReporter.start
|
21
22
|
|
22
|
-
|
23
|
-
|
23
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
24
|
+
CodeClimate::TestReporter::Formatter,
|
25
|
+
Coveralls::SimpleCov::Formatter
|
26
|
+
]
|
27
|
+
SimpleCov.start
|
24
28
|
end
|
25
29
|
|
26
30
|
$LOAD_PATH.unshift(File.join(__dir__, "..", "lib"))
|
@@ -120,6 +124,12 @@ RSpec.configure do |config|
|
|
120
124
|
|
121
125
|
# database_rewinder
|
122
126
|
config.before :suite do
|
127
|
+
# FIXME: fool automatic_reconnect ...
|
128
|
+
# https://github.com/rails/rails/blob/v4.2.0/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb#L444
|
129
|
+
SHARD_NAMES.each do |shard_name|
|
130
|
+
DatabaseRewinder[nil, connection: shard_name].pool.automatic_reconnect = true
|
131
|
+
end
|
132
|
+
|
123
133
|
DatabaseRewinder.clean_all
|
124
134
|
# or
|
125
135
|
# DatabaseRewinder.clean_with :any_arg_that_would_be_actually_ignored_anyway
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heart_seed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: codeclimate-test-reporter
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,16 +112,16 @@ dependencies:
|
|
112
112
|
name: database_rewinder
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.2
|
117
|
+
version: 0.4.2
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.2
|
124
|
+
version: 0.4.2
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pry
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -379,6 +379,7 @@ files:
|
|
379
379
|
- spec/dummy/vendor/assets/stylesheets/.keep
|
380
380
|
- spec/fixtures/articles.yml
|
381
381
|
- spec/fixtures/comments.yml
|
382
|
+
- spec/fixtures/invalid/invalid_comments.yml
|
382
383
|
- spec/fixtures/likes.yml
|
383
384
|
- spec/fixtures/shard_articles.yml
|
384
385
|
- spec/heart_seed/converter_spec.rb
|
@@ -386,9 +387,6 @@ files:
|
|
386
387
|
- spec/heart_seed/tasks/heart_seed_rake_spec.rb
|
387
388
|
- spec/heart_seed_spec.rb
|
388
389
|
- spec/spec_helper.rb
|
389
|
-
- spec/support/models/article.rb
|
390
|
-
- spec/support/models/comment.rb
|
391
|
-
- spec/support/models/like.rb
|
392
390
|
- spec/support/shared_contexts/rake_in_app_dir.rb
|
393
391
|
homepage: https://github.com/sue445/heart_seed
|
394
392
|
licenses:
|
@@ -477,6 +475,7 @@ test_files:
|
|
477
475
|
- spec/dummy/vendor/assets/stylesheets/.keep
|
478
476
|
- spec/fixtures/articles.yml
|
479
477
|
- spec/fixtures/comments.yml
|
478
|
+
- spec/fixtures/invalid/invalid_comments.yml
|
480
479
|
- spec/fixtures/likes.yml
|
481
480
|
- spec/fixtures/shard_articles.yml
|
482
481
|
- spec/heart_seed/converter_spec.rb
|
@@ -484,8 +483,5 @@ test_files:
|
|
484
483
|
- spec/heart_seed/tasks/heart_seed_rake_spec.rb
|
485
484
|
- spec/heart_seed_spec.rb
|
486
485
|
- spec/spec_helper.rb
|
487
|
-
- spec/support/models/article.rb
|
488
|
-
- spec/support/models/comment.rb
|
489
|
-
- spec/support/models/like.rb
|
490
486
|
- spec/support/shared_contexts/rake_in_app_dir.rb
|
491
487
|
has_rdoc:
|
File without changes
|
File without changes
|
data/spec/support/models/like.rb
DELETED
File without changes
|