seed-fu 2.0.0 → 2.0.1.rails31
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/CHANGELOG.md +11 -2
- data/README.md +1 -1
- data/lib/seed-fu.rb +1 -0
- data/lib/seed-fu/seeder.rb +20 -3
- data/lib/seed-fu/version.rb +1 -1
- metadata +59 -14
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
-
Version 2.0.
|
2
|
-
|
1
|
+
Version 2.0.1
|
2
|
+
-------------
|
3
|
+
|
4
|
+
Bug fixes:
|
5
|
+
|
6
|
+
* Update the primary key sequence in PostgreSQL tables after seeding data. This ensures that id conflicts do not occur when records are subsequently added to the table.
|
7
|
+
|
8
|
+
* Raise ActiveRecord::RecordNotSaved if any of the saves fail (but they won't fail due to validation since saves are done without validation, so this guards against callbacks failing etc.)
|
9
|
+
|
10
|
+
Version 2.0.0
|
11
|
+
-------------
|
3
12
|
|
4
13
|
Features:
|
5
14
|
|
data/README.md
CHANGED
@@ -137,7 +137,7 @@ If you need to programmatically generate seed files, for example to convert a CS
|
|
137
137
|
Bugs / Feature requests
|
138
138
|
-----------------------
|
139
139
|
|
140
|
-
Please report them
|
140
|
+
Please report them on [Github Issues](https://github.com/mbleigh/seed-fu/issues).
|
141
141
|
|
142
142
|
Contributors
|
143
143
|
------------
|
data/lib/seed-fu.rb
CHANGED
data/lib/seed-fu/seeder.rb
CHANGED
@@ -32,9 +32,11 @@ module SeedFu
|
|
32
32
|
# Insert/update the records as appropriate. Validation is skipped while saving.
|
33
33
|
# @return [Array<ActiveRecord::Base>] The records which have been seeded
|
34
34
|
def seed
|
35
|
-
@model_class.transaction do
|
35
|
+
records = @model_class.transaction do
|
36
36
|
@data.map { |record_data| seed_record(record_data.symbolize_keys) }
|
37
37
|
end
|
38
|
+
update_id_sequence
|
39
|
+
records
|
38
40
|
end
|
39
41
|
|
40
42
|
private
|
@@ -59,9 +61,11 @@ module SeedFu
|
|
59
61
|
def seed_record(data)
|
60
62
|
record = find_or_initialize_record(data)
|
61
63
|
return if @options[:insert_only] && !record.new_record?
|
62
|
-
|
64
|
+
|
63
65
|
puts " - #{@model_class} #{data.inspect}" unless @options[:quiet]
|
64
|
-
|
66
|
+
|
67
|
+
record.send(:attributes=, data, false)
|
68
|
+
record.save(:validate => false) || raise(ActiveRecord::RecordNotSaved)
|
65
69
|
record
|
66
70
|
end
|
67
71
|
|
@@ -73,5 +77,18 @@ module SeedFu
|
|
73
77
|
def constraint_conditions(data)
|
74
78
|
Hash[@constraints.map { |c| [c, data[c.to_sym]] }]
|
75
79
|
end
|
80
|
+
|
81
|
+
def update_id_sequence
|
82
|
+
if @model_class.connection.adapter_name == "PostgreSQL"
|
83
|
+
quoted_id = @model_class.connection.quote_column_name(@model_class.primary_key)
|
84
|
+
quoted_sequence = "'" + @model_class.sequence_name + "'"
|
85
|
+
@model_class.connection.execute(
|
86
|
+
"SELECT pg_catalog.setval(" +
|
87
|
+
"#{quoted_sequence}," +
|
88
|
+
"(SELECT MAX(#{quoted_id}) FROM #{@model_class.quoted_table_name}) + 1" +
|
89
|
+
");"
|
90
|
+
)
|
91
|
+
end
|
92
|
+
end
|
76
93
|
end
|
77
94
|
end
|
data/lib/seed-fu/version.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seed-fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 2
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
8
|
+
- 1
|
9
|
+
- rails31
|
10
|
+
version: 2.0.1.rails31
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Michael Bleigh
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-
|
19
|
+
date: 2010-12-26 00:00:00 +00:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -28,15 +29,32 @@ dependencies:
|
|
28
29
|
- !ruby/object:Gem::Version
|
29
30
|
segments:
|
30
31
|
- 3
|
32
|
+
- 1
|
31
33
|
- 0
|
32
|
-
-
|
33
|
-
version: 3.0.
|
34
|
+
- beta
|
35
|
+
version: 3.1.0.beta
|
34
36
|
type: :runtime
|
35
37
|
version_requirements: *id001
|
36
38
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
39
|
+
name: activesupport
|
38
40
|
prerelease: false
|
39
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
segments:
|
47
|
+
- 3
|
48
|
+
- 1
|
49
|
+
- 0
|
50
|
+
- beta
|
51
|
+
version: 3.1.0.beta
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: rspec
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
58
|
none: false
|
41
59
|
requirements:
|
42
60
|
- - ~>
|
@@ -44,14 +62,39 @@ dependencies:
|
|
44
62
|
segments:
|
45
63
|
- 2
|
46
64
|
- 0
|
65
|
+
version: "2.0"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: pg
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
segments:
|
47
77
|
- 0
|
48
|
-
version:
|
78
|
+
version: "0"
|
49
79
|
type: :development
|
50
|
-
version_requirements: *
|
80
|
+
version_requirements: *id004
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: mysql2
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
version: "0"
|
92
|
+
type: :development
|
93
|
+
version_requirements: *id005
|
51
94
|
- !ruby/object:Gem::Dependency
|
52
95
|
name: sqlite3
|
53
96
|
prerelease: false
|
54
|
-
requirement: &
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
55
98
|
none: false
|
56
99
|
requirements:
|
57
100
|
- - ">="
|
@@ -60,7 +103,7 @@ dependencies:
|
|
60
103
|
- 0
|
61
104
|
version: "0"
|
62
105
|
type: :development
|
63
|
-
version_requirements: *
|
106
|
+
version_requirements: *id006
|
64
107
|
description: Seed Fu is an attempt to once and for all solve the problem of inserting and maintaining seed data in a database. It uses a variety of techniques gathered from various places around the web and combines them to create what is hopefully the most robust seed data system around.
|
65
108
|
email:
|
66
109
|
- michael@intridea.com
|
@@ -104,11 +147,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
148
|
none: false
|
106
149
|
requirements:
|
107
|
-
- - "
|
150
|
+
- - ">"
|
108
151
|
- !ruby/object:Gem::Version
|
109
152
|
segments:
|
110
|
-
-
|
111
|
-
|
153
|
+
- 1
|
154
|
+
- 3
|
155
|
+
- 1
|
156
|
+
version: 1.3.1
|
112
157
|
requirements: []
|
113
158
|
|
114
159
|
rubyforge_project:
|