column_hider 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8d4fc13bfe9f49a63d59c3b6df79228de6fa5950
4
+ data.tar.gz: 725c675d14826b9472abfa07a1ec47475e1f956a
5
+ SHA512:
6
+ metadata.gz: 7cbe3d3a3b1ea959faa82b892548001be553975c5e4f470e87a422c50c9191a89f958797f7ccf915f7fc37537f7cee9169cf2748d2b504374cc02e9c8fc423d1
7
+ data.tar.gz: 8d22ed88c39f9dd44fc2b4267530fb78b76f3ba41d007bbf9986e06854a773232c390831b5a97695e2ae16e5cebc8eee055cf5aaa509ccaaf7eaf0fd1df67578
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2015 Ian Hall
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,71 @@
1
+ = ColumnHider
2
+
3
+ == Procedure for deleting or renaming database columns in Rails applications
4
+
5
+ === Avoiding downtime, or reliability issues during deploys
6
+
7
+ Ian Hall
8
+ May 2015
9
+
10
+ ---
11
+ The process of deleting or renaming columns in a production database has some hidden dangers, more or less severe depending on how long it takes to run different parts of your deployment process.
12
+
13
+ This procedure aims to completely avoid these issues. If you can’t afford an deployment outage and want your application to be as close to 100% available as possible, you might like to consider this procedure.
14
+
15
+ ---
16
+ == Renaming columns
17
+
18
+ The simple solution to this is: don’t do it! Instead:
19
+
20
+ * create a new column with the desired name
21
+ * migrate all data from the old column to the new column
22
+ * change all references to the old column name in your code to use the new column name
23
+ * (optional) use the column-deletion procedure below to remove the old column
24
+
25
+ The second step, migrating data from old to new columns, may need to be repeated before the fourth step if there is any gap in time which allows data to be updated between steps two and three.
26
+
27
+ == Column-deletion procedure
28
+ === Problem Definition
29
+
30
+ When a Rails model is first used in a running Rails application, all the columns in the underlying database table are enumerated. The list of columns is kept in a class instance variable of an <code>ActiveRecord::Attribute::ClassMethods</code> method named +columns+. Once created, this variable persists for the lifetime of the running application.
31
+
32
+ Caching the column names this way is a good performance enhancement for the application, but it can lead to problems during or after database changes.
33
+
34
+ Without the procedure described below, one would run a migration to physically remove the column-to-be-deleted (+CTBD+), then deploy a new version of the application, with all references to the +CTBD+ removed. After successful deployment, restart the application.
35
+
36
+ <b>The danger period is the interval between the migration completing and the application restarting.</b>
37
+
38
+ Even though this interval may be relatively short - perhaps only a minute or two - if it’s possible that the running application will access the table that you’ve changed with the migration, then you’ll run into a problem.
39
+
40
+ === Solution
41
+
42
+ The solution to this problem lies in overriding the +ActiveRecord+ columns method described above.
43
+
44
+ [Step One] Add the gem to your Gemfile.
45
+
46
+ In the model for your application which contains the +CTBD+, add these two lines:
47
+
48
+ extend ColumnHider
49
+ column_hider_columns :column_one
50
+
51
+ where +:column_one+ is the +CTBD+.
52
+
53
+ This logically deletes the column from the application - whenever the application accesses the model, the column will be removed from the list of columns that the application knows about.
54
+
55
+ Then go through your application in the normal way and remove all other references to the +CTBD+.
56
+
57
+ [Step Two] Deploy the code changes made in Step One.
58
+
59
+ At this point, your application will know nothing about the +CTBD+, and you can now go on to physically remove the +CTBD+.
60
+
61
+ [Step Three] Create and deploy a Rails migration to physically remove the +CTBD+.
62
+
63
+ [Step Four] Remove the two lines from your model that were added in Step One. Deploy this whenever …
64
+
65
+ [Step Five] … and relax!
66
+
67
+ == Conclusion
68
+
69
+ This might seem like a long-winded way to go about it, but it guarantees that you will avoid any problems in your running application when deleting or renaming columns.
70
+
71
+ Your mileage may vary, depending on the usage pattern of your application. If you can afford to take downtime and close down user access during a deployment window, you can safely run a destructive migration followed by an application deploy.
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'ColumnHider'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
18
+
19
+ require 'rake/testtask'
20
+
21
+ Rake::TestTask.new(:test) do |t|
22
+ t.libs << 'lib'
23
+ t.libs << 'test'
24
+ t.pattern = 'test/**/*_test.rb'
25
+ t.verbose = false
26
+ end
27
+
28
+ task default: :test
@@ -0,0 +1,3 @@
1
+ module ColumnHider
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,23 @@
1
+ require "column_hider/version"
2
+
3
+ module ColumnHider
4
+ #
5
+ # Overrides the Rails ActiveRecord Attributes "columns" method.
6
+ # This allows the logical removal of a column prior to its physical removal.
7
+ # To use, add two lines to your model:
8
+ # ` extend ColumnHider`
9
+ # ` column_hider_columns :column_one, :column_two, ...`
10
+ #
11
+
12
+ def column_hider_columns(*cols)
13
+ @column_hider_columns = []
14
+ cols.each do |col|
15
+ @column_hider_columns << col.to_s
16
+ end
17
+ end
18
+
19
+ def columns
20
+ @column_hider_columns ||= [] # just in case the model includes the line " extend ColumnHider", but doesn't call column_hider_columns
21
+ super.reject { |col| @column_hider_columns.include?(col.name) }
22
+ end
23
+ end
@@ -0,0 +1,53 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/spec'
3
+ require 'test_helper'
4
+
5
+ describe ColumnHider do
6
+ it 'has a version number' do
7
+ expect(ColumnHider::VERSION).wont_be_nil
8
+ end
9
+
10
+ before do
11
+ class Country < ActiveRecord::Base
12
+ establish_connection :adapter => 'sqlite3', :database => ':memory:'
13
+ connection.create_table(:countries, :force => true) do |t|
14
+ t.string :name
15
+ t.string :capital
16
+ t.string :comment
17
+ end
18
+ extend ColumnHider
19
+ column_hider_columns :capital
20
+ end
21
+ end
22
+
23
+ after do
24
+ Object.send :remove_const, :Country
25
+ end
26
+
27
+ describe '#column is removed in the model' do
28
+ let(:mock_col_arr) { %w(id name comment) }
29
+ col_arr = []
30
+ it '#shows the column is not there' do
31
+ Country.columns.each do |col|
32
+ col_arr << col.name
33
+ end
34
+ expect(col_arr).must_equal(mock_col_arr)
35
+ expect(col_arr).must_include('comment')
36
+ expect(col_arr).wont_include('capital')
37
+ end
38
+ end
39
+
40
+ describe '#column is removed dynamically' do
41
+ let(:mock_col_arr) { %w(id name capital) }
42
+ col_arr = []
43
+ it '#shows the column is not there' do
44
+ Country.send :column_hider_columns, :comment
45
+ Country.columns.each do |col|
46
+ col_arr << col.name
47
+ end
48
+ expect(col_arr).must_equal(mock_col_arr)
49
+ expect(col_arr).must_include('capital')
50
+ expect(col_arr).wont_include('comment')
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,10 @@
1
+ require "active_record/railtie"
2
+ require "rails/test_unit/railtie"
3
+
4
+ Bundler.require(*Rails.groups)
5
+
6
+ module Dummy
7
+ class Application < Rails::Application
8
+ end
9
+ end
10
+
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/test.sqlite3
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -0,0 +1,6 @@
1
+ Rails.application.configure do
2
+ config.cache_classes = true
3
+ config.eager_load = false
4
+ config.active_support.test_order = :random
5
+ config.active_support.deprecation = :stderr
6
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,87 @@
1
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
2
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
3
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
4
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
5
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
6
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
7
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
8
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
9
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
10
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
11
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
12
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
13
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
14
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
15
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
16
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
17
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
18
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
19
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
20
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
21
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
22
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
23
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
24
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
25
+  (0.3ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
26
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
27
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
28
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
29
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
30
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
31
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
32
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
33
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
34
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
35
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
36
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
37
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
38
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
39
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
40
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
41
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
42
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
43
+  (0.3ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
44
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
45
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
46
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
47
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
48
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
49
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
50
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
51
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
52
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
53
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
54
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
55
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
56
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
57
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
58
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
59
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
60
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
61
+  (0.3ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
62
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
63
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
64
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
65
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
66
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
67
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
68
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
69
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
70
+  (0.3ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
71
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255))
72
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "capital" varchar(255), "comment" varchar(255)) 
73
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
74
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
75
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
76
+  (0.3ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
77
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
78
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
79
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
80
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
81
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
82
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
83
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
84
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
85
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
86
+  (0.1ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar)
87
+  (0.2ms) CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "capital" varchar, "comment" varchar) 
@@ -0,0 +1,9 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
8
+ # to be shown.
9
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: column_hider
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Flashfunders
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.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.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Superclasses the 'columns' method of ActiveRecord's Attribute class and
42
+ dynamically removes your chosen column(s).
43
+ email:
44
+ - engineering@flashfunders.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - MIT-LICENSE
50
+ - README.rdoc
51
+ - Rakefile
52
+ - lib/column_hider.rb
53
+ - lib/column_hider/version.rb
54
+ - test/column_hider_test.rb
55
+ - test/dummy/config.ru
56
+ - test/dummy/config/application.rb
57
+ - test/dummy/config/database.yml
58
+ - test/dummy/config/environment.rb
59
+ - test/dummy/config/environments/test.rb
60
+ - test/dummy/db/schema.rb
61
+ - test/dummy/db/test.sqlite3
62
+ - test/dummy/log/test.log
63
+ - test/test_helper.rb
64
+ homepage: ''
65
+ licenses:
66
+ - MIT
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.4.6
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: Removes a database table column from the set of columns known to your application.
88
+ test_files:
89
+ - test/column_hider_test.rb
90
+ - test/dummy/config/application.rb
91
+ - test/dummy/config/database.yml
92
+ - test/dummy/config/environment.rb
93
+ - test/dummy/config/environments/test.rb
94
+ - test/dummy/config.ru
95
+ - test/dummy/db/schema.rb
96
+ - test/dummy/db/test.sqlite3
97
+ - test/dummy/log/test.log
98
+ - test/test_helper.rb