uuids 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +7 -5
- data/bin/uuids +4 -11
- data/lib/uuids/base/has_uuids.rb +4 -3
- data/lib/uuids/version.rb +1 -1
- data/spec/bin/uuids_spec.rb +20 -28
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/spec_helper_dev.rb +1 -1
- data/spec/support/development/helpers/capture_stdout.rb +15 -0
- data/spec/support/development/helpers/sandbox.rb +2 -2
- data/spec/support/development/matchers/migrations.rb +7 -6
- data/spec/support/runtime/factories/records.rb +2 -0
- data/spec/support/runtime/factories/uuids.rb +2 -0
- metadata +37 -30
- data/lib/generators.rb +0 -10
- data/lib/generators/install.rb +0 -92
- data/lib/generators/install/copy_migration.rb +0 -104
- data/spec/lib/generators/install/copy_migration_spec.rb +0 -66
- data/spec/lib/generators/install_spec.rb +0 -73
- data/spec/support/development/helpers/capture.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b59630d1254cf17915e3a7b7beb44845dd1812f
|
4
|
+
data.tar.gz: 9eb598e421669103dcbf1c227e71e0ce5a5b775a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8c87ee98ad9b849aa557e1da0b42fb1da5b699dfce7e3039bdc448c0b2fda9884865b233d79b37f79a008ce33b2b71540bbb276c8b352e0999d14c6588c8ed3
|
7
|
+
data.tar.gz: 5c94540825bcbf75fc55890c4ac28c1d5dfac97e41050de8e11a60796b4c4e82bf3b3431d7f1e93b7d7f6af7a713b7dd1ab4e420daf2fcb617c5e0f6b5a43f23
|
data/.rubocop.yml
CHANGED
@@ -3,10 +3,6 @@ AllCops:
|
|
3
3
|
- 'spec/dummy/**/*'
|
4
4
|
- 'Rakefile'
|
5
5
|
|
6
|
-
Lint/Eval:
|
7
|
-
Exclude:
|
8
|
-
- 'spec/**/*'
|
9
|
-
|
10
6
|
Lint/HandleExceptions:
|
11
7
|
Exclude:
|
12
8
|
- 'spec/**/*'
|
@@ -33,7 +29,13 @@ Style/Documentation:
|
|
33
29
|
- 'db/**/*'
|
34
30
|
- 'lib/uuids/version.rb'
|
35
31
|
|
36
|
-
Style/
|
32
|
+
Style/EmptyLinesAroundClassBody:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
Style/EmptyLinesAroundMethodBody:
|
36
|
+
Enabled: false
|
37
|
+
|
38
|
+
Style/EmptyLinesAroundModuleBody:
|
37
39
|
Enabled: false
|
38
40
|
|
39
41
|
Style/EmptyLineBetweenDefs:
|
data/bin/uuids
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
require "active_record_install"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# $ uuids install
|
8
|
-
#
|
9
|
-
# To see additional options call
|
10
|
-
#
|
11
|
-
# $ uuids install -h
|
12
|
-
#
|
13
|
-
Generators::Install.start
|
4
|
+
ActiveRecordInstall::Generator.start(
|
5
|
+
[File.expand_path("../..", __FILE__), "uuids"] + ARGV[1..-1]
|
6
|
+
)
|
data/lib/uuids/base/has_uuids.rb
CHANGED
@@ -8,7 +8,9 @@ module Uuids
|
|
8
8
|
# Model scopes.
|
9
9
|
module ClassMethods
|
10
10
|
|
11
|
-
# Selects
|
11
|
+
# Selects records by uuid.
|
12
|
+
#
|
13
|
+
# by_uuid(*values)
|
12
14
|
#
|
13
15
|
# @example
|
14
16
|
#
|
@@ -26,8 +28,7 @@ module Uuids
|
|
26
28
|
# Params:
|
27
29
|
# <tt>*values</tt>:: a list of uuids to select records by.
|
28
30
|
#
|
29
|
-
# Returns
|
30
|
-
#
|
31
|
+
# Returns an <tt>ActiveRecord::Relation</tt> scope.
|
31
32
|
def by_uuid(*values)
|
32
33
|
first_value = values.first
|
33
34
|
list = first_value.is_a?(Array) ? first_value : values
|
data/lib/uuids/version.rb
CHANGED
data/spec/bin/uuids_spec.rb
CHANGED
@@ -3,49 +3,41 @@ require "spec_helper_dev"
|
|
3
3
|
|
4
4
|
describe "$ uuids", :sandbox do
|
5
5
|
|
6
|
-
let(:files_in_sandbox) { Dir["#{ sandbox }/**/*.*"] }
|
7
|
-
|
8
6
|
describe "install" do
|
9
7
|
|
10
|
-
|
8
|
+
let!(:root) { File.expand_path("../../..", __FILE__) }
|
9
|
+
let!(:migrations) { Dir["#{ root }/db/migrate/*.rb"] }
|
11
10
|
|
12
|
-
|
13
|
-
before { run_in_sandbox "uuids install" }
|
11
|
+
describe "without options" do
|
14
12
|
|
15
|
-
|
16
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
17
|
-
end
|
13
|
+
before { run_in_sandbox "uuids install" }
|
18
14
|
|
19
|
-
it "
|
20
|
-
|
15
|
+
it "copies migrations to `db/migrate`" do
|
16
|
+
migrations.each do |migration|
|
17
|
+
expect(migration).to have_copy_in_sandbox "db/migrate"
|
18
|
+
end
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
let!(:dir) { "#{ sandbox }/spec/dummy/db/migrate" }
|
27
|
-
before { run_in_sandbox "uuids install -d" }
|
22
|
+
describe "-d" do
|
28
23
|
|
29
|
-
|
30
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
31
|
-
end
|
24
|
+
before { run_in_sandbox "uuids install -d" }
|
32
25
|
|
33
|
-
it "
|
34
|
-
|
26
|
+
it "copies migrations to `spec/dummy/db/migrate`" do
|
27
|
+
migrations.each do |migration|
|
28
|
+
expect(migration).to have_copy_in_sandbox "spec/dummy/db/migrate"
|
29
|
+
end
|
35
30
|
end
|
36
31
|
end
|
37
32
|
|
38
|
-
|
39
|
-
|
40
|
-
let!(:dir) { "#{ sandbox }/folder/db/migrate" }
|
41
|
-
before { run_in_sandbox "uuids install -f folder" }
|
33
|
+
describe "-f folder" do
|
42
34
|
|
43
|
-
|
44
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
45
|
-
end
|
35
|
+
before { run_in_sandbox "uuids install -f folder" }
|
46
36
|
|
47
|
-
it "
|
48
|
-
|
37
|
+
it "copies migrations to `folder/db/migrate`" do
|
38
|
+
migrations.each do |migration|
|
39
|
+
expect(migration).to have_copy_in_sandbox "folder/db/migrate"
|
40
|
+
end
|
49
41
|
end
|
50
42
|
end
|
51
43
|
end
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -6,7 +6,7 @@ Coveralls.wear! "rails"
|
|
6
6
|
require_relative "dummy/lib/dummy"
|
7
7
|
|
8
8
|
# Loads support files for runtime tests.
|
9
|
-
%w(runtime
|
9
|
+
%w(all runtime).each do |env|
|
10
10
|
support = File.expand_path "../support/#{ env }/**/*.rb", __FILE__
|
11
11
|
Dir[support].each { |f| require f }
|
12
12
|
end
|
data/spec/spec_helper_dev.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative "
|
1
|
+
require_relative "capture_stdout"
|
2
2
|
|
3
3
|
# Path to the `tmp/sandbox`.
|
4
4
|
def sandbox
|
@@ -18,7 +18,7 @@ end
|
|
18
18
|
|
19
19
|
# Runs code from `sandbox`.
|
20
20
|
def try_in_sandbox
|
21
|
-
FileUtils.cd(sandbox) {
|
21
|
+
FileUtils.cd(sandbox) { capture_stdout { yield } }
|
22
22
|
end
|
23
23
|
|
24
24
|
# Runs cli from `sandbox`.
|
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative "../helpers/sandbox"
|
2
|
+
|
3
|
+
# Checks if a migration is properly copied to sandbox subfolder
|
4
|
+
RSpec::Matchers.define :have_copy_in_sandbox do |folder|
|
5
|
+
match do |source|
|
4
6
|
|
5
|
-
# Search file that matches source with any timestamp.
|
6
7
|
basename = File.basename(source, ".rb")[14..-1]
|
7
8
|
sample = "*#{ basename }.uuids.rb"
|
8
|
-
search = File.join(
|
9
|
+
search = File.join(sandbox, folder, sample)
|
9
10
|
file = Dir[search].first
|
10
11
|
|
11
|
-
# Check
|
12
|
+
# Check whether file exists and has required content.
|
12
13
|
expect(file).not_to be_nil
|
13
14
|
expect(File.read file).to eq File.read source
|
14
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uuids
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -25,33 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: active_record_install
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
type: :
|
33
|
+
version: '0.4'
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: coveralls
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.7'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.7'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: database_cleaner
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '4.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4.3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4.3'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: inch
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,61 +123,61 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '4.11'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: rake
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '3
|
131
|
+
version: '10.3'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '3
|
138
|
+
version: '10.3'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: rspec
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
145
|
+
version: '3.1'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
152
|
+
version: '3.1'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
154
|
+
name: rubocop
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
159
|
+
version: '0.26'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
166
|
+
version: '0.26'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
168
|
+
name: sqlite3
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
173
|
+
version: '1.3'
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
180
|
+
version: '1.3'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: timecop
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,9 +211,6 @@ files:
|
|
197
211
|
- config/locales/en.yml
|
198
212
|
- config/locales/ru.yml
|
199
213
|
- db/migrate/20141016112506_create_uuids_uuids.rb
|
200
|
-
- lib/generators.rb
|
201
|
-
- lib/generators/install.rb
|
202
|
-
- lib/generators/install/copy_migration.rb
|
203
214
|
- lib/uuids.rb
|
204
215
|
- lib/uuids/base.rb
|
205
216
|
- lib/uuids/base/has_uuids.rb
|
@@ -219,8 +230,6 @@ files:
|
|
219
230
|
- spec/dummy/db/schema.rb
|
220
231
|
- spec/dummy/db/test.sqlite3
|
221
232
|
- spec/dummy/lib/dummy.rb
|
222
|
-
- spec/lib/generators/install/copy_migration_spec.rb
|
223
|
-
- spec/lib/generators/install_spec.rb
|
224
233
|
- spec/lib/uuids/base_spec.rb
|
225
234
|
- spec/spec_helper.rb
|
226
235
|
- spec/spec_helper_dev.rb
|
@@ -230,7 +239,7 @@ files:
|
|
230
239
|
- spec/support/all/config/rspec.rb
|
231
240
|
- spec/support/development/config/sandbox.rb
|
232
241
|
- spec/support/development/config/timecop.rb
|
233
|
-
- spec/support/development/helpers/
|
242
|
+
- spec/support/development/helpers/capture_stdout.rb
|
234
243
|
- spec/support/development/helpers/migrations.rb
|
235
244
|
- spec/support/development/helpers/sandbox.rb
|
236
245
|
- spec/support/development/matchers/migrations.rb
|
@@ -281,15 +290,13 @@ test_files:
|
|
281
290
|
- spec/dummy/lib/dummy.rb
|
282
291
|
- spec/dummy/Rakefile
|
283
292
|
- spec/app/models/uuids/uuid_spec.rb
|
284
|
-
- spec/lib/generators/install/copy_migration_spec.rb
|
285
|
-
- spec/lib/generators/install_spec.rb
|
286
293
|
- spec/lib/uuids/base_spec.rb
|
287
294
|
- spec/bin/uuids_spec.rb
|
288
295
|
- spec/support/development/config/timecop.rb
|
289
296
|
- spec/support/development/config/sandbox.rb
|
290
297
|
- spec/support/development/matchers/sandbox.rb
|
291
298
|
- spec/support/development/matchers/migrations.rb
|
292
|
-
- spec/support/development/helpers/
|
299
|
+
- spec/support/development/helpers/capture_stdout.rb
|
293
300
|
- spec/support/development/helpers/sandbox.rb
|
294
301
|
- spec/support/development/helpers/migrations.rb
|
295
302
|
- spec/support/all/config/garbage_collection.rb
|
data/lib/generators.rb
DELETED
data/lib/generators/install.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Generators
|
4
|
-
|
5
|
-
# An installer for the `uuids` gem.
|
6
|
-
# Copies module migration into an external project.
|
7
|
-
#
|
8
|
-
# @example
|
9
|
-
# installer = Generators::Install.start [], { dummy: true }
|
10
|
-
# # => creates `spec/dummy/db/migrage/{timestamp}_uuids_uuids.uuids.rb
|
11
|
-
#
|
12
|
-
# Options:
|
13
|
-
# <tt>dummy:</tt> (optional, boolean, default: false)
|
14
|
-
# ... flag to copy migrations to a dummy app. If not set, the migration
|
15
|
-
# will be added to the root `db/migrate` folder.
|
16
|
-
#
|
17
|
-
# Adds the "uuids" gem's migration to a module that uses the gem.
|
18
|
-
#
|
19
|
-
class Install < Thor::Group
|
20
|
-
include Thor::Actions
|
21
|
-
|
22
|
-
# Root for db migrations to be copied.
|
23
|
-
source_root File.expand_path "../../../db/migrate", __FILE__
|
24
|
-
namespace :install
|
25
|
-
|
26
|
-
class_option(
|
27
|
-
:dummy,
|
28
|
-
aliases: "-d",
|
29
|
-
default: false,
|
30
|
-
desc: "Copy migrations to dummy (`spec/dummy/db/migrate`) folder.",
|
31
|
-
required: false,
|
32
|
-
type: :boolean
|
33
|
-
)
|
34
|
-
|
35
|
-
class_option(
|
36
|
-
:folder,
|
37
|
-
aliases: "-f",
|
38
|
-
desc: "A folder to copy migrations to (`given_folder/db/migrate`).",
|
39
|
-
required: false,
|
40
|
-
type: :string
|
41
|
-
)
|
42
|
-
|
43
|
-
# Creates a folder for migrations.
|
44
|
-
def prepare_folder
|
45
|
-
empty_directory dir, skip: true
|
46
|
-
end
|
47
|
-
|
48
|
-
# Copies migrations to proper folder
|
49
|
-
def copy_migrations
|
50
|
-
copies.each do |copy|
|
51
|
-
copy_file copy.source, copy.target, copy.content unless copy.created?
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def source_root
|
58
|
-
File.expand_path "../../../db/migrate", __FILE__
|
59
|
-
end
|
60
|
-
|
61
|
-
def dir
|
62
|
-
@dir ||= "#{ folder || dummy || "" }db/migrate/"
|
63
|
-
end
|
64
|
-
|
65
|
-
def folder
|
66
|
-
@folder ||= begin
|
67
|
-
folder = options["folder"]
|
68
|
-
folder ? "#{ folder }/" : nil
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def dummy
|
73
|
-
@dummy ||= "spec/dummy/" if options["dummy"]
|
74
|
-
end
|
75
|
-
|
76
|
-
def sources
|
77
|
-
@sources ||= Dir[File.expand_path("*.rb", source_root)]
|
78
|
-
end
|
79
|
-
|
80
|
-
def copies
|
81
|
-
@copies ||= sources.map do |file|
|
82
|
-
CopyMigration.new(
|
83
|
-
gemname: "uuids",
|
84
|
-
source_root: source_root,
|
85
|
-
source_file: file,
|
86
|
-
target_root: destination_root,
|
87
|
-
target_dir: dir
|
88
|
-
)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative "../install"
|
3
|
-
|
4
|
-
module Generators
|
5
|
-
class Install
|
6
|
-
|
7
|
-
# Description for migration to copy.
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
#
|
11
|
-
# copy = CopyMigration.new(
|
12
|
-
# gemname: "uuids",
|
13
|
-
# source_root: "/",
|
14
|
-
# source_file: "/db/migrate/20141016112506_create_uuids_uuids.rb",
|
15
|
-
# target_root: "/items",
|
16
|
-
# target_dir: "db/migrate"
|
17
|
-
# )
|
18
|
-
#
|
19
|
-
# copy.source
|
20
|
-
# # => "/db/migrate/20141016112506_create_uuids_uuids.rb"
|
21
|
-
# copy.target
|
22
|
-
# # => "/db/migrate/20150101000001_create_uuids_uuids.uuids.rb"
|
23
|
-
# copy.content
|
24
|
-
# # => returns uuids content.
|
25
|
-
# copy.created?
|
26
|
-
# # => returns true after the first copy created with any timestamp.
|
27
|
-
#
|
28
|
-
class CopyMigration
|
29
|
-
|
30
|
-
# Initialized parameters.
|
31
|
-
attr_reader(
|
32
|
-
:gemname, :source_root, :source_file, :target_root, :target_dir
|
33
|
-
)
|
34
|
-
|
35
|
-
# Instance initializer.
|
36
|
-
#
|
37
|
-
# @example
|
38
|
-
# CopyMigration.new(params)
|
39
|
-
#
|
40
|
-
# Params:
|
41
|
-
# <tt>:gemname</tt>:: the name of the gem.
|
42
|
-
# <tt>:source_root</tt>:: the uuids db/migrate folder path.
|
43
|
-
# <tt>:source_file</tt>:: full path to migration file.
|
44
|
-
# <tt>:target_root</tt>:: path to root of application to create copy.
|
45
|
-
# <tt>:target_dir</tt>:: a folder in application root for migrations.
|
46
|
-
#
|
47
|
-
# All params are required.
|
48
|
-
#
|
49
|
-
def initialize(params)
|
50
|
-
@gemname = params[:gemname]
|
51
|
-
@source_root = params[:source_root]
|
52
|
-
@source_file = params[:source_file]
|
53
|
-
@target_root = params[:target_root]
|
54
|
-
@target_dir = params[:target_dir]
|
55
|
-
end
|
56
|
-
|
57
|
-
# Returns a source path to the migration.
|
58
|
-
def source
|
59
|
-
filepath.relative_path_from(rootpath).to_s
|
60
|
-
end
|
61
|
-
|
62
|
-
# Returns a target file name to copy the migration to.
|
63
|
-
def target
|
64
|
-
File.join(target_dir, "#{ timestamp }#{ suffix }")
|
65
|
-
end
|
66
|
-
|
67
|
-
# Returns the migration content.
|
68
|
-
def content
|
69
|
-
File.read filepath
|
70
|
-
end
|
71
|
-
|
72
|
-
# Checks if a copy already created.
|
73
|
-
def created?
|
74
|
-
search != []
|
75
|
-
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
def filepath
|
80
|
-
@filepath ||= Pathname.new(source_file)
|
81
|
-
end
|
82
|
-
|
83
|
-
def suffix
|
84
|
-
@suffix ||= "#{ basename }.#{ gemname }.rb"
|
85
|
-
end
|
86
|
-
|
87
|
-
def search
|
88
|
-
Dir[File.join(target_root, target_dir, "*#{ suffix }")]
|
89
|
-
end
|
90
|
-
|
91
|
-
def rootpath
|
92
|
-
Pathname.new(source_root)
|
93
|
-
end
|
94
|
-
|
95
|
-
def timestamp
|
96
|
-
@timestamp ||= Time.now.utc.strftime "%Y%m%d%H%M%S"
|
97
|
-
end
|
98
|
-
|
99
|
-
def basename
|
100
|
-
File.basename(source_file, ".rb")[14..-1]
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "spec_helper_dev"
|
3
|
-
|
4
|
-
module Generators
|
5
|
-
class Install
|
6
|
-
describe CopyMigration, :sandbox do
|
7
|
-
|
8
|
-
let(:filename) { "20140101010101_create_items_items" }
|
9
|
-
let(:filepath) { "#{ sandbox }/#{ filename }.rb" }
|
10
|
-
let(:content) { "some content" }
|
11
|
-
let(:params) do
|
12
|
-
{
|
13
|
-
gemname: "uuids",
|
14
|
-
source_root: sandbox,
|
15
|
-
source_file: filepath,
|
16
|
-
target_root: sandbox,
|
17
|
-
target_dir: "db/migrate"
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
before { File.write filepath, content }
|
22
|
-
subject { CopyMigration.new params }
|
23
|
-
|
24
|
-
describe "#source" do
|
25
|
-
|
26
|
-
it "returns migrations source" do
|
27
|
-
expect(subject.source).to eq("#{ filename }.rb")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#target" do
|
32
|
-
|
33
|
-
let(:regexp) do
|
34
|
-
Regexp.new "db/migrate/\\d{14}_create_items_items[.]uuids[.]rb"
|
35
|
-
end
|
36
|
-
|
37
|
-
it "returns the name of migration target" do
|
38
|
-
expect(subject.target).to match(regexp)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "#content" do
|
43
|
-
|
44
|
-
it "returns the migration content" do
|
45
|
-
expect(subject.content).to eq(content)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "#created?" do
|
50
|
-
|
51
|
-
let(:folder) { File.join sandbox, "db", "migrate" }
|
52
|
-
let(:copy) { File.join(folder, "#{ filename }.uuids.rb") }
|
53
|
-
|
54
|
-
it "returns false before migration copy created" do
|
55
|
-
expect(subject).not_to be_created
|
56
|
-
end
|
57
|
-
|
58
|
-
it "returns true after migration copy created" do
|
59
|
-
FileUtils.mkdir_p folder
|
60
|
-
File.write copy, content
|
61
|
-
expect(subject).to be_created
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "spec_helper_dev"
|
3
|
-
|
4
|
-
module Generators
|
5
|
-
describe Install, :sandbox do
|
6
|
-
|
7
|
-
describe "#invoke_all" do
|
8
|
-
|
9
|
-
def run_with_options(options = {})
|
10
|
-
try_in_sandbox do
|
11
|
-
subject = Install.new [], options
|
12
|
-
subject.invoke_all
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
let(:files_in_sandbox) { Dir["#{ sandbox }/**/*.*"] }
|
17
|
-
|
18
|
-
context "without options" do
|
19
|
-
|
20
|
-
let!(:dir) { "#{ sandbox }/db/migrate" }
|
21
|
-
before { run_with_options }
|
22
|
-
|
23
|
-
it "copies migrations to 'db/migrate'" do
|
24
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
25
|
-
end
|
26
|
-
|
27
|
-
it "doesn't add other files" do
|
28
|
-
expect(files_in_sandbox.count).to eq migrations.count
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context "dummy: true" do
|
33
|
-
|
34
|
-
let!(:dir) { "#{ sandbox }/spec/dummy/db/migrate" }
|
35
|
-
before { run_with_options dummy: true }
|
36
|
-
|
37
|
-
it "copies migrations to 'spec/dummy/db/migrate'" do
|
38
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
39
|
-
end
|
40
|
-
|
41
|
-
it "doesn't add other files" do
|
42
|
-
expect(files_in_sandbox.count).to eq migrations.count
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "folder: 'folder'" do
|
47
|
-
|
48
|
-
let!(:dir) { "#{ sandbox }/folder/db/migrate" }
|
49
|
-
before { run_with_options folder: "folder" }
|
50
|
-
|
51
|
-
it "copies migrations to 'some_path/db/migrate'" do
|
52
|
-
migrations.each { |file| expect(dir).to have_migration_from file }
|
53
|
-
end
|
54
|
-
|
55
|
-
it "doesn't add other files" do
|
56
|
-
expect(files_in_sandbox.count).to eq migrations.count
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "if a migration is already added" do
|
61
|
-
|
62
|
-
before do
|
63
|
-
run_with_options
|
64
|
-
Timecop.travel(Time.now + 10) { run_with_options }
|
65
|
-
end
|
66
|
-
|
67
|
-
it "doesn't copy it again" do
|
68
|
-
expect(files_in_sandbox.count).to eq migrations.count
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# Captures given stream.
|
2
|
-
#
|
3
|
-
# @example
|
4
|
-
# capture(:stdout) { do_something }
|
5
|
-
#
|
6
|
-
def capture(stream)
|
7
|
-
begin
|
8
|
-
stream = stream.to_s
|
9
|
-
eval "$#{stream} = StringIO.new"
|
10
|
-
yield
|
11
|
-
result = eval("$#{stream}").string
|
12
|
-
ensure
|
13
|
-
eval("$#{stream} = #{stream.upcase}")
|
14
|
-
end
|
15
|
-
result
|
16
|
-
end
|