squasher 0.5.0 → 0.5.1
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/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
|