activerecord_sane_schema_dumper 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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