squasher 0.5.0 → 0.5.1
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 -4
- data/lib/squasher.rb +6 -1
- data/lib/squasher/version.rb +1 -1
- data/lib/squasher/worker.rb +1 -1
- data/spec/lib/squasher_spec.rb +36 -0
- data/spec/spec_helper.rb +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d724bebcea027694c4fd7ae07faefc4e640cd9d
|
4
|
+
data.tar.gz: d7b96e31bb8f2c6bf26ffbad436502e1763a27cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 576496807d697dfaf1498c6fc63f4b743a5c663efb1559ed477bae63f1b5ad7b9ee9722244fdc2cd2e7b07ee014ec6eba2f7021b56b4f5c9da1b9bff4876861d
|
7
|
+
data.tar.gz: 462a6477e481b454d5eac1f723a46a37cabb4893dd63b774c34582c2f8293d89aa48c24fef88c696831d0ed6f5e34f454e3ddfc15cb82ac5df6b28fbf476e7f2
|
data/README.md
CHANGED
@@ -59,19 +59,19 @@ You can tell `squasher` a more detailed date, for example:
|
|
59
59
|
|
60
60
|
### Options
|
61
61
|
|
62
|
-
`-d` - execute in **dry** mode - test a squashing process without deleting old migrations. The final output will be
|
62
|
+
`-d/--dry` - execute in **dry** mode - test a squashing process without deleting old migrations. The final output will be
|
63
63
|
printed in the console.
|
64
64
|
|
65
|
-
`-r` - reuse a database from previous squashing process. The option can be used in the next cases:
|
65
|
+
`-r/--reuse` - reuse a database from previous squashing process. The option can be used in the next cases:
|
66
66
|
- you've run squasher in **dry** mode before and there were no errors
|
67
67
|
- you're squashing migrations gradually. For example, you want to squash migrations from 2013 till 2015, but the
|
68
68
|
process breaks in a migration from 2014. In this situation you squash till 2014, save the squasher's
|
69
69
|
database at the end, make a patch in the broken migration and run again the suite with `-r` option. As the result
|
70
70
|
squasher will not need to create the db schema and all data from the previous migrations will be there.
|
71
71
|
|
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
|
72
|
+
`-e/--engine` - 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 --engine ../my-engine-app 2016`
|
73
73
|
|
74
|
-
`-m` - for correct work with Rails 5 specify a migration version like `squasher -m 5.0 ...`
|
74
|
+
`-m/--migration` - for correct work with Rails 5 specify a migration version like `squasher -m 5.0 ...`
|
75
75
|
|
76
76
|
## Requirements
|
77
77
|
|
@@ -79,6 +79,10 @@ It works and was tested on Ruby 2.0+ and Rails 3.1+. It also requires a valid de
|
|
79
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).
|
80
80
|
|
81
81
|
## Changelog
|
82
|
+
- 0.5.1
|
83
|
+
- Fix work on Windows machines ([@tobmatth](https://github.com/tobmatth))
|
84
|
+
- 0.5.0
|
85
|
+
- Rework command line integration. Fix clean process with Rails 5
|
82
86
|
- 0.4.0
|
83
87
|
- Support rails versioned migrations which were introduced in Rails 5
|
84
88
|
- 0.3.1
|
data/lib/squasher.rb
CHANGED
@@ -26,7 +26,8 @@ module Squasher
|
|
26
26
|
def rake(command, description = nil)
|
27
27
|
tell(description) if description
|
28
28
|
config.in_app_root do
|
29
|
-
|
29
|
+
env = { 'RAILS_ENV' => 'development', 'DISABLE_DATABASE_ENVIRONMENT_CHECK' => '1' }
|
30
|
+
system(env, "bundle exec rake #{ command }")
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
@@ -39,6 +40,10 @@ module Squasher
|
|
39
40
|
message = messages.fetch(key.to_s)
|
40
41
|
message = message.join("\n") if message.is_a?(Array)
|
41
42
|
message = colorize(message)
|
43
|
+
print(message, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
def print(message, options = {})
|
42
47
|
puts message % options
|
43
48
|
end
|
44
49
|
|
data/lib/squasher/version.rb
CHANGED
data/lib/squasher/worker.rb
CHANGED
@@ -18,7 +18,7 @@ module Squasher
|
|
18
18
|
result = under_squash_env do
|
19
19
|
if Squasher.config.set?(:dry)
|
20
20
|
Squasher.tell(:dry_mode_finished)
|
21
|
-
|
21
|
+
Squasher.print(Render.render(:init_schema, config))
|
22
22
|
else
|
23
23
|
path = config.migration_file(finish_timestamp, :init_schema)
|
24
24
|
File.open(path, 'wb') { |io| io << Render.render(:init_schema, config) }
|
data/spec/lib/squasher_spec.rb
CHANGED
@@ -10,4 +10,40 @@ describe Squasher do
|
|
10
10
|
Squasher.squash(input, [])
|
11
11
|
end
|
12
12
|
end
|
13
|
+
|
14
|
+
context '.rake' do
|
15
|
+
before do
|
16
|
+
allow_any_instance_of(Object).to receive(:system)
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when given a description' do
|
20
|
+
it 'outputs it' do
|
21
|
+
expect(Squasher).to receive(:tell).with('description')
|
22
|
+
Squasher.rake('db:migrate', 'description')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'switches to the app root before running a given command' do
|
27
|
+
allow(Dir).to receive(:pwd) { fake_root }
|
28
|
+
expect(Dir).to receive(:chdir).with(fake_root)
|
29
|
+
Squasher.rake('db:migrate')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'runs a given command' do
|
33
|
+
expect_any_instance_of(Object).to receive(:system).with(anything, /db:migrate/)
|
34
|
+
Squasher.rake('db:migrate')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'sets the Rails environment to development' do
|
38
|
+
expect_any_instance_of(Object).to receive(:system)
|
39
|
+
.with(hash_including('RAILS_ENV' => 'development'), /db:migrate/)
|
40
|
+
Squasher.rake('db:migrate')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'disables database environment check' do
|
44
|
+
expect_any_instance_of(Object).to receive(:system)
|
45
|
+
.with(hash_including('DISABLE_DATABASE_ENVIRONMENT_CHECK' => '1'), /db:migrate/)
|
46
|
+
Squasher.rake('db:migrate')
|
47
|
+
end
|
48
|
+
end
|
13
49
|
end
|
data/spec/spec_helper.rb
CHANGED
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.5.
|
4
|
+
version: 0.5.1
|
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-09-
|
11
|
+
date: 2017-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|