unschema 0.1.0 → 0.2.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/.travis.yml +5 -11
- data/Gemfile +3 -2
- data/README.md +14 -2
- data/bin/unschema +4 -3
- data/lib/unschema/base.rb +2 -2
- data/lib/unschema/migration_dumper.rb +8 -7
- data/lib/unschema/version.rb +1 -1
- data/test/helper.rb +3 -5
- data/test/integration/end_to_end_test.rb +6 -5
- data/test/unit/migration_dumper_test.rb +12 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6079ec9ea6b09cea0e74b39fc2262f5264e61756
|
4
|
+
data.tar.gz: 0a6eea8e41166d81329df0ec90357af672610501
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 130a249227fabfbf050c564baba11e2bdc9038e07c0af09490dc2649ddce5f2fbd8b2044a709a2d9a9c398ac8a3704e3090e331ab5765fb6fe848d77ad437ade
|
7
|
+
data.tar.gz: 1628153b476be4385b55ec9d5f8c91e3743bceb17ccf344be3cfd05f91f2365a5ba7630c2498c2dc7ae7e8fc9739b5ff4eecd5f60e08b1d4b3245edaec7b948a
|
data/.travis.yml
CHANGED
@@ -1,24 +1,18 @@
|
|
1
1
|
language: ruby
|
2
2
|
sudo: false
|
3
3
|
cache: bundler
|
4
|
+
after_success:
|
5
|
+
- '[ "${TRAVIS_JOB_NUMBER#*.}" = "1" ] && bundle exec codeclimate-test-reporter'
|
4
6
|
rvm:
|
5
7
|
- ruby-head
|
8
|
+
- 2.4.3
|
9
|
+
- 2.3.6
|
6
10
|
- 2.2
|
7
11
|
- 2.1
|
8
|
-
- 2.0
|
9
|
-
- 1.9.3
|
10
12
|
env:
|
11
13
|
global:
|
12
14
|
- CODECLIMATE_REPO_TOKEN=5149a81a58ceefa61850827c29b5fecc303d15c038b7ad4fb12e8279d2be47ab
|
13
15
|
matrix:
|
14
16
|
fast_finish: true
|
15
17
|
allow_failures:
|
16
|
-
- ruby-head
|
17
|
-
|
18
|
-
notifications:
|
19
|
-
webhooks:
|
20
|
-
urls:
|
21
|
-
- https://webhooks.gitter.im/e/d347d6c0296c3caf01ad
|
22
|
-
on_success: change # options: [always|never|change] default: always
|
23
|
-
on_failure: always # options: [always|never|change] default: always
|
24
|
-
on_start: false # default: false
|
18
|
+
- rvm: ruby-head
|
data/Gemfile
CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in unschema.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
|
7
|
-
gem
|
6
|
+
group :test do
|
7
|
+
gem 'simplecov'
|
8
|
+
gem 'codeclimate-test-reporter', '~> 1.0.0'
|
8
9
|
end
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ We use it to cleanup older projects, that gets reused as codebase for new projec
|
|
27
27
|
|
28
28
|
Add this line to your application's Gemfile:
|
29
29
|
|
30
|
-
gem 'unschema'
|
30
|
+
gem 'unschema', '~> 0.2.0'
|
31
31
|
|
32
32
|
And then execute:
|
33
33
|
|
@@ -39,7 +39,7 @@ Or install it yourself as:
|
|
39
39
|
|
40
40
|
## Usage
|
41
41
|
|
42
|
-
usage: unschema [SCHEMA_FILE] [MIGRATIONS_DIR]
|
42
|
+
usage: unschema [SCHEMA_FILE] [MIGRATIONS_DIR] [RAILS_VERSION]
|
43
43
|
|
44
44
|
## TODO
|
45
45
|
|
@@ -53,3 +53,15 @@ Or install it yourself as:
|
|
53
53
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
54
54
|
4. Push to the branch (`git push origin my-new-feature`)
|
55
55
|
5. Create new Pull Request
|
56
|
+
|
57
|
+
## Release
|
58
|
+
|
59
|
+
Follow these steps to release this gem:
|
60
|
+
|
61
|
+
# Bump version in
|
62
|
+
edit lib/unschema/version.rb
|
63
|
+
edit README.md
|
64
|
+
|
65
|
+
git commit -m "Release X.Y.Z"
|
66
|
+
|
67
|
+
rake release
|
data/bin/unschema
CHANGED
@@ -7,12 +7,13 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
|
7
7
|
|
8
8
|
require 'unschema'
|
9
9
|
|
10
|
-
if ARGV.size !=
|
11
|
-
puts "usage: unschema [SCHEMA_FILE] [MIGRATIONS_DIR]"
|
10
|
+
if ARGV.size != 3
|
11
|
+
puts "usage: unschema [SCHEMA_FILE] [MIGRATIONS_DIR] [RAILS_VERSION]"
|
12
12
|
exit 1
|
13
13
|
end
|
14
14
|
schema_file = ARGV[0]
|
15
15
|
migrations_path = ARGV[1]
|
16
|
+
rails_version = ARGV[2]
|
16
17
|
|
17
18
|
puts "Processing #{schema_file.inspect}"
|
18
|
-
Unschema::Base.process!(schema_file, migrations_path, true)
|
19
|
+
Unschema::Base.process!(schema_file, migrations_path, true, rails_version)
|
data/lib/unschema/base.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Unschema
|
2
|
-
class Base < Struct.new(:schema_file, :migrations_path, :verbose)
|
2
|
+
class Base < Struct.new(:schema_file, :migrations_path, :verbose, :rails_version)
|
3
3
|
def self.process!(*args)
|
4
4
|
new(*args).process
|
5
5
|
end
|
@@ -51,7 +51,7 @@ module Unschema
|
|
51
51
|
def dump_table_calls(table_name, calls)
|
52
52
|
file = File.join(migrations_path, "#{next_migration}_create_#{table_name}.rb")
|
53
53
|
File.open(file, "w") do |f|
|
54
|
-
MigrationDumper.new(table_name, calls).dump_to(f)
|
54
|
+
MigrationDumper.new(table_name, calls, rails_version: rails_version).dump_to(f)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module Unschema
|
2
2
|
class MigrationDumper
|
3
|
-
def initialize(table_name, calls)
|
3
|
+
def initialize(table_name, calls, rails_version:)
|
4
4
|
@table_name = table_name
|
5
|
-
@calls
|
5
|
+
@calls = calls
|
6
|
+
@rails_version = rails_version
|
6
7
|
end
|
7
8
|
|
8
9
|
def dump_to(f)
|
9
|
-
f << "class Create#{table_name_camelcased} < ActiveRecord::Migration\n"
|
10
|
+
f << "class Create#{table_name_camelcased} < ActiveRecord::Migration[#{@rails_version}]\n"
|
10
11
|
f << " def change\n"
|
11
12
|
|
12
13
|
@calls.each do |call|
|
@@ -38,17 +39,17 @@ module Unschema
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def table_name_camelcased
|
41
|
-
@table_name.gsub(/^(\w)/){|s| s.upcase }.gsub(/(_\w)/) { |s| s[-1, 1].upcase }
|
42
|
+
@table_name.gsub(/^(\w)/) { |s| s.upcase }.gsub(/(_\w)/) { |s| s[-1, 1].upcase }
|
42
43
|
end
|
43
44
|
|
44
45
|
def stringify_call(call)
|
45
|
-
args
|
46
|
+
args = stringify_args(call.args)
|
46
47
|
options = stringify_options(call.options) unless call.options.empty?
|
47
|
-
[
|
48
|
+
[args, options].compact.join(", ")
|
48
49
|
end
|
49
50
|
|
50
51
|
def stringify_args(args)
|
51
|
-
args.inspect.gsub(/^\[|\]$/,"")
|
52
|
+
args.inspect.gsub(/^\[|\]$/, "")
|
52
53
|
end
|
53
54
|
|
54
55
|
def stringify_options(options)
|
data/lib/unschema/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
CodeClimate::TestReporter.start
|
4
|
-
end
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
5
3
|
|
6
4
|
require 'minitest/autorun'
|
7
5
|
|
8
6
|
require 'unschema'
|
9
7
|
|
10
|
-
class TestCase <
|
8
|
+
class TestCase < Minitest::Test
|
11
9
|
def assert_string(actual, expect)
|
12
10
|
assert_equal expect.unindent, actual.unindent
|
13
11
|
end
|
@@ -8,12 +8,13 @@ class EndToEndTest < TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_schema_to_migrations
|
11
|
-
|
11
|
+
rails_version = "5.1"
|
12
|
+
Unschema::Base.process!(schema_file, migrations_path.to_s, true, rails_version)
|
12
13
|
|
13
|
-
assert_equal ["20130222131356_create_abc.rb", "20130222131357_create_table1.rb", "20130222131358_create_the_table2.rb"], Dir[migrations_path.join "*.rb"].map{|path| File.basename(path)}.sort
|
14
|
+
assert_equal ["20130222131356_create_abc.rb", "20130222131357_create_table1.rb", "20130222131358_create_the_table2.rb"], Dir[migrations_path.join "*.rb"].map { |path| File.basename(path) }.sort
|
14
15
|
|
15
16
|
assert_migration "20130222131356_create_abc.rb", <<-MIGRATION
|
16
|
-
class CreateAbc < ActiveRecord::Migration
|
17
|
+
class CreateAbc < ActiveRecord::Migration[#{rails_version}]
|
17
18
|
def change
|
18
19
|
create_table "abc" do |t|
|
19
20
|
t.string "defgh"
|
@@ -23,7 +24,7 @@ class EndToEndTest < TestCase
|
|
23
24
|
MIGRATION
|
24
25
|
|
25
26
|
assert_migration "20130222131357_create_table1.rb", <<-MIGRATION
|
26
|
-
class CreateTable1 < ActiveRecord::Migration
|
27
|
+
class CreateTable1 < ActiveRecord::Migration[#{rails_version}]
|
27
28
|
def change
|
28
29
|
create_table "table1", :force => true do |t|
|
29
30
|
t.string "str"
|
@@ -38,7 +39,7 @@ class EndToEndTest < TestCase
|
|
38
39
|
MIGRATION
|
39
40
|
|
40
41
|
assert_migration "20130222131358_create_the_table2.rb", <<-MIGRATION
|
41
|
-
class CreateTheTable2 < ActiveRecord::Migration
|
42
|
+
class CreateTheTable2 < ActiveRecord::Migration[#{rails_version}]
|
42
43
|
def change
|
43
44
|
create_table "the_table2", :force => true do |t|
|
44
45
|
t.date "date"
|
@@ -3,18 +3,20 @@ require 'helper'
|
|
3
3
|
|
4
4
|
class MigrationDumperTest < TestCase
|
5
5
|
def test_without_calls
|
6
|
-
create_dumper
|
6
|
+
create_dumper(rails_version: "5.1")
|
7
7
|
|
8
|
-
|
8
|
+
inner = <<-STR
|
9
9
|
STR
|
10
|
+
assert_change inner, rails_version: "5.1"
|
10
11
|
end
|
11
12
|
|
12
13
|
def test_create_table_call
|
13
14
|
create_dumper \
|
14
15
|
create_call(:create_table, "table", :force => true) { |t|
|
15
|
-
t.string
|
16
|
+
t.string "uid", :limit => 32, :unique => true
|
16
17
|
t.integer "amount"
|
17
|
-
}
|
18
|
+
},
|
19
|
+
rails_version: "5.1"
|
18
20
|
|
19
21
|
assert_change <<-STR
|
20
22
|
create_table "table", :force => true do |t|
|
@@ -27,7 +29,8 @@ class MigrationDumperTest < TestCase
|
|
27
29
|
def test_index_call
|
28
30
|
create_dumper \
|
29
31
|
create_call(:add_index, "table", "uid", :unique => true),
|
30
|
-
create_call(:add_index, "table", %w[composite index])
|
32
|
+
create_call(:add_index, "table", %w[composite index]),
|
33
|
+
rails_version: "5.1"
|
31
34
|
|
32
35
|
assert_change <<-STR
|
33
36
|
add_index "table", "uid", :unique => true
|
@@ -37,17 +40,17 @@ class MigrationDumperTest < TestCase
|
|
37
40
|
|
38
41
|
private
|
39
42
|
|
40
|
-
def create_dumper(*calls)
|
41
|
-
@dumper = Unschema::MigrationDumper.new("foo_bar", calls)
|
43
|
+
def create_dumper(*calls, rails_version:)
|
44
|
+
@dumper = Unschema::MigrationDumper.new("foo_bar", calls, rails_version: rails_version)
|
42
45
|
end
|
43
46
|
|
44
47
|
def create_call(name, *args, &block)
|
45
48
|
Unschema::SchemaIntermediator::Call.new(name, *args, &block)
|
46
49
|
end
|
47
50
|
|
48
|
-
def assert_change(inner)
|
51
|
+
def assert_change(inner, rails_version: "5.1")
|
49
52
|
expect = <<-STR
|
50
|
-
class CreateFooBar < ActiveRecord::Migration
|
53
|
+
class CreateFooBar < ActiveRecord::Migration[#{rails_version}]
|
51
54
|
def change
|
52
55
|
STR
|
53
56
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unschema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Holderbaum
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
86
|
version: '0'
|
87
87
|
requirements: []
|
88
88
|
rubyforge_project:
|
89
|
-
rubygems_version: 2.
|
89
|
+
rubygems_version: 2.6.13
|
90
90
|
signing_key:
|
91
91
|
specification_version: 4
|
92
92
|
summary: Splits your current schema.rb into per-table migrations
|