legacy_column 0.1.0
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 +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +58 -0
- data/README.md +41 -0
- data/Rakefile +6 -0
- data/init.rb +3 -0
- data/legacy_column.gemspec +28 -0
- data/lib/legacy_column.rb +37 -0
- data/lib/legacy_column/railtie.rb +19 -0
- data/lib/legacy_column/version.rb +3 -0
- data/spec/db/database.yml +21 -0
- data/spec/db/schema.rb +9 -0
- data/spec/db/test.sqlite3 +0 -0
- data/spec/legacy_column_spec.rb +53 -0
- data/spec/spec_helper.rb +26 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4f9f7f8aae1c7e54444ac728bd65800583b8dba9c0ced595cebfe6ce61609bc5
|
4
|
+
data.tar.gz: 524f49a0d6a9e99cf75eda7274d044597f11c51815756236c8b66f75aaf0915f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 263844b58944bf35870e664e5cb4a4e3ec45c1ad055baf16f8e94c7c2c13cae382d4c1c829f59f7e9f832c217960a17d910d77e7da7332842532fa978b04a107
|
7
|
+
data.tar.gz: fd37196e959a15199e2c64feb56d03f13c14a3cab9f9858b8507048c9a4a0a78274cb8e3f864281e9a1dfbbf44e492c8dfe400fcb35911b150ac6d467661a9cf
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
legacy_column (0.1.0)
|
5
|
+
activerecord (>= 4.0.0)
|
6
|
+
activesupport (>= 4.0.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
activemodel (6.0.3.2)
|
12
|
+
activesupport (= 6.0.3.2)
|
13
|
+
activerecord (6.0.3.2)
|
14
|
+
activemodel (= 6.0.3.2)
|
15
|
+
activesupport (= 6.0.3.2)
|
16
|
+
activesupport (6.0.3.2)
|
17
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
18
|
+
i18n (>= 0.7, < 2)
|
19
|
+
minitest (~> 5.1)
|
20
|
+
tzinfo (~> 1.1)
|
21
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
22
|
+
concurrent-ruby (1.1.7)
|
23
|
+
diff-lcs (1.4.4)
|
24
|
+
i18n (1.8.5)
|
25
|
+
concurrent-ruby (~> 1.0)
|
26
|
+
minitest (5.14.1)
|
27
|
+
rake (13.0.1)
|
28
|
+
rspec (3.9.0)
|
29
|
+
rspec-core (~> 3.9.0)
|
30
|
+
rspec-expectations (~> 3.9.0)
|
31
|
+
rspec-mocks (~> 3.9.0)
|
32
|
+
rspec-core (3.9.2)
|
33
|
+
rspec-support (~> 3.9.3)
|
34
|
+
rspec-expectations (3.9.2)
|
35
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
36
|
+
rspec-support (~> 3.9.0)
|
37
|
+
rspec-mocks (3.9.1)
|
38
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
39
|
+
rspec-support (~> 3.9.0)
|
40
|
+
rspec-support (3.9.3)
|
41
|
+
sqlite3 (1.4.2)
|
42
|
+
thread_safe (0.3.6)
|
43
|
+
tzinfo (1.2.7)
|
44
|
+
thread_safe (~> 0.1)
|
45
|
+
zeitwerk (2.4.0)
|
46
|
+
|
47
|
+
PLATFORMS
|
48
|
+
ruby
|
49
|
+
|
50
|
+
DEPENDENCIES
|
51
|
+
bundler (~> 1.17)
|
52
|
+
legacy_column!
|
53
|
+
rake (~> 13.0.1)
|
54
|
+
rspec (~> 3.2)
|
55
|
+
sqlite3 (~> 1.4.2)
|
56
|
+
|
57
|
+
BUNDLED WITH
|
58
|
+
1.17.2
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
[](https://app.circleci.com/pipelines/github/logicalgroove/legacy_column)
|
2
|
+
[](https://img.shields.io/badge/License-MIT-yellowgreen.svg)
|
3
|
+
|
4
|
+
# LegacyColumn
|
5
|
+
|
6
|
+
A gem that will print a message if a developer is trying to use a column that is from a legacy system but has to stay there.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'legacy_column'
|
13
|
+
```
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
Just list the column names:
|
18
|
+
```ruby
|
19
|
+
legacy_column :old_email, :old_phone_number
|
20
|
+
```
|
21
|
+
|
22
|
+
A custom message can be added:
|
23
|
+
```ruby
|
24
|
+
legacy_column :old_email, :old_phone_number, message: 'Do not touch this!!!'
|
25
|
+
```
|
26
|
+
|
27
|
+
It will output something like this in rails logs:
|
28
|
+
|
29
|
+
```
|
30
|
+
Use of legacy column detected.
|
31
|
+
User => old_email
|
32
|
+
Do not touch this!!!
|
33
|
+
```
|
34
|
+
|
35
|
+
## Contributing
|
36
|
+
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
|
37
|
+
|
38
|
+
Please make sure to update tests as appropriate.
|
39
|
+
|
40
|
+
## License
|
41
|
+
[MIT](https://choosealicense.com/licenses/mit/)
|
data/Rakefile
ADDED
data/init.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "legacy_column/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "legacy_column"
|
8
|
+
spec.version = LegacyColumn::VERSION
|
9
|
+
spec.authors = ["Aleksander Lopez Yazikov"]
|
10
|
+
spec.email = ["webodessa@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Warning for your legacy columns.}
|
13
|
+
spec.description = %q{A gem that will print a message if a developer is trying to use a column that is from a legacy system but has to stay there.}
|
14
|
+
spec.homepage = "https://github.com/logicalgroove/legacy_column"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = Dir["{lib,spec}/**/*", "[A-Z]*", "init.rb"]
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.required_rubygems_version = ">= 1.3.4"
|
21
|
+
|
22
|
+
spec.add_dependency "activesupport", [">= 4.0.0"]
|
23
|
+
spec.add_dependency "activerecord", [">= 4.0.0"]
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.17"
|
25
|
+
spec.add_development_dependency "rake", "~> 13.0.1"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.2"
|
27
|
+
spec.add_development_dependency "sqlite3", "~> 1.4.2"
|
28
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# usage:
|
2
|
+
# include LegacyColumn
|
3
|
+
# legacy_column :pos_type, :pos_user, message: 'Stop what you doing!'
|
4
|
+
|
5
|
+
require "active_support/concern"
|
6
|
+
|
7
|
+
module LegacyColumn
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
included do
|
11
|
+
class_attribute :legacy_column_names, instance_writer: false, default: nil
|
12
|
+
class_attribute :legacy_column_message, instance_writer: false, default: nil
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
DEFAULT_MESSAGE = 'This column is set as legacy and should not be used anymore.'
|
17
|
+
|
18
|
+
def legacy_column(*columns, message:nil)
|
19
|
+
return unless columns
|
20
|
+
|
21
|
+
self.legacy_column_names = columns
|
22
|
+
self.legacy_column_message = message || DEFAULT_MESSAGE
|
23
|
+
|
24
|
+
send('before_validation', :legacy_column)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def legacy_column
|
29
|
+
legacy_column_names.each do |column|
|
30
|
+
if changed_attributes.keys.include? column.to_s
|
31
|
+
puts "\n\nUSE of legacy column detected.\n #{self.class} => #{column}\n #{legacy_column_message}\n\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
require "legacy_column/railtie"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module LegacyColumn
|
2
|
+
if defined?(Rails::Railtie)
|
3
|
+
require 'rails'
|
4
|
+
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
initializer 'legacy_column.extend_active_record' do
|
7
|
+
ActiveSupport.on_load(:active_record) do
|
8
|
+
LegacyColumn::Railtie.insert
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Railtie
|
15
|
+
def self.insert
|
16
|
+
ActiveRecord::Base.send(:include, LegacyColumn)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
sqlite:
|
2
|
+
adapter: sqlite
|
3
|
+
database: spec/db/test.sqlite
|
4
|
+
|
5
|
+
sqlite3:
|
6
|
+
adapter: sqlite3
|
7
|
+
database: spec/db/test.sqlite3
|
8
|
+
|
9
|
+
postgresql:
|
10
|
+
adapter: postgresql
|
11
|
+
username: postgres
|
12
|
+
password: postgres
|
13
|
+
database: nilify_blanks_plugin_test
|
14
|
+
min_messages: ERROR
|
15
|
+
|
16
|
+
mysql:
|
17
|
+
adapter: mysql
|
18
|
+
host: localhost
|
19
|
+
username: root
|
20
|
+
password:
|
21
|
+
database: nilify_blanks_plugin_test
|
data/spec/db/schema.rb
ADDED
Binary file
|
@@ -0,0 +1,53 @@
|
|
1
|
+
RSpec.describe LegacyColumn do
|
2
|
+
context 'default message' do
|
3
|
+
before do
|
4
|
+
class User < ActiveRecord::Base
|
5
|
+
legacy_column :old_email, :old_phone_number
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should recognize all legacy columns' do
|
10
|
+
expect(User.legacy_column_names).to eq([:old_email, :old_phone_number])
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should recognize default message' do
|
14
|
+
expect(User.legacy_column_message).to eq('This column is set as legacy and should not be used anymore.')
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'output' do
|
18
|
+
let(:user) { User.create }
|
19
|
+
|
20
|
+
it 'prints awesome things' do
|
21
|
+
expect {
|
22
|
+
user.update(old_email: 'something')
|
23
|
+
}.to output("\n\nUSE of legacy column detected.\n User => old_email\n This column is set as legacy and should not be used anymore.\n\n").to_stdout
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'custom message' do
|
29
|
+
before do
|
30
|
+
class User < ActiveRecord::Base
|
31
|
+
legacy_column :old_email, :old_phone_number, message: 'Dont do it!!!'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should recognize all legacy columns' do
|
36
|
+
expect(User.legacy_column_names).to eq([:old_email, :old_phone_number])
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should recognize default message' do
|
40
|
+
expect(User.legacy_column_message).to eq('Dont do it!!!')
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'output' do
|
44
|
+
let(:user) { User.create }
|
45
|
+
|
46
|
+
it 'prints awesome things' do
|
47
|
+
expect {
|
48
|
+
user.update(old_email: 'something')
|
49
|
+
}.to output("\n\nUSE of legacy column detected.\n User => old_email\n Dont do it!!!\n\n").to_stdout
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "rspec"
|
3
|
+
require "active_support"
|
4
|
+
require "active_record"
|
5
|
+
require "yaml"
|
6
|
+
|
7
|
+
config = YAML::load(IO.read(File.join(File.dirname(__FILE__), 'db', 'database.yml')))
|
8
|
+
ActiveRecord::Base.configurations = {'test' => config[ENV['DB'] || 'sqlite3']}
|
9
|
+
ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test'])
|
10
|
+
|
11
|
+
# Load Test Schema into the Database
|
12
|
+
load(File.dirname(__FILE__) + "/db/schema.rb")
|
13
|
+
|
14
|
+
require File.dirname(__FILE__) + '/../init'
|
15
|
+
|
16
|
+
RSpec.configure do |config|
|
17
|
+
# Enable flags like --only-failures and --next-failure
|
18
|
+
config.example_status_persistence_file_path = ".rspec_status"
|
19
|
+
|
20
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
21
|
+
config.disable_monkey_patching!
|
22
|
+
|
23
|
+
config.expect_with :rspec do |c|
|
24
|
+
c.syntax = :expect
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: legacy_column
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aleksander Lopez Yazikov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-08-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.17'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.17'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 13.0.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 13.0.1
|
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.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.4.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.4.2
|
97
|
+
description: A gem that will print a message if a developer is trying to use a column
|
98
|
+
that is from a legacy system but has to stay there.
|
99
|
+
email:
|
100
|
+
- webodessa@gmail.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- Gemfile
|
106
|
+
- Gemfile.lock
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- init.rb
|
110
|
+
- legacy_column.gemspec
|
111
|
+
- lib/legacy_column.rb
|
112
|
+
- lib/legacy_column/railtie.rb
|
113
|
+
- lib/legacy_column/version.rb
|
114
|
+
- spec/db/database.yml
|
115
|
+
- spec/db/schema.rb
|
116
|
+
- spec/db/test.sqlite3
|
117
|
+
- spec/legacy_column_spec.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
homepage: https://github.com/logicalgroove/legacy_column
|
120
|
+
licenses:
|
121
|
+
- MIT
|
122
|
+
metadata: {}
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: 1.3.4
|
137
|
+
requirements: []
|
138
|
+
rubygems_version: 3.0.3
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: Warning for your legacy columns.
|
142
|
+
test_files: []
|