sequel_migration_builder 0.3.2 → 0.4.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 +15 -0
- data/Rakefile +7 -17
- data/VERSION +1 -1
- data/lib/sequel/migration_builder.rb +17 -4
- data/lib/sequel/schema/alter_table_operations.rb +16 -6
- data/lib/sequel/schema/db_column.rb +1 -1
- data/sequel_migration_builder.gemspec +12 -11
- data/spec/db_column_spec.rb +2 -2
- data/spec/db_schema_parser_spec.rb +7 -7
- data/spec/migration_builder_spec.rb +54 -9
- data/spec/spec_helper.rb +3 -4
- metadata +44 -68
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YzVhY2M3MmE2YWZmZTk2ZDZhNzhjN2JiOTc0YmQwM2FjOWUwYTRhYg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWRlMDFiMTg1ZWZiNGYyMDQ5YTZkNzVjMWJjZTc5YjVkZWRmZjlkZA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MjE5OGMyMDA2ZWE5MGZhYmM2MWViNDYwMDVkZjk0YjQ5Nzk5NmYxNDcyZGU5
|
10
|
+
MmM1YTNhNjM1ZmQ4YWUwY2U4NmYzYTg1Y2ZmNmFmNWNlMjlkYTU1YmRkZTA0
|
11
|
+
NTNlNjY5Y2ZkZmQzMWM2YjBhZWQ0ZTk4NGViMTdhMTZlZmFhYWI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZTYzMmU1ZGZhMTRiYjY0N2ZhNDU1NTEyNTM3YmQ1MTI2ZjY3NTExYzc3Y2Vh
|
14
|
+
N2Q3MDY3Zjg0YmRkNTY4YWE4NTNjYmZkMTRkMzYzODUxODkxY2VhMTAzMjk2
|
15
|
+
YjcxMGYwYjBjNGE3NjFkMWNiZmM2NGM5ZjQ4Yzc3MzgxOWMyY2Q=
|
data/Rakefile
CHANGED
@@ -19,32 +19,22 @@ rescue LoadError
|
|
19
19
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
20
|
end
|
21
21
|
|
22
|
-
require '
|
23
|
-
|
24
|
-
|
25
|
-
spec.
|
22
|
+
require 'rspec/core'
|
23
|
+
require 'rspec/core/rake_task'
|
24
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
25
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
spec.
|
30
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
28
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
29
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
31
30
|
spec.rcov = true
|
31
|
+
spec.rcov_opts = "-x spec/ -x /home"
|
32
32
|
end
|
33
33
|
|
34
34
|
task :spec => :check_dependencies
|
35
35
|
|
36
36
|
task :default => :spec
|
37
37
|
|
38
|
-
require 'rake/rdoctask'
|
39
|
-
Rake::RDocTask.new do |rdoc|
|
40
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
41
|
-
|
42
|
-
rdoc.rdoc_dir = 'rdoc'
|
43
|
-
rdoc.title = "sequel_migration_builder #{version}"
|
44
|
-
rdoc.rdoc_files.include('README*')
|
45
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
46
|
-
end
|
47
|
-
|
48
38
|
desc "Flog this baby!"
|
49
39
|
task :flog do
|
50
40
|
sh 'find lib -name "*.rb" | xargs flog'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -13,12 +13,16 @@ module Sequel
|
|
13
13
|
|
14
14
|
# Creates a migration builder for the given database.
|
15
15
|
#
|
16
|
-
def initialize(db)
|
16
|
+
def initialize(db, options={})
|
17
17
|
@db = db
|
18
18
|
@db_tables = Schema::DbSchemaParser.for_db(db).parse_db_schema
|
19
19
|
@db_table_names = @db.tables
|
20
20
|
@indent = 0
|
21
21
|
@result = []
|
22
|
+
@separate_alter_table_statements = !!options[:separate_alter_table_statements]
|
23
|
+
# Columns are only added and dropped, never altered. This helps
|
24
|
+
# us support Redshift.
|
25
|
+
@immutable_columns = !!options[:immutable_columns]
|
22
26
|
end
|
23
27
|
|
24
28
|
# Generates a string of ruby code to define a sequel
|
@@ -74,10 +78,19 @@ module Sequel
|
|
74
78
|
each_table(current_table_names, tables) do |table_name, table, last_table|
|
75
79
|
hsh = table.dup
|
76
80
|
hsh[:columns] = hsh[:columns].map {|c| Schema::DbColumn.build_from_hash(c) }
|
77
|
-
operations = Schema::AlterTableOperations.
|
81
|
+
operations = Schema::AlterTableOperations.
|
82
|
+
build(@db_tables[table_name], hsh, :immutable_columns => @immutable_columns)
|
78
83
|
unless operations.empty?
|
79
|
-
|
80
|
-
|
84
|
+
all_operations = if @separate_alter_table_statements
|
85
|
+
operations.map {|o| [o] }
|
86
|
+
else
|
87
|
+
[operations]
|
88
|
+
end
|
89
|
+
|
90
|
+
all_operations.each_with_index do |o, i|
|
91
|
+
alter_table_statement table_name, o
|
92
|
+
add_blank_line unless last_table && i + 1 == all_operations.size
|
93
|
+
end
|
81
94
|
end
|
82
95
|
end
|
83
96
|
end
|
@@ -1,11 +1,15 @@
|
|
1
1
|
module Sequel
|
2
2
|
module Schema
|
3
3
|
class AlterTableOperations
|
4
|
+
def initialize(options={})
|
5
|
+
@immutable_columns = options[:immutable_columns]
|
6
|
+
end
|
7
|
+
|
4
8
|
# Returns an array of operations to change the current database
|
5
9
|
# table to be like the defined table.
|
6
10
|
#
|
7
|
-
def self.build(db_table, new_table)
|
8
|
-
new.build(db_table, new_table)
|
11
|
+
def self.build(db_table, new_table, options={})
|
12
|
+
new(options).build(db_table, new_table)
|
9
13
|
end
|
10
14
|
|
11
15
|
def build(db_table, new_table)
|
@@ -46,10 +50,16 @@ module Sequel
|
|
46
50
|
result = []
|
47
51
|
|
48
52
|
diffs = db_column.diff(new_column)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
|
54
|
+
if @immutable_columns && !diffs.empty?
|
55
|
+
result << :drop_statement
|
56
|
+
result << :add_statement
|
57
|
+
else
|
58
|
+
result << :change_type_statement if [:elements, :column_type, :size, :unsigned].any? {|sym| diffs.include?(sym) }
|
59
|
+
# only need to explicitly set the default if we're not changing the column type.
|
60
|
+
result << :change_default_statement if diffs.include?(:default) && result.empty?
|
61
|
+
result << :change_null_statement if diffs.include?(:null)
|
62
|
+
end
|
53
63
|
|
54
64
|
result.map {|statement| new_column.__send__(statement) }
|
55
65
|
end
|
@@ -24,7 +24,7 @@ module Sequel
|
|
24
24
|
# can be strings or symbols.
|
25
25
|
#
|
26
26
|
def self.build_from_hash(attrs={})
|
27
|
-
self.new *members.map {|key| attrs[key] || attrs[key.to_sym] }
|
27
|
+
self.new *members.map {|key| attrs[key.to_s] || attrs[key.to_sym] }
|
28
28
|
end
|
29
29
|
|
30
30
|
def initialize(*args)
|
@@ -2,16 +2,18 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: sequel_migration_builder 0.4.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
8
|
+
s.name = "sequel_migration_builder"
|
9
|
+
s.version = "0.4.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.authors = ["Roland Swingler"]
|
14
|
+
s.date = "2014-09-01"
|
15
|
+
s.description = "Build Sequel Migrations based on the differences between two schemas"
|
16
|
+
s.email = "roland.swingler@gmail.com"
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"LICENSE",
|
17
19
|
"README.rdoc"
|
@@ -37,13 +39,12 @@ Gem::Specification.new do |s|
|
|
37
39
|
"spec/spec.opts",
|
38
40
|
"spec/spec_helper.rb"
|
39
41
|
]
|
40
|
-
s.homepage =
|
41
|
-
s.
|
42
|
-
s.
|
43
|
-
s.summary = %q{Build Sequel Migrations based on the differences between two schemas}
|
42
|
+
s.homepage = "http://github.com/knaveofdiamonds/sequel_migration_builder"
|
43
|
+
s.rubygems_version = "2.2.1"
|
44
|
+
s.summary = "Build Sequel Migrations based on the differences between two schemas"
|
44
45
|
|
45
46
|
if s.respond_to? :specification_version then
|
46
|
-
s.specification_version =
|
47
|
+
s.specification_version = 4
|
47
48
|
|
48
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
50
|
s.add_runtime_dependency(%q<sequel>, [">= 3.20.0"])
|
data/spec/db_column_spec.rb
CHANGED
@@ -114,8 +114,8 @@ describe Sequel::Schema::DbColumn do
|
|
114
114
|
|
115
115
|
it "should be buildable from a Hash" do
|
116
116
|
Sequel::Schema::DbColumn.build_from_hash(:name => "foo",
|
117
|
-
|
117
|
+
:column_type => "integer").column_type.should == "integer"
|
118
118
|
Sequel::Schema::DbColumn.build_from_hash('name' => "foo",
|
119
|
-
|
119
|
+
'column_type' => "integer").name.should == "foo"
|
120
120
|
end
|
121
121
|
end
|
@@ -2,14 +2,14 @@ require File.dirname(__FILE__) + "/spec_helper"
|
|
2
2
|
|
3
3
|
describe "Sequel::Schema::DbSchemaParser.for_db" do
|
4
4
|
it "should return a DbSchemaParser" do
|
5
|
-
Sequel::Schema::DbSchemaParser.for_db(
|
5
|
+
Sequel::Schema::DbSchemaParser.for_db(double(:database)).should \
|
6
6
|
be_kind_of(Sequel::Schema::DbSchemaParser)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "A hash in the array returned by Sequel::Schema::DbSchemaParser#parse_table_schema" do
|
11
11
|
before :each do
|
12
|
-
@parser = Sequel::Schema::DbSchemaParser.for_db(
|
12
|
+
@parser = Sequel::Schema::DbSchemaParser.for_db(double(:database))
|
13
13
|
@schema = [[:example_column,
|
14
14
|
{ :type => :integer,
|
15
15
|
:default => "1",
|
@@ -116,7 +116,7 @@ end
|
|
116
116
|
|
117
117
|
describe "Sequel::Schema::DbSchemaParser#parse_db_schema" do
|
118
118
|
it "should extract a list of table definitions from a database" do
|
119
|
-
mock_db =
|
119
|
+
mock_db = double(:db)
|
120
120
|
mock_db.should_receive(:tables).at_least(:once).and_return([:table1])
|
121
121
|
mock_db.should_receive(:schema).with(:table1).and_return([])
|
122
122
|
mock_db.should_receive(:indexes).with(:table1, :partial => true)
|
@@ -130,7 +130,7 @@ end
|
|
130
130
|
|
131
131
|
describe "Parsing a text column" do
|
132
132
|
it "should not raise an error because it does not have a size" do
|
133
|
-
parser = Sequel::Schema::DbSchemaParser.for_db(
|
133
|
+
parser = Sequel::Schema::DbSchemaParser.for_db(double(:database))
|
134
134
|
schema = [[:example_column,
|
135
135
|
{ :type => :string,
|
136
136
|
:default => nil,
|
@@ -145,7 +145,7 @@ end
|
|
145
145
|
|
146
146
|
describe "Parsing an enum column" do
|
147
147
|
it "should not raise an error when enum values contains brackets" do
|
148
|
-
parser = Sequel::Schema::DbSchemaParser.for_db(
|
148
|
+
parser = Sequel::Schema::DbSchemaParser.for_db(double(:database))
|
149
149
|
schema = [[:example_column,
|
150
150
|
{ :type => :enum,
|
151
151
|
:default => nil,
|
@@ -154,11 +154,11 @@ describe "Parsing an enum column" do
|
|
154
154
|
:db_type => "enum('foo (bar)', 'baz')",
|
155
155
|
:allow_null => true }]]
|
156
156
|
|
157
|
-
lambda { parser.parse_table_schema(schema) }.should_not raise_error
|
157
|
+
lambda { parser.parse_table_schema(schema) }.should_not raise_error
|
158
158
|
end
|
159
159
|
|
160
160
|
it "should correctly parse elements with escaped '' in them" do
|
161
|
-
parser = Sequel::Schema::DbSchemaParser.for_db(
|
161
|
+
parser = Sequel::Schema::DbSchemaParser.for_db(double(:database))
|
162
162
|
schema = [[:example_column,
|
163
163
|
{ :type => :enum,
|
164
164
|
:default => nil,
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/spec_helper"
|
|
3
3
|
describe Sequel::MigrationBuilder do
|
4
4
|
|
5
5
|
it "should return nil if the table hash is empty and the database has no tables" do
|
6
|
-
mock_db =
|
6
|
+
mock_db = double(:database)
|
7
7
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
8
8
|
Sequel::MigrationBuilder.new(mock_db).generate_migration({}).should be_nil
|
9
9
|
end
|
@@ -24,7 +24,7 @@ Sequel.migration do
|
|
24
24
|
end
|
25
25
|
END
|
26
26
|
|
27
|
-
mock_db =
|
27
|
+
mock_db = double(:database)
|
28
28
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
29
29
|
Sequel::MigrationBuilder.new(mock_db).generate_migration(tables).should == expected
|
30
30
|
end
|
@@ -54,13 +54,13 @@ Sequel.migration do
|
|
54
54
|
end
|
55
55
|
END
|
56
56
|
|
57
|
-
mock_db =
|
57
|
+
mock_db = double(:database)
|
58
58
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
59
59
|
Sequel::MigrationBuilder.new(mock_db).generate_migration(tables).should == expected
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should add the primary key of the table" do
|
63
|
-
mock_db =
|
63
|
+
mock_db = double(:database)
|
64
64
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
65
65
|
table = {
|
66
66
|
:primary_key => :foo,
|
@@ -79,7 +79,7 @@ END
|
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should add the non-integer primary key of the table" do
|
82
|
-
mock_db =
|
82
|
+
mock_db = double(:database)
|
83
83
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
84
84
|
table = {
|
85
85
|
:primary_key => :foo,
|
@@ -100,7 +100,7 @@ END
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should add the table options do the create_table statement" do
|
103
|
-
mock_db =
|
103
|
+
mock_db = double(:database)
|
104
104
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
105
105
|
table = {
|
106
106
|
:table_options => {:engine => "myisam"},
|
@@ -118,7 +118,7 @@ END
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should add indexes to the create_table statement" do
|
121
|
-
mock_db =
|
121
|
+
mock_db = double(:database)
|
122
122
|
mock_db.should_receive(:tables).at_least(:once).and_return([])
|
123
123
|
table = {
|
124
124
|
:indexes => {:foo_index => {:columns => :foo, :unique => true}},
|
@@ -143,7 +143,7 @@ END
|
|
143
143
|
{ :indexes => {:foo_index => {:columns => :foo, :unique => true}},
|
144
144
|
:columns => [{:name => :foo, :column_type => :integer}, {:name => :bar, :column_type => :varchar}]}
|
145
145
|
}
|
146
|
-
@mock_db =
|
146
|
+
@mock_db = double(:database)
|
147
147
|
@mock_db.should_receive(:tables).at_least(:once).and_return([:example_table])
|
148
148
|
@mock_db.should_receive(:indexes).with(:example_table, :partial => true).and_return({})
|
149
149
|
@mock_db.should_receive(:schema).with(:example_table).and_return([[:foo, {:type => :integer, :db_type => "smallint(5) unsigned", :allow_null => true, :ruby_default => 10}]])
|
@@ -164,11 +164,56 @@ END
|
|
164
164
|
Sequel::MigrationBuilder.new(@mock_db).
|
165
165
|
generate_migration_body(@tables).join("\n").should == expected.strip
|
166
166
|
end
|
167
|
+
|
168
|
+
it "should return separate alter table statements when option is set" do
|
169
|
+
expected = <<-END
|
170
|
+
change do
|
171
|
+
alter_table :example_table do
|
172
|
+
set_column_type :foo, :integer, :default => nil
|
173
|
+
end
|
174
|
+
|
175
|
+
alter_table :example_table do
|
176
|
+
set_column_allow_null :foo, false
|
177
|
+
end
|
178
|
+
|
179
|
+
alter_table :example_table do
|
180
|
+
add_column :bar, :varchar, :null => false
|
181
|
+
end
|
182
|
+
|
183
|
+
alter_table :example_table do
|
184
|
+
add_index :foo, :name => :foo_index, :unique => true
|
185
|
+
end
|
186
|
+
end
|
187
|
+
END
|
188
|
+
Sequel::MigrationBuilder.new(@mock_db, :separate_alter_table_statements => true).
|
189
|
+
generate_migration_body(@tables).join("\n").should == expected.strip
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should drop and add columns instead of changing them if immutable_columns is set" do
|
193
|
+
tables = { :example_table =>
|
194
|
+
{ :indexes => nil,
|
195
|
+
:columns => [{:name => :foo, :column_type => :integer}] }
|
196
|
+
}
|
197
|
+
|
198
|
+
expected = <<-END
|
199
|
+
change do
|
200
|
+
alter_table :example_table do
|
201
|
+
drop_column :foo
|
202
|
+
end
|
203
|
+
|
204
|
+
alter_table :example_table do
|
205
|
+
add_column :foo, :integer, :null => false
|
206
|
+
end
|
207
|
+
end
|
208
|
+
END
|
209
|
+
Sequel::MigrationBuilder.new(@mock_db, :separate_alter_table_statements => true, :immutable_columns => true).
|
210
|
+
generate_migration_body(tables).join("\n").should == expected.strip
|
211
|
+
end
|
167
212
|
end
|
168
213
|
|
169
214
|
it "should drop the table if the table exists in the database but not the table hash" do
|
170
215
|
pending # Deal with in a later version.
|
171
|
-
mock_db =
|
216
|
+
mock_db = double(:database)
|
172
217
|
mock_db.should_receive(:tables).at_least(:once).and_return([:example_table])
|
173
218
|
|
174
219
|
expected = <<-END
|
data/spec/spec_helper.rb
CHANGED
@@ -3,9 +3,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
3
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
4
|
require 'sequel'
|
5
5
|
require 'sequel/migration_builder'
|
6
|
-
require '
|
7
|
-
require 'spec/autorun'
|
6
|
+
require 'rspec'
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
11
10
|
end
|
metadata
CHANGED
@@ -1,64 +1,51 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_migration_builder
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 2
|
10
|
-
version: 0.3.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Roland Swingler
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: sequel
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 87
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
- 20
|
32
|
-
- 0
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
33
19
|
version: 3.20.0
|
34
20
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rspec
|
38
21
|
prerelease: false
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.20.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
49
33
|
version: 1.2.9
|
50
34
|
type: :development
|
51
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.9
|
52
41
|
description: Build Sequel Migrations based on the differences between two schemas
|
53
42
|
email: roland.swingler@gmail.com
|
54
43
|
executables: []
|
55
|
-
|
56
44
|
extensions: []
|
57
|
-
|
58
|
-
extra_rdoc_files:
|
45
|
+
extra_rdoc_files:
|
59
46
|
- LICENSE
|
60
47
|
- README.rdoc
|
61
|
-
files:
|
48
|
+
files:
|
62
49
|
- .document
|
63
50
|
- CHANGELOG
|
64
51
|
- LICENSE
|
@@ -80,36 +67,25 @@ files:
|
|
80
67
|
- spec/spec_helper.rb
|
81
68
|
homepage: http://github.com/knaveofdiamonds/sequel_migration_builder
|
82
69
|
licenses: []
|
83
|
-
|
70
|
+
metadata: {}
|
84
71
|
post_install_message:
|
85
72
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
73
|
+
require_paths:
|
88
74
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
none: false
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
hash: 3
|
104
|
-
segments:
|
105
|
-
- 0
|
106
|
-
version: "0"
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
107
85
|
requirements: []
|
108
|
-
|
109
86
|
rubyforge_project:
|
110
|
-
rubygems_version:
|
87
|
+
rubygems_version: 2.2.1
|
111
88
|
signing_key:
|
112
|
-
specification_version:
|
89
|
+
specification_version: 4
|
113
90
|
summary: Build Sequel Migrations based on the differences between two schemas
|
114
91
|
test_files: []
|
115
|
-
|