activerecord_sane_schema_dumper 0.1 → 0.2
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/.rspec +1 -0
- data/.rubocop.yml +50 -0
- data/.travis.yml +9 -0
- data/README.md +36 -3
- data/Rakefile +9 -0
- data/activerecord_sane_schema_dumper.gemspec +5 -1
- data/lib/active_record/sane_schema_dumper/railtie.rb +7 -5
- data/lib/active_record/sane_schema_dumper/version.rb +1 -1
- data/spec/activerecord_sane_schema_dumper_spec.rb +61 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/support/macros/database_macros.rb +13 -0
- metadata +70 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93d6a00e2896f8ff62dff58d34e84ea54f71a890
|
4
|
+
data.tar.gz: 839677fa461fd1ba75b13167bb6ef9cd703a4fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccac16c207e2766dffb85da326f78aaebd47fd8d7957ccb66f5fc4e8951f3014ae44a9cd952607d10aa00ffe84aecfc01a337ea9caa85cb33006f06809067f0f
|
7
|
+
data.tar.gz: 4cdabf8e177ce1c108c63410005d9aa27eac6a2faab33f39477355e9db8f475e6fe029a32e2329e50b23d4f86596280dec9378406b227930c2341034dcecf29e
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
AllCops:
|
2
|
+
Include:
|
3
|
+
- Rakefile
|
4
|
+
|
5
|
+
Documentation:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Encoding:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
LineLength:
|
12
|
+
Max: 200
|
13
|
+
|
14
|
+
AccessModifierIndentation:
|
15
|
+
EnforcedStyle: outdent
|
16
|
+
|
17
|
+
IfUnlessModifier:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
CaseIndentation:
|
21
|
+
IndentWhenRelativeTo: case
|
22
|
+
IndentOneStep: true
|
23
|
+
|
24
|
+
MethodLength:
|
25
|
+
CountComments: false
|
26
|
+
Max: 20
|
27
|
+
|
28
|
+
SignalException:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
ColonMethodCall:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
AsciiComments:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
Lambda:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
RegexpLiteral:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
RedundantBegin:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
AssignmentInCondition:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
Metrics/AbcSize:
|
50
|
+
Enabled: false
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -5,13 +5,16 @@
|
|
5
5
|
contain any useless/harmful whitespace column alignment.
|
6
6
|
|
7
7
|
[](https://rubygems.org/gems/activerecord_sane_schema_dumper)
|
8
|
+
[](https://travis-ci.org/mirego/activerecord_sane_schema_dumper)
|
8
9
|
|
9
10
|
## Installation
|
10
11
|
|
11
|
-
Add this line to your application
|
12
|
+
Add this line to your application’s Gemfile in your `development` group:
|
12
13
|
|
13
14
|
```ruby
|
14
|
-
|
15
|
+
group :development do
|
16
|
+
gem 'activerecord_sane_schema_dumper'
|
17
|
+
end
|
15
18
|
```
|
16
19
|
|
17
20
|
## Usage
|
@@ -27,6 +30,7 @@ do not try to stay aligned).
|
|
27
30
|
### Before
|
28
31
|
|
29
32
|
```ruby
|
33
|
+
# db/schema.rb
|
30
34
|
create_table "event_data", force: true do |t|
|
31
35
|
t.string "event_external_id"
|
32
36
|
t.json "data", default: {}
|
@@ -35,9 +39,25 @@ create_table "event_data", force: true do |t|
|
|
35
39
|
end
|
36
40
|
```
|
37
41
|
|
42
|
+
But what happens if I remove the `data` column and regenerate `db/schema.rb`? Here’s the resulting diff:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
create_table "event_data", force: true do |t|
|
46
|
+
t.string "event_external_id"
|
47
|
+
- t.datetime "created_at", null: false
|
48
|
+
- t.datetime "updated_at", null: false
|
49
|
+
- t.json "data", default: {}
|
50
|
+
+ t.datetime "created_at", null: false
|
51
|
+
+ t.datetime "updated_at", null: false
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
We’ve removed the `data` column but `created_at` and `updated_at` lines are affected too. This is not good.
|
56
|
+
|
38
57
|
### After
|
39
58
|
|
40
59
|
```ruby
|
60
|
+
# db/schema.rb
|
41
61
|
create_table "event_data", force: true do |t|
|
42
62
|
t.string "event_external_id"
|
43
63
|
t.json "data", default: {}
|
@@ -46,9 +66,22 @@ create_table "event_data", force: true do |t|
|
|
46
66
|
end
|
47
67
|
```
|
48
68
|
|
69
|
+
If I remove the `data` column and regenerate the `db/schema.rb` file, only the relevant line will be touched:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
create_table "event_data", force: true do |t|
|
73
|
+
t.string "event_external_id"
|
74
|
+
- t.json "data", default: {}
|
75
|
+
t.datetime "created_at", null: false
|
76
|
+
t.datetime "updated_at", null: false
|
77
|
+
end
|
78
|
+
```
|
79
|
+
|
80
|
+
One removed column, one affected line in the table definition. Much better.
|
81
|
+
|
49
82
|
## License
|
50
83
|
|
51
|
-
`ActiveRecord::SaneSchemaDumper` is © 2014 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/
|
84
|
+
`ActiveRecord::SaneSchemaDumper` is © 2014 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/activerecord_sane_schema_dumper/blob/master/LICENSE.md) file.
|
52
85
|
|
53
86
|
## About Mirego
|
54
87
|
|
data/Rakefile
CHANGED
@@ -20,6 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
22
22
|
spec.add_development_dependency 'rake', '~> 10.0'
|
23
|
+
spec.add_development_dependency 'rubocop', '0.27.1'
|
24
|
+
spec.add_development_dependency 'phare'
|
25
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
26
|
+
spec.add_development_dependency 'pg'
|
23
27
|
|
24
|
-
spec.add_dependency 'rails', '
|
28
|
+
spec.add_dependency 'rails', '>= 4', '< 5'
|
25
29
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'activerecord_sane_schema_dumper'
|
2
2
|
require 'rails'
|
3
3
|
|
4
|
-
module ActiveRecord
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
module ActiveRecord
|
5
|
+
module SaneSchemaDumper
|
6
|
+
class Railtie < Rails::Railtie
|
7
|
+
initializer 'activerecord_sane_schema_dumper.active_record' do
|
8
|
+
ActiveSupport.on_load :active_record do
|
9
|
+
ActiveRecord::SchemaDumper.send(:include, ActiveRecord::SaneSchemaDumper::Extension)
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveRecord::SaneSchemaDumper do
|
4
|
+
before do
|
5
|
+
run_migration do
|
6
|
+
create_table(:users, force: true) do |t|
|
7
|
+
t.string :name, limit: 100
|
8
|
+
t.text :profile
|
9
|
+
t.datetime :created_at, null: false
|
10
|
+
t.datetime :updated_at, null: false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:stream) { StringIO.new }
|
16
|
+
let(:output) do
|
17
|
+
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
|
18
|
+
stream.rewind
|
19
|
+
stream.read
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with SaneSchemaDumper behavior' do
|
23
|
+
before do
|
24
|
+
ActiveRecord::SchemaDumper.send(:include, ActiveRecord::SaneSchemaDumper::Extension)
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:expected_table) do
|
28
|
+
<<EOF
|
29
|
+
create_table "users", force: true do |t|
|
30
|
+
t.string "name", limit: 100
|
31
|
+
t.text "profile"
|
32
|
+
t.datetime "created_at", null: false
|
33
|
+
t.datetime "updated_at", null: false
|
34
|
+
end
|
35
|
+
EOF
|
36
|
+
end
|
37
|
+
|
38
|
+
it { expect(output).to include(expected_table) }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'without SaneSchemaDumper behavior' do
|
42
|
+
before do
|
43
|
+
allow_any_instance_of(ActiveRecord::SchemaDumper).to receive(:table) do |instance, *args|
|
44
|
+
instance.send :table_without_sane_alignment, *args
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
let(:expected_table) do
|
49
|
+
<<EOF
|
50
|
+
create_table "users", force: true do |t|
|
51
|
+
t.string "name", limit: 100
|
52
|
+
t.text "profile"
|
53
|
+
t.datetime "created_at", null: false
|
54
|
+
t.datetime "updated_at", null: false
|
55
|
+
end
|
56
|
+
EOF
|
57
|
+
end
|
58
|
+
|
59
|
+
it { expect(output).to include(expected_table) }
|
60
|
+
end
|
61
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
2
|
+
|
3
|
+
# RSpec
|
4
|
+
require 'rspec'
|
5
|
+
|
6
|
+
# Database
|
7
|
+
require 'pg'
|
8
|
+
|
9
|
+
# ActiveRecord::SaneSchemaDumper
|
10
|
+
require 'activerecord_sane_schema_dumper'
|
11
|
+
|
12
|
+
# Require our macros and extensions
|
13
|
+
Dir[File.expand_path('../../spec/support/macros/**/*.rb', __FILE__)].map(&method(:require))
|
14
|
+
|
15
|
+
RSpec.configure do |config|
|
16
|
+
# Include our macros
|
17
|
+
config.include DatabaseMacros
|
18
|
+
|
19
|
+
config.before :each do
|
20
|
+
ActiveRecord::Base.establish_connection(
|
21
|
+
adapter: 'postgresql',
|
22
|
+
database: 'activerecord_sane_schema_dumper_test',
|
23
|
+
user: 'postgres',
|
24
|
+
schema_search_path: 'public'
|
25
|
+
)
|
26
|
+
|
27
|
+
ActiveRecord::Base.logger = ActiveRecord::Migration.verbose = false
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module DatabaseMacros
|
2
|
+
# Run migrations in the test database
|
3
|
+
def run_migration(&block)
|
4
|
+
# Create a new migration class
|
5
|
+
klass = Class.new(ActiveRecord::Migration)
|
6
|
+
|
7
|
+
# Create a new `up` that executes the argument
|
8
|
+
klass.send(:define_method, :up) { instance_exec(&block) }
|
9
|
+
|
10
|
+
# Create a new instance of it and execute its `up` method
|
11
|
+
klass.new.up
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord_sane_schema_dumper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,11 +38,67 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.27.1
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.27.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: phare
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pg
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
41
97
|
- !ruby/object:Gem::Dependency
|
42
98
|
name: rails
|
43
99
|
requirement: !ruby/object:Gem::Requirement
|
44
100
|
requirements:
|
45
|
-
- - "
|
101
|
+
- - ">="
|
46
102
|
- !ruby/object:Gem::Version
|
47
103
|
version: '4'
|
48
104
|
- - "<"
|
@@ -52,7 +108,7 @@ dependencies:
|
|
52
108
|
prerelease: false
|
53
109
|
version_requirements: !ruby/object:Gem::Requirement
|
54
110
|
requirements:
|
55
|
-
- - "
|
111
|
+
- - ">="
|
56
112
|
- !ruby/object:Gem::Version
|
57
113
|
version: '4'
|
58
114
|
- - "<"
|
@@ -67,6 +123,9 @@ extensions: []
|
|
67
123
|
extra_rdoc_files: []
|
68
124
|
files:
|
69
125
|
- ".gitignore"
|
126
|
+
- ".rspec"
|
127
|
+
- ".rubocop.yml"
|
128
|
+
- ".travis.yml"
|
70
129
|
- Gemfile
|
71
130
|
- LICENSE.md
|
72
131
|
- README.md
|
@@ -76,6 +135,9 @@ files:
|
|
76
135
|
- lib/active_record/sane_schema_dumper/railtie.rb
|
77
136
|
- lib/active_record/sane_schema_dumper/version.rb
|
78
137
|
- lib/activerecord_sane_schema_dumper.rb
|
138
|
+
- spec/activerecord_sane_schema_dumper_spec.rb
|
139
|
+
- spec/spec_helper.rb
|
140
|
+
- spec/support/macros/database_macros.rb
|
79
141
|
homepage: https://github.com/mirego/activerecord_sane_schema_dumper
|
80
142
|
licenses:
|
81
143
|
- BSD 3-Clause
|
@@ -101,4 +163,7 @@ signing_key:
|
|
101
163
|
specification_version: 4
|
102
164
|
summary: ActiveRecord::SaneSchemaDumper removes useless/harmful whitespace from Rails’
|
103
165
|
generated `db/schema.rb` files.
|
104
|
-
test_files:
|
166
|
+
test_files:
|
167
|
+
- spec/activerecord_sane_schema_dumper_spec.rb
|
168
|
+
- spec/spec_helper.rb
|
169
|
+
- spec/support/macros/database_macros.rb
|