squasher 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -2
- data/lib/squasher/config.rb +5 -2
- data/lib/squasher/messages.yml +2 -0
- data/lib/squasher/templates/init_schema.rb.erb +1 -1
- data/lib/squasher/templates/squasher_clean.rb.erb +1 -1
- data/spec/lib/config_spec.rb +7 -0
- data/squasher.gemspec +3 -3
- 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: 32c691bc42a70dbb727f6c865fc4ed20fccdaa5b
|
4
|
+
data.tar.gz: 44f0be362840e69d663491d6596adf24bd45e541
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69f6385a5155b6eb0c6893822ec8aedf055fdd566fb6cc10a35482cdc5f9dbf26c4234b2a7679b255ebb2784cae0190ede0d7daf7192d069fcb05ef5a06ac0b4
|
7
|
+
data.tar.gz: 378315cdd0c0e263611fee16c32b4e2952f89333550b8698232eac8e3485163ab08b67873c247e215a3d267bb6f5dced5ce02ccbd6fb234653b312a6f62e20c7
|
data/README.md
CHANGED
@@ -19,13 +19,13 @@ If you want to share it with your rails/sinatra/etc app add the below:
|
|
19
19
|
```ruby
|
20
20
|
# Yep, the missing group in most Gemfiles where all utilities should be!
|
21
21
|
group :tools do
|
22
|
-
gem 'squasher', '>= 0.3.0'
|
22
|
+
gem 'squasher', '>= 0.3.0'
|
23
23
|
gem 'capistrano'
|
24
24
|
gem 'rubocop'
|
25
25
|
end
|
26
26
|
```
|
27
27
|
|
28
|
-
Don't forget to run `bundle`.
|
28
|
+
Don't forget to run `bundle`.
|
29
29
|
|
30
30
|
To integrate `squasher` with your app even more do the below:
|
31
31
|
|
@@ -71,12 +71,18 @@ squasher will not need to create the db schema and all data from the previous mi
|
|
71
71
|
|
72
72
|
`-e` - tell squasher that you are squashing a Rails engine. To squash migrations you need to configure a dummy app. If your dummy app located outside the engine's folder provide path to it as the next argument `squasher -e ../my-engine-app 2016`
|
73
73
|
|
74
|
+
`-m` - for correct work with Rails 5 specify a migration version like `squasher -m 5.0 ...`
|
75
|
+
|
74
76
|
## Requirements
|
75
77
|
|
76
78
|
It works and was tested on Ruby 2.0+ and Rails 3.1+. It also requires a valid development configuration in `config/database.yml` and using Ruby format in `db/schema.rb` (default Rails use-case).
|
77
79
|
If an old migration inserted data (created ActiveRecord model records) you will lose this code in the squashed migration, **BUT** `squasher` will ask you to leave a tmp database which will have all data that was inserted while migrating. Using this database you could add that data as another migration, or into `config/seed.rb` (the expected place for this stuff).
|
78
80
|
|
79
81
|
## Changelog
|
82
|
+
- 0.4.0
|
83
|
+
- Support rails versioned migrations which were introduced in Rails 5
|
84
|
+
- 0.3.1
|
85
|
+
- fix init migration generation
|
80
86
|
- 0.3.0
|
81
87
|
- **rails engines support** ([@JakeTheSnake3p0](https://github.com/JakeTheSnake3p0))
|
82
88
|
- move messages from JSON file to YAML
|
data/lib/squasher/config.rb
CHANGED
@@ -4,7 +4,7 @@ require 'erb'
|
|
4
4
|
|
5
5
|
module Squasher
|
6
6
|
class Config
|
7
|
-
OPTIONS = [:d, :r, :e].freeze
|
7
|
+
OPTIONS = [:d, :r, :e, :m].freeze
|
8
8
|
|
9
9
|
module Render
|
10
10
|
extend self
|
@@ -35,7 +35,7 @@ module Squasher
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
attr_reader :schema_file
|
38
|
+
attr_reader :schema_file, :migration_version
|
39
39
|
|
40
40
|
def initialize
|
41
41
|
@root_path = Dir.pwd.freeze
|
@@ -56,6 +56,9 @@ module Squasher
|
|
56
56
|
else
|
57
57
|
Squasher.error(:multi_dummy_case, base: base)
|
58
58
|
end
|
59
|
+
elsif key == :m
|
60
|
+
Squasher.error(:invalid_migration_version, value: value) unless value.to_s =~ /\A\d.\d\z/
|
61
|
+
@migration_version = "[#{value}]"
|
59
62
|
else
|
60
63
|
@flags << key
|
61
64
|
end
|
data/lib/squasher/messages.yml
CHANGED
@@ -23,8 +23,10 @@ usage:
|
|
23
23
|
- " :yellow<-d> => execute in :blue<`dry`> mode - test a squashing process without removing old migrations"
|
24
24
|
- " :yellow<-r> => reuse a database from the previous squashing"
|
25
25
|
- " :yellow<-e> [dummy-root] => execute in :blue<`engine`> mode - requires a dummy app"
|
26
|
+
- " :yellow<-m> 5.0 => specify the rails migration version (added in Rails 5)"
|
26
27
|
wrong_option: "You provided a wrong option :red<%{arg}>\n\n"
|
27
28
|
invalid_param: "You provided a wrong param :red<%{arg}>\n\n"
|
28
29
|
dry_mode_finished: "The `dry` mode is finished. Below the init schema's content:"
|
29
30
|
cannot_find_dummy: "Squasher can't find a dummy app inside :yellow<%{base}>"
|
30
31
|
multi_dummy_case: "Squasher found a few config/application.rb inside :yellow<%{base}>. Please specify the path more precisely"
|
32
|
+
invalid_migration_version: The provided rails migration version `%{value}` is invalid. It should be like `5.0`
|
data/spec/lib/config_spec.rb
CHANGED
@@ -55,4 +55,11 @@ describe Squasher::Config do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
specify { expect(config.migration_file(1230, :sample)).to eq(File.join(fake_root, 'db', 'migrate', '1230_sample.rb')) }
|
58
|
+
|
59
|
+
specify "generate versioned migrations" do
|
60
|
+
config = Squasher::Config.new
|
61
|
+
config.set(:m, '5.1')
|
62
|
+
content = Squasher::Render.render(:init_schema, config)
|
63
|
+
expect(content).to include('ActiveRecord::Migration[5.1]')
|
64
|
+
end
|
58
65
|
end
|
data/squasher.gemspec
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
2
|
|
3
3
|
lib = File.expand_path('../lib', __FILE__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "squasher"
|
8
|
-
spec.version = "0.
|
8
|
+
spec.version = "0.4.0"
|
9
9
|
spec.authors = ["Sergey Pchelintsev"]
|
10
|
-
spec.email = ["
|
10
|
+
spec.email = ["linz.sergey@gmail.com"]
|
11
11
|
spec.description = %q{Squash your old migrations}
|
12
12
|
spec.summary = %q{Squash your old migrations}
|
13
13
|
spec.homepage = "https://github.com/jalkoby/squasher"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squasher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Pchelintsev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 3.3.0
|
55
55
|
description: Squash your old migrations
|
56
56
|
email:
|
57
|
-
-
|
57
|
+
- linz.sergey@gmail.com
|
58
58
|
executables:
|
59
59
|
- squasher
|
60
60
|
extensions: []
|