mongration 0.0.2.1.pre.alpha → 0.0.3.pre.beta

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: 1603bd8159c8dd3d0a091bf46b4dd8f05523d8d1
4
- data.tar.gz: 95f9681b466c422ff29cfafcc1352598b7f0222f
3
+ metadata.gz: 884560384ec483986492aefbb946cda15136075b
4
+ data.tar.gz: c40a5ede37782728919819f17c133935e728e637
5
5
  SHA512:
6
- metadata.gz: 7e419610f423dfb1d32baccd5f6df998d5737a75bb257df83f40506a52d344f39beff5198738946ca27c0f0cf19c3360bf4334d87f49be2baaf2d79a91de78e5
7
- data.tar.gz: cb9806f0a5be02366ff97731bbb45890c6d843b43efb1377c273f8718fce7c166f59e39faa9bce0b5f1961ea279715ef86628dfb2921638f6775385726d3d28f
6
+ metadata.gz: b2d0b356f35a8109db96d91ec16a55a2679d054fff3447436957572fcccc19576cae9b4a0cb304240c3a2592e1c81291716c2658127f5dee4426773f060698b7
7
+ data.tar.gz: ff3da3716f89e2676c5351c05bc3eaece5049ea2ac17f52a22b3c9e75a2999b5ca78fac7e1565703a6848be1f92b963dd525bcad42af05f383e2667acf628d2b
data/.tailor CHANGED
@@ -123,7 +123,7 @@ Tailor.config do |config|
123
123
  style.max_code_lines_in_class 300, level: :error
124
124
  style.max_code_lines_in_method 30, level: :error
125
125
  style.max_line_length 80, level: :off
126
- style.spaces_after_comma 1, level: :error
126
+ style.spaces_after_comma 1, level: :off
127
127
  style.spaces_after_conditional 1, level: :error
128
128
  style.spaces_after_lbrace 1, level: :error
129
129
  style.spaces_after_lbracket 0, level: :error
data/Gemfile CHANGED
@@ -2,7 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  group :test do
4
4
  gem 'guard-rspec', '4.3.1', require: false
5
+ gem 'rantly', github: 'hayeah/rantly'
5
6
  end
6
7
 
8
+ #gem 'rspec-legacy_formatters'
9
+ #gem 'rspec-nc'
10
+
7
11
  # Specify your gem's dependencies in mongration.gemspec
8
12
  gemspec
data/Guardfile CHANGED
@@ -1,6 +1,7 @@
1
1
  guard :rspec, cmd: 'bundle exec rspec' do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
3
+ #watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
4
+ watch(%r{^lib/(.+)\.rb$}) { "spec" }
4
5
  watch('spec/spec_helper.rb') { "spec" }
5
6
  watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
6
7
  watch(%r{^spec/fixtures/(.+)\.rb$}) { "spec" }
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Mongration [![Build Status](https://travis-ci.org/kcdragon/mongration.svg?branch=master)](https://travis-ci.org/kcdragon/mongration) [![Code Climate](https://codeclimate.com/github/kcdragon/mongration/badges/gpa.svg)](https://codeclimate.com/github/kcdragon/mongration)
1
+ # Mongration [![Build Status](https://travis-ci.org/kcdragon/mongration.svg?branch=master)](https://travis-ci.org/kcdragon/mongration) [![Code Climate](https://codeclimate.com/github/kcdragon/mongration/badges/gpa.svg)](https://codeclimate.com/github/kcdragon/mongration) [![Coverage Status](https://coveralls.io/repos/kcdragon/mongration/badge.png)](https://coveralls.io/r/kcdragon/mongration)
2
2
 
3
3
  **ActiveRecord-like Migrations for Mongoid**
4
4
 
@@ -0,0 +1,48 @@
1
+ module Mongration
2
+
3
+ # @private
4
+ class CreateMigration
5
+
6
+ def self.perform(name, options = {})
7
+ new(name, options, Mongration.configuration).perform
8
+ end
9
+
10
+ def initialize(name, options, configuration)
11
+ @name = name
12
+ @options = options
13
+ @configuration = configuration
14
+ end
15
+
16
+ def perform
17
+ MigrationFileWriter.write(
18
+ file_name,
19
+ { dir: @configuration.dir }.merge(@options)
20
+ )
21
+ end
22
+
23
+ private
24
+
25
+ def file_name
26
+ "#{next_migration_number}_#{snakecase}.rb"
27
+ end
28
+
29
+ def next_migration_number
30
+ if @configuration.timestamps?
31
+ Time.now.utc.strftime('%Y%m%d%H%M%S').to_i
32
+ else
33
+ latest_file = Mongration::File.latest
34
+
35
+ number = if latest_file
36
+ latest_file.number + 1
37
+ else
38
+ 1
39
+ end
40
+ '%.3d' % number
41
+ end
42
+ end
43
+
44
+ def snakecase
45
+ @name.gsub(/([a-z])([A-Z0-9])/, '\1_\2').downcase
46
+ end
47
+ end
48
+ end
@@ -6,8 +6,18 @@ module Mongration
6
6
  class Migration
7
7
  include ::Mongoid::Document
8
8
 
9
- field :version, type: Integer
9
+ field :version, type: Integer
10
10
  field :file_names, type: Array
11
+
12
+ field :created_at, type: Time, default: -> { Time.now }
13
+ field :deleted_at, type: Time
14
+
15
+ default_scope -> { where(deleted_at: nil) }
16
+
17
+ def destroy(*)
18
+ self.deleted_at = Time.now
19
+ save!
20
+ end
11
21
  end
12
22
  end
13
23
  end
@@ -5,7 +5,7 @@ module Mongration
5
5
  include Comparable
6
6
 
7
7
  def self.all
8
- Dir[::File.join(Mongration.dir, '*.rb')].map do |path|
8
+ Dir[::File.join(Mongration.configuration.dir, '*.rb')].map do |path|
9
9
  path.pathmap('%f')
10
10
  end.map { |file_name| new(file_name) }
11
11
  end
@@ -45,11 +45,7 @@ module Mongration
45
45
  private
46
46
 
47
47
  def load_file
48
- load(::File.join(Dir.pwd, dir, @file_name))
49
- end
50
-
51
- def dir
52
- Mongration.dir
48
+ load(::File.join(Dir.pwd, Mongration.configuration.dir, @file_name))
53
49
  end
54
50
 
55
51
  def klass
@@ -0,0 +1,52 @@
1
+ module Mongration
2
+
3
+ # @private
4
+ class Migrate
5
+
6
+ def self.perform(version)
7
+ new(version, Mongration.configuration.data_store).perform
8
+ end
9
+
10
+ def initialize(version, data_store)
11
+ @version = version
12
+ @data_store = data_store
13
+ end
14
+
15
+ def perform
16
+ files_to_migrate.sort.each(&:up)
17
+ migration.save
18
+ end
19
+
20
+ private
21
+
22
+ def files_to_migrate
23
+ migration.file_names.map do |file_name|
24
+ Mongration::File.new(file_name)
25
+ end
26
+ end
27
+
28
+ def migration
29
+ @migration ||=
30
+ if file_names.present?
31
+ @data_store.build_migration(
32
+ @version,
33
+ file_names
34
+ )
35
+ else
36
+ NullMigration.new
37
+ end
38
+ end
39
+
40
+ def file_names
41
+ all_file_names - migrated_file_names
42
+ end
43
+
44
+ def all_file_names
45
+ Mongration::File.all.map(&:file_name)
46
+ end
47
+
48
+ def migrated_file_names
49
+ @data_store.migrations.flat_map(&:file_names)
50
+ end
51
+ end
52
+ end
@@ -1,16 +1,16 @@
1
1
  require 'rake'
2
2
 
3
3
  namespace :db do
4
- task :migrate do
4
+ task migrate: :environment do
5
5
  Mongration.migrate
6
6
  end
7
7
 
8
8
  namespace :migrate do
9
- task :rollback do
9
+ task rollback: :environment do
10
10
  Mongration.rollback
11
11
  end
12
12
 
13
- task :create, [:name] do |t, args|
13
+ task :create, [:name] => [:environment] do |t, args|
14
14
  name = args[:name]
15
15
  Mongration.create_migration(name)
16
16
  end
@@ -1,22 +1,24 @@
1
1
  module Mongration
2
2
 
3
3
  # @private
4
- class Migration
5
- def initialize(migration)
6
- @migration = migration
4
+ class Rollback
5
+
6
+ def self.perform(migration)
7
+ new(migration).perform
7
8
  end
8
9
 
9
- def up
10
- files.sort.each(&:up)
10
+ def initialize(migration)
11
+ @migration = migration
11
12
  end
12
13
 
13
- def down
14
- files.sort.reverse.each(&:down)
14
+ def perform
15
+ files_to_rollback.sort.reverse.each(&:down)
16
+ @migration.destroy
15
17
  end
16
18
 
17
19
  private
18
20
 
19
- def files
21
+ def files_to_rollback
20
22
  @migration.file_names.map do |file_name|
21
23
  Mongration::File.new(file_name)
22
24
  end
@@ -1,3 +1,3 @@
1
1
  module Mongration
2
- VERSION = '0.0.2.1-alpha'
2
+ VERSION = '0.0.3-beta'
3
3
  end
data/lib/mongration.rb CHANGED
@@ -3,11 +3,13 @@ require 'mongration/version'
3
3
  require 'mongration/errors'
4
4
 
5
5
  require 'mongration/configuration'
6
+ require 'mongration/create_migration'
6
7
  require 'mongration/file'
7
- require 'mongration/migration'
8
+ require 'mongration/migrate'
8
9
  require 'mongration/migration_file_writer'
9
10
  require 'mongration/null_migration'
10
11
  require 'mongration/rake_task'
12
+ require 'mongration/rollback'
11
13
 
12
14
  require 'mongration/data_store/mongoid/store'
13
15
  require 'mongration/data_store/in_memory/store'
@@ -16,72 +18,36 @@ module Mongration
16
18
  extend self
17
19
 
18
20
  def migrate
19
- file_names = Mongration::File.all.map(&:file_name) - data_store.migrations.flat_map(&:file_names)
20
-
21
- migration = if file_names.present?
22
- data_store.build_migration(
23
- latest_migration.version + 1,
24
- file_names
25
- )
26
- else
27
- NullMigration.new
28
- end
29
-
30
- Migration.new(migration).up
31
- migration.save
21
+ Migrate.perform(
22
+ latest_migration.version + 1
23
+ )
32
24
  end
33
25
 
34
26
  def rollback
35
- migration = latest_migration
36
- Migration.new(migration).down
37
- migration.destroy
27
+ Rollback.perform(
28
+ latest_migration
29
+ )
38
30
  end
39
31
 
40
32
  def create_migration(name, options = {})
41
- snakecase = name.gsub(/([a-z])([A-Z0-9])/, '\1_\2').downcase
42
- file_name = "#{next_migration_number}_#{snakecase}.rb"
43
- MigrationFileWriter.write(file_name, { dir: dir }.merge(options))
33
+ CreateMigration.perform(
34
+ name,
35
+ options
36
+ )
44
37
  end
45
38
 
46
39
  def configure
47
40
  yield configuration if block_given?
48
41
  end
49
42
 
50
- private
51
-
52
- def next_migration_number
53
- if timestamps?
54
- Time.now.utc.strftime('%Y%m%d%H%M%S').to_i
55
- else
56
- latest_file = Mongration::File.latest
57
-
58
- number = if latest_file
59
- latest_file.number + 1
60
- else
61
- 1
62
- end
63
- '%.3d' % number
64
- end
65
- end
66
-
67
- def latest_migration
68
- data_store.migrations.max_by(&:version) || NullMigration.new
69
- end
70
-
71
43
  def configuration
72
44
  @configuration ||= Configuration.new
73
45
  end
74
46
 
75
- def method_missing(method, *args)
76
- if configuration.respond_to?(method, *args)
77
- configuration.send(method, *args)
78
- else
79
- super
80
- end
81
- end
47
+ private
82
48
 
83
- def respond_to?(method, *args)
84
- super || configuration.respond_to?(method, *args)
49
+ def latest_migration
50
+ configuration.data_store.migrations.max_by(&:version) || NullMigration.new
85
51
  end
86
52
  end
87
53
 
data/mongration.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "rake"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "coveralls", "= 0.7.0"
25
26
  spec.add_development_dependency "rspec", "= 3.0"
26
27
  spec.add_development_dependency "tailor", "= 1.4.0"
27
28
  spec.add_development_dependency "timecop", "= 0.7.1"
@@ -0,0 +1 @@
1
+ repo_token: gu8IfCgZJvGW4RSqxnNSxtZHYE82zikmS
@@ -1,7 +1,7 @@
1
1
  module IntegrationFixtures
2
2
  def create(file_name, up, down)
3
3
  Mongration::MigrationFileWriter.
4
- write(file_name, up: up, down: down, dir: Mongration.dir)
4
+ write(file_name, up: up, down: down, dir: Mongration.configuration.dir)
5
5
  end
6
6
 
7
7
  def foo_create_migration
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
 
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
4
7
  require 'timecop'
5
8
 
9
+ require 'rantly/rspec_extensions'
10
+
6
11
  require 'mongration'
7
12
  Mongration.configure do |config|
8
13
  config.data_store = Mongration::DataStore::Mongoid::Store.new(config_path: File.join('spec', 'config', 'mongoid.yml'))
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mongration::DataStore::Mongoid do
4
+
5
+ let(:migration) { Mongration::DataStore::Mongoid::Migration.create! }
6
+
7
+ describe '#create' do
8
+ it 'sets created at timestamp' do
9
+ expect(migration.created_at).to be_present
10
+ end
11
+ end
12
+
13
+ describe '#destroy' do
14
+ before { migration.destroy }
15
+
16
+ it 'sets deleted at field' do
17
+ migration.reload
18
+ expect(migration.deleted_at).to be_present
19
+ end
20
+
21
+ it 'document is not returned in query' do
22
+ expect(Mongration::DataStore::Mongoid::Migration.count).to eq(0)
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.1.pre.alpha
4
+ version: 0.0.3.pre.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-27 00:00:00.000000000 Z
11
+ date: 2014-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.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.7.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -115,17 +129,20 @@ files:
115
129
  - Rakefile
116
130
  - lib/mongration.rb
117
131
  - lib/mongration/configuration.rb
132
+ - lib/mongration/create_migration.rb
118
133
  - lib/mongration/data_store/in_memory/store.rb
119
134
  - lib/mongration/data_store/mongoid/migration.rb
120
135
  - lib/mongration/data_store/mongoid/store.rb
121
136
  - lib/mongration/errors.rb
122
137
  - lib/mongration/file.rb
123
- - lib/mongration/migration.rb
138
+ - lib/mongration/migrate.rb
124
139
  - lib/mongration/migration_file_writer.rb
125
140
  - lib/mongration/null_migration.rb
126
141
  - lib/mongration/rake_task.rb
142
+ - lib/mongration/rollback.rb
127
143
  - lib/mongration/version.rb
128
144
  - mongration.gemspec
145
+ - spec/.coveralls.yml
129
146
  - spec/config/mongoid.yml
130
147
  - spec/db/migrate/.gitkeep
131
148
  - spec/fixtures/integration.rb
@@ -134,6 +151,7 @@ files:
134
151
  - spec/spec_helper.rb
135
152
  - spec/support/store_interface.rb
136
153
  - spec/unit/mongration/data_store/in_memory/store_spec.rb
154
+ - spec/unit/mongration/data_store/mongoid/migration_spec.rb
137
155
  - spec/unit/mongration/data_store/mongoid/store_spec.rb
138
156
  - spec/unit/mongration/file_spec.rb
139
157
  homepage: https://github.com/kcdragon/mongration
@@ -161,6 +179,7 @@ signing_key:
161
179
  specification_version: 4
162
180
  summary: ActiveRecord-like Migrations for Mongoid
163
181
  test_files:
182
+ - spec/.coveralls.yml
164
183
  - spec/config/mongoid.yml
165
184
  - spec/db/migrate/.gitkeep
166
185
  - spec/fixtures/integration.rb
@@ -169,6 +188,7 @@ test_files:
169
188
  - spec/spec_helper.rb
170
189
  - spec/support/store_interface.rb
171
190
  - spec/unit/mongration/data_store/in_memory/store_spec.rb
191
+ - spec/unit/mongration/data_store/mongoid/migration_spec.rb
172
192
  - spec/unit/mongration/data_store/mongoid/store_spec.rb
173
193
  - spec/unit/mongration/file_spec.rb
174
194
  has_rdoc: