data_migrater 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4edd73a6e979b188bb16be1e3da8459e4bec032c
4
- data.tar.gz: ec460ef7043e565a46bf6eefe3c5f4ec8747cda2
3
+ metadata.gz: a13040b011706340281f05ccfd9bec1d0f1dccbd
4
+ data.tar.gz: d125de74e4823997d445badbb4b1fc9e35c10265
5
5
  SHA512:
6
- metadata.gz: e3cd683980e7750d349c2e27a7f76d6d85b665f163e268bcf1fd6133515c7502ef276122a6b882cb268647f08ae3b2da46cfca3c6b1b173cceaf1a989f198602
7
- data.tar.gz: 75a673376d5cc02dfd1291eb9d6f05bc3aed4dc5294edb9c086f0d054e580e53fb2081c1130428a51bd3e0574ce783fd9406c295dc8eb4433b7d3bb36dc4defe
6
+ metadata.gz: 62f37e23c30eacde7c410c3d27f5f82d73a9fadd6ac52d2ea526db44c852b3a8faaf48c99b85ff43c4b81829d6f2c20bc1dcbf0d688716dca4156e6a0a6a49f7
7
+ data.tar.gz: 429b22415c18dff3dfd8991c2894d662db8a8aae6d1919312e8e7b3db134a090e790201e1f661efac9e8ac9006a7e9904cb1b1d4722b1513683b8b0eb86eb1be
@@ -1,3 +1,7 @@
1
+ # 0.2.0
2
+
3
+ - Added support for custom logger.
4
+
1
5
  # 0.1.1
2
6
 
3
7
  - Fixed `require` name on `bin` script.
data/README.md CHANGED
@@ -30,6 +30,38 @@ rails g data_migrater:create name
30
30
  Check your `db/data_migrate` folder, the data migration will be there.
31
31
  Next time your application run, all pending data migration will be execute.
32
32
 
33
+ ## Custom Logger
34
+
35
+ You can send your log to a file including the module `DataMigrater::Logger`.
36
+
37
+ ```
38
+ class MyDataMigration
39
+ include DataMigrater::Logger
40
+
41
+ def execute
42
+ logger.info "going to log/my_data_migration.log"
43
+ end
44
+ end
45
+ ```
46
+
47
+ By default, the class name is used and the file goes to `log` folder. You can change it:
48
+
49
+ ```
50
+ class MyDataMigration
51
+ include DataMigrater::Logger
52
+
53
+ data_logger path: "db/data_migrate/log/global.log"
54
+
55
+ def execute
56
+ logger.info "going to db/data_migrate/log/global.log"
57
+ end
58
+ end
59
+ ```
60
+
61
+ #### Options
62
+
63
+ `path`: Where the log will be written.
64
+
33
65
  ## Test
34
66
 
35
67
  Before send pull request, check if specs is passing.
@@ -2,7 +2,10 @@ module DataMigrater
2
2
  end
3
3
 
4
4
  require 'data_migration'
5
+
5
6
  require 'data_migrater/collection'
7
+ # require 'data_migrater/csv'
8
+ require 'data_migrater/logger'
6
9
  require 'data_migrater/migration'
7
10
  require 'data_migrater/migrator'
8
11
  require 'data_migrater/version'
@@ -0,0 +1,49 @@
1
+ module DataMigrater
2
+ module Logger
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ def logger
7
+ return @logger if @logger
8
+
9
+ @logger = ::Logger.new(path)
10
+
11
+ @logger.formatter = formatter
12
+
13
+ @logger
14
+ end
15
+
16
+ private
17
+
18
+ def default_path
19
+ "log/#{self.class.name.underscore}.log"
20
+ end
21
+
22
+ def formatter
23
+ -> (severity, datetime, _progname, message) do
24
+ "[#{datetime}] #{severity} #{self.class.name}: #{message}\n"
25
+ end
26
+ end
27
+
28
+ def options
29
+ self.class.options
30
+ end
31
+
32
+ def path
33
+ return default_path unless options
34
+
35
+ options.fetch :path, default_path
36
+ end
37
+ end
38
+
39
+ class_methods do
40
+ def data_logger(options = {})
41
+ @options = options
42
+ end
43
+
44
+ def options
45
+ @options
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,3 +1,3 @@
1
1
  module DataMigrater
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -5,9 +5,7 @@ module DataMigrater
5
5
  desc "creates an initializer and copy necessary files."
6
6
 
7
7
  def create_data_folder
8
- folder = 'db/data_migrate'
9
-
10
- FileUtils.mkdir_p folder
8
+ FileUtils.mkdir_p 'db/data_migrate'
11
9
  FileUtils.touch 'db/data_migrate/.keep'
12
10
  end
13
11
 
@@ -1,4 +1,11 @@
1
1
  class <%= name.camelize %>
2
+ include DataMigrater::Logger
3
+
2
4
  def execute
5
+ logger.info "starting..."
6
+
7
+ # your data migration here...
8
+
9
+ logger.info "done!"
3
10
  end
4
11
  end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ class Dummy
4
+ include DataMigrater::CSV
5
+
6
+ data_logger path: "dummy.log"
7
+
8
+ def log
9
+ logger.info "done!"
10
+ end
11
+ end
12
+
13
+ RSpec.describe Dummy, "#data_logger" do
14
+ subject { Dummy.new }
15
+
16
+ context "with a given :path" do
17
+ it "caches the options" do
18
+ expect(described_class.options).to eq(path: "dummy.log")
19
+ end
20
+
21
+ it "has the right format" do
22
+ subject.log
23
+
24
+ expect(read).to match /\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} -\d{4}\] INFO Dummy: done!\n/
25
+ end
26
+ end
27
+
28
+ def read
29
+ File.readlines(described_class.options[:path]).last
30
+ end
31
+ end
@@ -0,0 +1,63 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "#data_logger" do
4
+ context "with :path" do
5
+ before do
6
+ stub_const "Dummy", Class.new
7
+
8
+ Dummy.class_eval { include DataMigrater::Logger }
9
+ Dummy.class_eval { data_logger path: "custom.log" }
10
+ end
11
+
12
+ after :suite do
13
+ delete :dummy
14
+ end
15
+
16
+ subject { Dummy.new }
17
+
18
+ it "logs on the given path file with right content" do
19
+ subject.logger.info "done!"
20
+
21
+ result = /\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} -\d{4}\] INFO Dummy: done!\n/
22
+
23
+ expect(File.readlines("custom.log").last).to match result
24
+ end
25
+ end
26
+
27
+ context "with no :path" do
28
+ before do
29
+ stub_const "Dummy", Class.new
30
+
31
+ Dummy.class_eval { include DataMigrater::Logger }
32
+ Dummy.class_eval { data_logger }
33
+ end
34
+
35
+ subject { Dummy.new }
36
+
37
+ it "logs on log folder with class name with right content" do
38
+ subject.logger.info "done!"
39
+
40
+ result = /\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} -\d{4}\] INFO Dummy: done!\n/
41
+
42
+ expect(File.readlines("log/dummy.log").last).to match result
43
+ end
44
+ end
45
+
46
+ context "with no :data_logger" do
47
+ before do
48
+ stub_const "Dummy", Class.new
49
+
50
+ Dummy.class_eval { include DataMigrater::Logger }
51
+ end
52
+
53
+ subject { Dummy.new }
54
+
55
+ it "logs on log folder with class name with right content" do
56
+ subject.logger.info "done!"
57
+
58
+ result = /\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} -\d{4}\] INFO Dummy: done!\n/
59
+
60
+ expect(File.readlines("log/dummy.log").last).to match result
61
+ end
62
+ end
63
+ end
@@ -1,20 +1,9 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
2
 
3
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
-
5
3
  require 'active_record/railtie'
6
4
  require 'data_migrater'
5
+ require 'pry-byebug'
7
6
 
8
7
  ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
9
8
 
10
- ActiveRecord::Schema.define do
11
- create_table :data_migrations do |t|
12
- t.string :version, null: false
13
- end
14
- end
15
-
16
- RSpec.configure do |config|
17
- config.before do
18
- DataMigration.destroy_all
19
- end
20
- end
9
+ Dir[File.expand_path('support/**/*.rb', __dir__)].each { |file| require file }
@@ -0,0 +1,7 @@
1
+ require 'rspec/rails'
2
+
3
+ RSpec.configure do |config|
4
+ config.filter_run_when_matching :focus
5
+
6
+ config.order = :random
7
+ end
@@ -0,0 +1,5 @@
1
+ RSpec.configure do |config|
2
+ config.before do
3
+ DataMigration.destroy_all
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ def delete(file_name)
2
+ File.delete File.expand_path("../#{file_name}.log", __dir__)
3
+ end
@@ -0,0 +1,5 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :data_migrations do |t|
3
+ t.string :version, null: false
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_migrater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GetNinjas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-05 00:00:00.000000000 Z
11
+ date: 2017-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: guard-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,35 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-rails
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'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - ">="
@@ -94,6 +122,20 @@ dependencies:
94
122
  - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: sqlite3
99
141
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +161,7 @@ files:
119
161
  - README.md
120
162
  - lib/data_migrater.rb
121
163
  - lib/data_migrater/collection.rb
164
+ - lib/data_migrater/logger.rb
122
165
  - lib/data_migrater/migration.rb
123
166
  - lib/data_migrater/migrator.rb
124
167
  - lib/data_migrater/version.rb
@@ -129,10 +172,16 @@ files:
129
172
  - lib/generators/data_migrater/templates/db/data_migrate/data_migrate.rb.erb
130
173
  - lib/generators/data_migrater/templates/db/migrate/create_data_migrations.rb
131
174
  - spec/collection_spec.rb
175
+ - spec/csv/data_csv_spec.rb
132
176
  - spec/data_migration_spec.rb
177
+ - spec/logger/data_logger_spec.rb
133
178
  - spec/migrater_spec.rb
134
179
  - spec/migration_spec.rb
135
180
  - spec/spec_helper.rb
181
+ - spec/support/common.rb
182
+ - spec/support/database_cleaner.rb
183
+ - spec/support/methods.rb
184
+ - spec/support/migrate.rb
136
185
  homepage: https://github.com/getninjas/data_migrater
137
186
  licenses:
138
187
  - MIT
@@ -153,13 +202,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
202
  version: '0'
154
203
  requirements: []
155
204
  rubyforge_project:
156
- rubygems_version: 2.4.5.1
205
+ rubygems_version: 2.6.8
157
206
  signing_key:
158
207
  specification_version: 4
159
208
  summary: A Data Migrator gem
160
209
  test_files:
161
210
  - spec/collection_spec.rb
211
+ - spec/csv/data_csv_spec.rb
162
212
  - spec/data_migration_spec.rb
213
+ - spec/logger/data_logger_spec.rb
163
214
  - spec/migrater_spec.rb
164
215
  - spec/migration_spec.rb
165
216
  - spec/spec_helper.rb
217
+ - spec/support/common.rb
218
+ - spec/support/database_cleaner.rb
219
+ - spec/support/methods.rb
220
+ - spec/support/migrate.rb