squasher 0.6.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 70564980ec4cb7bc4cad405cd0d173c46bc99f2f
4
- data.tar.gz: '051554966cd007618ab03295579a2a1669c449b5'
3
+ metadata.gz: 58e6842c01fedd8c3d14952de14c3cdfe58dcbeb
4
+ data.tar.gz: c2ec95df798554cc3af0d238ffd5178cf980e789
5
5
  SHA512:
6
- metadata.gz: 34ebbe7ee512b65417099403b27085cb9ea5c8e329f674fec89dfe644edcce9cd82b915a2cacbef6ff516afb368e26b957abe4a9a59dd66aee5c1ce4c52cad30
7
- data.tar.gz: 1a1ce4239174e3b871d45a1a5ad7d3997bfa48da3e540418bdcce852208f8f099711a0ecbb586a22beb18dba2c7b58e5dcc48efb02547015f62d21c05e7af54c
6
+ metadata.gz: 63bd6a06a4b0e3c241d097ce3b96d84d908f3d0ee5ca84aaa8a06139b6b81864b4bb167f8aca9a8134707da98e9bb6ee8cc27d8c8b30be9225192764ae38fb78
7
+ data.tar.gz: b398fc389ccb9b873e11f75ce94512ae7678c1d94ac47d2bae63ae0415e3d2b3075403eee9cafcb987757d2669f83c95677aeef9278d242e68c6bc4aafd0da4e
@@ -1,3 +1,5 @@
1
+ - 0.6.1
2
+ - Escape regexp in sql mode ([@mpospelov](https://github.com/mpospelov))
1
3
  - 0.6.0
2
4
  - Support apps with sql schema ([@mpospelov](https://github.com/mpospelov))
3
5
  - 0.5.1
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Code Climate](https://codeclimate.com/github/jalkoby/squasher.svg)](https://codeclimate.com/github/jalkoby/squasher)
5
5
  [![Gem Version](https://badge.fury.io/rb/squasher.svg)](http://badge.fury.io/rb/squasher)
6
6
 
7
- Squasher compresses old migrations in a Rails application. If you work on a big project with lots of migrations, every `rake db:migrate` might take a few seconds, or creating of a new database might take a few minutes. That's because Rails loads all those migration files. Squasher removes all the migrations and creates a single migration with the final database state of the specified date (the new migration will look like a schema).
7
+ Squasher compresses old ActiveRecord migrations. If you work on a big project with lots of migrations, every `rake db:migrate` might take a few seconds, or creating of a new database might take a few minutes. That's because ActiveRecord loads all those migration files. Squasher removes all the migrations and creates a single migration with the final database state of the specified date (the new migration will look like a schema).
8
8
 
9
9
  ## Installation
10
10
 
@@ -19,7 +19,7 @@ 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.6.0'
23
23
  gem 'capistrano'
24
24
  gem 'rubocop'
25
25
  end
@@ -39,23 +39,24 @@ To integrate `squasher` with your app even more do the below:
39
39
 
40
40
  Suppose your application was created a few years ago. `%app_root%/db/migrate` folder looks like this:
41
41
  ```bash
42
- 2009...._first_migration.rb
43
- 2009...._another_migration.rb
42
+ 2012...._first_migration.rb
43
+ 2012...._another_migration.rb
44
44
  # and a lot of other files
45
- 2011...._adding_model_foo.rb
45
+ 2013...._adding_model_foo.rb
46
46
  # few years later
47
- 2013...._removing_model_foo.rb
47
+ 2016...._removing_model_foo.rb
48
48
  # and so on
49
49
  ```
50
50
 
51
- Storing these atomic changes over time is painful and useless. It's time to archive all this stuff. Once you install the gem you can run the `squasher` command.
51
+ Storing these atomic changes over time is painful and useless. It's time to archive this history. Once you install the gem you can run the `squasher` command. For example, you want to compress all migrations which were created prior to the year 2017:
52
52
 
53
- $ squasher 2014 #compress all migrations which were created prior to the year 2014
53
+ $ squasher 2017 # rails 3 & 4
54
+ $ squasher 2017 -m 5.0 # rails 5+
54
55
 
55
56
  You can tell `squasher` a more detailed date, for example:
56
57
 
57
- $ squasher 2013/12 #prior to December 2013
58
- $ squasher 2013/12/19 #prior to 19 December 2013
58
+ $ squasher 2016/12 # prior to December 2016
59
+ $ squasher 2016/12/19 # prior to 19 December 2016
59
60
 
60
61
  ### Options
61
62
 
@@ -69,10 +70,12 @@ Run `squasher -h` or just `squasher` to see how you can use squasher:
69
70
 
70
71
  ## Requirements
71
72
 
72
- It works and was tested on Ruby 2.0+ and Rails 3.1+. It also requires a valid development configuration in `config/database.yml`.
73
+ It works and was tested on Ruby 2.0+ and ActiveRecord 3.1+. It also requires a valid development configuration in `config/database.yml`.
73
74
  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).
74
75
 
75
- ## (Changelog)[CHANGELOG.md]
76
+ ## Changelog
77
+
78
+ All changes are located in [the changelog file](CHANGELOG.md) with contribution notes
76
79
 
77
80
  ## Contributing
78
81
 
@@ -30,7 +30,7 @@ module Squasher
30
30
  private
31
31
 
32
32
  def stream_structure(stream)
33
- yield 'execute <<-SQL'
33
+ yield 'execute %q{'
34
34
  skip_mode = false
35
35
  ignored_table = ['ar_internal_metadata', 'schema_migrations']
36
36
  stream.each_line do |line|
@@ -43,7 +43,7 @@ module Squasher
43
43
 
44
44
  yield line.gsub(/\A\s{,2}(.*)\s+\z/, '\1')
45
45
  end
46
- yield 'SQL'
46
+ yield '}'
47
47
  end
48
48
 
49
49
  def stream_schema(stream)
@@ -1,3 +1,3 @@
1
1
  module Squasher
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -10,7 +10,8 @@ CREATE TABLE managers (
10
10
  email character varying,
11
11
  password_digest character varying,
12
12
  created_at timestamp without time zone NOT NULL,
13
- updated_at timestamp without time zone NOT NULL
13
+ updated_at timestamp without time zone NOT NULL,
14
+ CONSTRAINT email_format CHECK (email ~* '^.+@.+\..+')
14
15
  );
15
16
 
16
17
  CREATE TABLE offices (
@@ -72,10 +72,10 @@ describe Squasher::Worker do
72
72
  expect(File.exists?(new_migration_path)).to be_truthy
73
73
  File.open(new_migration_path) do |stream|
74
74
  content = stream.read
75
- expect(content).to eq(<<-RUBY
75
+ expect(content.strip).to eq(%q{
76
76
  class InitSchema < ActiveRecord::Migration
77
77
  def up
78
- execute <<-SQL
78
+ execute %q{
79
79
  CREATE TABLE cities (
80
80
  id integer NOT NULL,
81
81
  name character varying,
@@ -87,7 +87,8 @@ class InitSchema < ActiveRecord::Migration
87
87
  email character varying,
88
88
  password_digest character varying,
89
89
  created_at timestamp without time zone NOT NULL,
90
- updated_at timestamp without time zone NOT NULL
90
+ updated_at timestamp without time zone NOT NULL,
91
+ CONSTRAINT email_format CHECK (email ~* '^.+@.+\..+')
91
92
  );
92
93
  CREATE TABLE offices (
93
94
  id integer NOT NULL,
@@ -101,14 +102,14 @@ class InitSchema < ActiveRecord::Migration
101
102
  created_at timestamp without time zone NOT NULL,
102
103
  updated_at timestamp without time zone NOT NULL
103
104
  );
104
- SQL
105
+ }
105
106
  end
106
107
 
107
108
  def down
108
109
  raise ActiveRecord::IrreversibleMigration, "The initial migration is not revertable"
109
110
  end
110
111
  end
111
- RUBY
112
+ }.strip
112
113
  )
113
114
  end
114
115
  end
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.6.0
4
+ version: 0.6.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-07 00:00:00.000000000 Z
11
+ date: 2018-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.6.11
115
+ rubygems_version: 2.6.13
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: Squash your old migrations