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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0a3ab715250150b68f6f394053ef5da57c9e596
4
- data.tar.gz: 8762689073395c68326f974953dc0c1a06654b41
3
+ metadata.gz: 93d6a00e2896f8ff62dff58d34e84ea54f71a890
4
+ data.tar.gz: 839677fa461fd1ba75b13167bb6ef9cd703a4fc7
5
5
  SHA512:
6
- metadata.gz: 2ae60194b404d8da358d456025a155fe568f02c5c06f97695a4c8af7d642c8e636eab5c7a6bccd47d6d6d19905dff9f660d9996eda847a148d4ea0a6f386b105
7
- data.tar.gz: f00e32d3da594094a77728b88a63a6b24bef27a3374eaaa20cd61ae72de94b0e8f7337e3d4e86513b4957b190c239028ffe2822399f157ab34a9fca96da43559
6
+ metadata.gz: ccac16c207e2766dffb85da326f78aaebd47fd8d7957ccb66f5fc4e8951f3014ae44a9cd952607d10aa00ffe84aecfc01a337ea9caa85cb33006f06809067f0f
7
+ data.tar.gz: 4cdabf8e177ce1c108c63410005d9aa27eac6a2faab33f39477355e9db8f475e6fe029a32e2329e50b23d4f86596280dec9378406b227930c2341034dcecf29e
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -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
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1.5
5
+
6
+ script: "echo 'DO IT' && bundle exec rake spec"
7
+
8
+ before_script:
9
+ - psql -c 'create database activerecord_sane_schema_dumper_test;' -U postgres
data/README.md CHANGED
@@ -5,13 +5,16 @@
5
5
  contain any useless/harmful whitespace column alignment.
6
6
 
7
7
  [![Gem Version](http://img.shields.io/gem/v/activerecord_sane_schema_dumper.svg)](https://rubygems.org/gems/activerecord_sane_schema_dumper)
8
+ [![Build Status](http://img.shields.io/travis/mirego/activerecord_sane_schema_dumper.svg)](https://travis-ci.org/mirego/activerecord_sane_schema_dumper)
8
9
 
9
10
  ## Installation
10
11
 
11
- Add this line to your application's Gemfile:
12
+ Add this line to your applications Gemfile in your `development` group:
12
13
 
13
14
  ```ruby
14
- gem 'activerecord_sane_schema_dumper'
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/activerecord_json_validator/blob/master/LICENSE.md) file.
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
@@ -1 +1,10 @@
1
+ require 'rake'
1
2
  require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ task default: :spec
6
+
7
+ desc 'Run all specs'
8
+ RSpec::Core::RakeTask.new(:spec) do |task|
9
+ task.pattern = 'spec/**/*_spec.rb'
10
+ end
@@ -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', '> 4', '< 5'
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::SaneSchemaDumper
5
- class Railtie < Rails::Railtie
6
- initializer 'activerecord_sane_schema_dumper.active_record' do
7
- ActiveSupport.on_load :active_record do
8
- ActiveRecord::SchemaDumper.send(:include, ActiveRecord::SaneSchemaDumper::Extension)
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
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module SaneSchemaDumper
3
- VERSION = '0.1'.freeze
3
+ VERSION = '0.2'.freeze
4
4
  end
5
5
  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
@@ -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.1'
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-14 00:00:00.000000000 Z
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