uuids 1.4.0 → 1.4.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/bin/uuids +2 -2
  4. data/lib/generators/install/copy_migration.rb +104 -0
  5. data/lib/generators/install.rb +92 -0
  6. data/lib/generators.rb +10 -0
  7. data/lib/uuids/version.rb +1 -2
  8. data/lib/uuids.rb +6 -3
  9. data/spec/{uuids/models → app/models/uuids}/uuid_spec.rb +0 -0
  10. data/spec/bin/uuids_spec.rb +52 -0
  11. data/spec/dummy/db/test.sqlite3 +0 -0
  12. data/spec/lib/generators/install/copy_migration_spec.rb +66 -0
  13. data/spec/lib/generators/install_spec.rb +73 -0
  14. data/spec/{uuids/lib → lib/uuids}/base_spec.rb +0 -0
  15. data/spec/spec_helper.rb +5 -4
  16. data/spec/spec_helper_dev.rb +15 -0
  17. data/spec/{initializers → support/all/config}/focus.rb +0 -0
  18. data/spec/{initializers → support/all/config}/garbage_collection.rb +0 -0
  19. data/spec/{initializers → support/all/config}/random_order.rb +0 -0
  20. data/spec/{initializers → support/all/config}/rspec.rb +0 -0
  21. data/spec/{initializers → support/development/config}/sandbox.rb +1 -1
  22. data/spec/support/development/config/timecop.rb +1 -0
  23. data/spec/support/{capture.rb → development/helpers/capture.rb} +0 -0
  24. data/spec/support/development/helpers/migrations.rb +6 -0
  25. data/spec/support/{sandbox.rb → development/helpers/sandbox.rb} +1 -16
  26. data/spec/support/development/matchers/migrations.rb +15 -0
  27. data/spec/support/development/matchers/sandbox.rb +14 -0
  28. data/spec/{initializers → support/runtime/config}/database_cleaner.rb +0 -0
  29. data/spec/{initializers → support/runtime/config}/factory_girl.rb +0 -0
  30. data/spec/{initializers → support/runtime/config}/i18n.rb +0 -0
  31. data/spec/{factories → support/runtime/factories}/records.rb +0 -0
  32. data/spec/{factories → support/runtime/factories}/uuids.rb +0 -0
  33. metadata +68 -47
  34. data/lib/uuids/generators/install/migration.rb +0 -62
  35. data/lib/uuids/generators/install.rb +0 -84
  36. data/spec/initializers/migrations.rb +0 -3
  37. data/spec/support/migrations.rb +0 -16
  38. data/spec/uuids/cli/install_spec.rb +0 -49
  39. data/spec/uuids/lib/generators/install/migration_spec.rb +0 -41
  40. data/spec/uuids/lib/generators/install_spec.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d62f7dd03a435e8bba46acb72812918a4eba1b0
4
- data.tar.gz: 3e94d4a3a0633b637b8c71a1bacec93f9d843f11
3
+ metadata.gz: 5da4310e0513240c73c5f30d4d04fe9806271af8
4
+ data.tar.gz: 4a0f7b2b9b9a141ad21e76b1d0f44cfc6fec9b41
5
5
  SHA512:
6
- metadata.gz: 1d637e584a7da88119ded6750a33ebf69fc3acaf29292a4ed550eef08a3907ee71a35d41229c058eb97f28b29259de6db41e6eaa2662c46f7aada4fe981d95fa
7
- data.tar.gz: 723ad1cd61231f1984fb4ef327052b195a86ab892b20fc81e3bc3da07c5d3f0bfaef793d44dd3c66db558473c55258ac1244d02e59cb4e30d6d6e5485d5b3743
6
+ metadata.gz: 7fa00c4678aee17d4d0ceef8da2ec8c2019e4363107ef1ba772f9ca89daa99fae98a1aaf49e887259a716994a68b55364abd05bc9be2a5f3b898bb6b04955756
7
+ data.tar.gz: a2eb9c7475f5ccce7d5d1cb4ae45054ef3e9c9400585e28b10060135c1d8dfac8d39cd7e2f9ca526043aa64915c786493456b879ed76fe8515f69d6ca9f508be
data/.rubocop.yml CHANGED
@@ -31,6 +31,7 @@ Style/Documentation:
31
31
  Exclude:
32
32
  - 'spec/**/*'
33
33
  - 'db/**/*'
34
+ - 'lib/uuids/version.rb'
34
35
 
35
36
  Style/EmptyLinesAroundBody:
36
37
  Enabled: false
data/bin/uuids CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require "uuids"
2
+ require_relative "../lib/generators"
3
3
 
4
4
  # Runs the generator.
5
5
  #
@@ -10,4 +10,4 @@ require "uuids"
10
10
  #
11
11
  # $ uuids install -h
12
12
  #
13
- Uuids::Generators::Install.start
13
+ Generators::Install.start
@@ -0,0 +1,104 @@
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
@@ -0,0 +1,92 @@
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
data/lib/generators.rb ADDED
@@ -0,0 +1,10 @@
1
+ # Generators dependencies.
2
+ require "thor"
3
+ require "pathname"
4
+
5
+ # `uuids` generators code.
6
+ Dir[File.expand_path("../generators/**/*.rb", __FILE__)].each { |f| require f }
7
+
8
+ # Namespace for generators.
9
+ module Generators
10
+ end
data/lib/uuids/version.rb CHANGED
@@ -1,6 +1,5 @@
1
- # Namespace for a module
2
1
  module Uuids
3
2
 
4
3
  # Current release.
5
- VERSION = "1.4.0"
4
+ VERSION = "1.4.1"
6
5
  end
data/lib/uuids.rb CHANGED
@@ -3,8 +3,11 @@ require "active_record"
3
3
  require "i18n"
4
4
  require "securerandom"
5
5
 
6
- # Loads gem content.
6
+ # `uuids` gem content.
7
7
  root = File.expand_path "../..", __FILE__
8
- %w(lib app).each do |dir|
9
- Dir[File.join(root, dir, "/**/*.rb")].each { |f| require f }
8
+ Dir[File.join(root, "lib/uuids/**/*.rb")].each { |f| require f }
9
+ Dir[File.join(root, "app/**/*.rb")].each { |f| require f }
10
+
11
+ # Namespace for `uuids` gem code.
12
+ module Uuids
10
13
  end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ require "spec_helper_dev"
3
+
4
+ describe "$ uuids", :sandbox do
5
+
6
+ let(:files_in_sandbox) { Dir["#{ sandbox }/**/*.*"] }
7
+
8
+ describe "install" do
9
+
10
+ context "without options" do
11
+
12
+ let!(:dir) { "#{ sandbox }/db/migrate" }
13
+ before { run_in_sandbox "uuids install" }
14
+
15
+ it "copies migrations to 'db/migrate'" do
16
+ migrations.each { |file| expect(dir).to have_migration_from file }
17
+ end
18
+
19
+ it "doesn't add other files" do
20
+ expect(files_in_sandbox.count).to eq migrations.count
21
+ end
22
+ end
23
+
24
+ context "-d" do
25
+
26
+ let!(:dir) { "#{ sandbox }/spec/dummy/db/migrate" }
27
+ before { run_in_sandbox "uuids install -d" }
28
+
29
+ it "copies migrations to 'spec/dummy/db/migrate'" do
30
+ migrations.each { |file| expect(dir).to have_migration_from file }
31
+ end
32
+
33
+ it "doesn't add other files" do
34
+ expect(files_in_sandbox.count).to eq migrations.count
35
+ end
36
+ end
37
+
38
+ context "-f folder" do
39
+
40
+ let!(:dir) { "#{ sandbox }/folder/db/migrate" }
41
+ before { run_in_sandbox "uuids install -f folder" }
42
+
43
+ it "copies migrations to 'some_path/db/migrate'" do
44
+ migrations.each { |file| expect(dir).to have_migration_from file }
45
+ end
46
+
47
+ it "doesn't add other files" do
48
+ expect(files_in_sandbox.count).to eq migrations.count
49
+ end
50
+ end
51
+ end
52
+ end
Binary file
@@ -0,0 +1,66 @@
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
@@ -0,0 +1,73 @@
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
File without changes
data/spec/spec_helper.rb CHANGED
@@ -2,10 +2,11 @@
2
2
  require "coveralls"
3
3
  Coveralls.wear! "rails"
4
4
 
5
- # Loads dummy application.
5
+ # Loads dummy app.
6
6
  require_relative "dummy/lib/dummy"
7
7
 
8
- # Loads RSpec initializers and FactoryGirl factories.
9
- %w(initializers factories).each do |dir|
10
- Dir[File.expand_path("../#{ dir }/*.rb", __FILE__)].each { |f| require f }
8
+ # Loads support files for runtime tests.
9
+ %w(runtime all).each do |env|
10
+ support = File.expand_path "../support/#{ env }/**/*.rb", __FILE__
11
+ Dir[support].each { |f| require f }
11
12
  end
@@ -0,0 +1,15 @@
1
+ # Helper for testing dev environment features (generators) outside of
2
+ # applications (both lib/uuids and dummy).
3
+
4
+ # Checks code
5
+ require "coveralls"
6
+ Coveralls.wear! "rails"
7
+
8
+ # Loads generators.
9
+ require_relative "../lib/generators"
10
+
11
+ # Loads support files for development tests.
12
+ %w(development all).each do |env|
13
+ support = File.expand_path "../support/#{ env }/**/*.rb", __FILE__
14
+ Dir[support].each { |f| require f }
15
+ end
File without changes
File without changes
@@ -1,5 +1,5 @@
1
1
  # Defines `prepare_sandbox` and `clear_sandbox` methods.
2
- require "support/sandbox"
2
+ require_relative "../helpers/sandbox"
3
3
 
4
4
  RSpec.configure do |config|
5
5
 
@@ -0,0 +1 @@
1
+ require "timecop"
@@ -0,0 +1,6 @@
1
+ # Returns a list of all module's migrations.
2
+ def migrations
3
+ @migrations ||= begin
4
+ Dir[File.expand_path "../../../../../db/migrate/*.rb", __FILE__]
5
+ end
6
+ end
@@ -2,7 +2,7 @@ require_relative "capture"
2
2
 
3
3
  # Path to the `tmp/sandbox`.
4
4
  def sandbox
5
- @sandbox ||= File.expand_path "../../../tmp/sandbox", __FILE__
5
+ @sandbox ||= File.expand_path "../../../../../tmp/sandbox", __FILE__
6
6
  end
7
7
 
8
8
  # Clears `tmp/sandbox`.
@@ -27,18 +27,3 @@ def run_in_sandbox(command)
27
27
  try_in_sandbox { result = `#{ command }` }
28
28
  result
29
29
  end
30
-
31
- # Checks if a file with given name exists in the sandbox.
32
- #
33
- # @example
34
- #
35
- # it "adds file.rb", :sandbox do
36
- # expect("file.rb").to present_in_sandbox
37
- # end
38
- #
39
- RSpec::Matchers.define :present_in_sandbox do
40
- match do |filename|
41
- file = File.join(sandbox, filename)
42
- expect(File.exist? file).to be_truthy
43
- end
44
- end
@@ -0,0 +1,15 @@
1
+ # Checks if a directory has a migration from given source file.
2
+ RSpec::Matchers.define :have_migration_from do |source|
3
+ match do |dir|
4
+
5
+ # Search file that matches source with any timestamp.
6
+ basename = File.basename(source, ".rb")[14..-1]
7
+ sample = "*#{ basename }.uuids.rb"
8
+ search = File.join(dir, sample)
9
+ file = Dir[search].first
10
+
11
+ # Check the file exists and has required content.
12
+ expect(file).not_to be_nil
13
+ expect(File.read file).to eq File.read source
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # Checks if a file with given name exists in the sandbox.
2
+ #
3
+ # @example
4
+ #
5
+ # it "adds file.rb", :sandbox do
6
+ # expect("file.rb").to present_in_sandbox
7
+ # end
8
+ #
9
+ RSpec::Matchers.define :present_in_sandbox do
10
+ match do |filename|
11
+ file = File.join(sandbox, filename)
12
+ expect(File.exist? file).to be_truthy
13
+ end
14
+ 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.0
4
+ version: 1.4.1
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-13 00:00:00.000000000 Z
11
+ date: 2014-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
47
+ version: '0.19'
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.19'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: database_cleaner
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '10.3'
167
+ - !ruby/object:Gem::Dependency
168
+ name: timecop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.7'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.7'
167
181
  description: AR model to store uuids assigned to various resources. It is expected
168
182
  a resource can be identified by many UUIDs.
169
183
  email: andrew.kozin@gmail.com
@@ -183,12 +197,15 @@ files:
183
197
  - config/locales/en.yml
184
198
  - config/locales/ru.yml
185
199
  - db/migrate/20141016112506_create_uuids_uuids.rb
200
+ - lib/generators.rb
201
+ - lib/generators/install.rb
202
+ - lib/generators/install/copy_migration.rb
186
203
  - lib/uuids.rb
187
204
  - lib/uuids/base.rb
188
205
  - lib/uuids/base/has_uuids.rb
189
- - lib/uuids/generators/install.rb
190
- - lib/uuids/generators/install/migration.rb
191
206
  - lib/uuids/version.rb
207
+ - spec/app/models/uuids/uuid_spec.rb
208
+ - spec/bin/uuids_spec.rb
192
209
  - spec/dummy/Rakefile
193
210
  - spec/dummy/app/models/city.rb
194
211
  - spec/dummy/app/models/record.rb
@@ -202,26 +219,27 @@ files:
202
219
  - spec/dummy/db/schema.rb
203
220
  - spec/dummy/db/test.sqlite3
204
221
  - spec/dummy/lib/dummy.rb
205
- - spec/factories/records.rb
206
- - spec/factories/uuids.rb
207
- - spec/initializers/database_cleaner.rb
208
- - spec/initializers/factory_girl.rb
209
- - spec/initializers/focus.rb
210
- - spec/initializers/garbage_collection.rb
211
- - spec/initializers/i18n.rb
212
- - spec/initializers/migrations.rb
213
- - spec/initializers/random_order.rb
214
- - spec/initializers/rspec.rb
215
- - spec/initializers/sandbox.rb
222
+ - spec/lib/generators/install/copy_migration_spec.rb
223
+ - spec/lib/generators/install_spec.rb
224
+ - spec/lib/uuids/base_spec.rb
216
225
  - spec/spec_helper.rb
217
- - spec/support/capture.rb
218
- - spec/support/migrations.rb
219
- - spec/support/sandbox.rb
220
- - spec/uuids/cli/install_spec.rb
221
- - spec/uuids/lib/base_spec.rb
222
- - spec/uuids/lib/generators/install/migration_spec.rb
223
- - spec/uuids/lib/generators/install_spec.rb
224
- - spec/uuids/models/uuid_spec.rb
226
+ - spec/spec_helper_dev.rb
227
+ - spec/support/all/config/focus.rb
228
+ - spec/support/all/config/garbage_collection.rb
229
+ - spec/support/all/config/random_order.rb
230
+ - spec/support/all/config/rspec.rb
231
+ - spec/support/development/config/sandbox.rb
232
+ - spec/support/development/config/timecop.rb
233
+ - spec/support/development/helpers/capture.rb
234
+ - spec/support/development/helpers/migrations.rb
235
+ - spec/support/development/helpers/sandbox.rb
236
+ - spec/support/development/matchers/migrations.rb
237
+ - spec/support/development/matchers/sandbox.rb
238
+ - spec/support/runtime/config/database_cleaner.rb
239
+ - spec/support/runtime/config/factory_girl.rb
240
+ - spec/support/runtime/config/i18n.rb
241
+ - spec/support/runtime/factories/records.rb
242
+ - spec/support/runtime/factories/uuids.rb
225
243
  homepage: https://github.com/nepalez/uuids
226
244
  licenses:
227
245
  - MIT
@@ -247,11 +265,7 @@ signing_key:
247
265
  specification_version: 4
248
266
  summary: UUIDs AR model.
249
267
  test_files:
250
- - spec/uuids/cli/install_spec.rb
251
- - spec/uuids/models/uuid_spec.rb
252
- - spec/uuids/lib/generators/install/migration_spec.rb
253
- - spec/uuids/lib/generators/install_spec.rb
254
- - spec/uuids/lib/base_spec.rb
268
+ - spec/spec_helper_dev.rb
255
269
  - spec/spec_helper.rb
256
270
  - spec/dummy/config/environment.rb
257
271
  - spec/dummy/config/database.yml
@@ -266,20 +280,27 @@ test_files:
266
280
  - spec/dummy/app/models/city.rb
267
281
  - spec/dummy/lib/dummy.rb
268
282
  - spec/dummy/Rakefile
269
- - spec/factories/uuids.rb
270
- - spec/factories/records.rb
271
- - spec/initializers/garbage_collection.rb
272
- - spec/initializers/i18n.rb
273
- - spec/initializers/factory_girl.rb
274
- - spec/initializers/focus.rb
275
- - spec/initializers/sandbox.rb
276
- - spec/initializers/database_cleaner.rb
277
- - spec/initializers/migrations.rb
278
- - spec/initializers/random_order.rb
279
- - spec/initializers/rspec.rb
280
- - spec/support/capture.rb
281
- - spec/support/sandbox.rb
282
- - spec/support/migrations.rb
283
+ - spec/app/models/uuids/uuid_spec.rb
284
+ - spec/lib/generators/install/copy_migration_spec.rb
285
+ - spec/lib/generators/install_spec.rb
286
+ - spec/lib/uuids/base_spec.rb
287
+ - spec/bin/uuids_spec.rb
288
+ - spec/support/development/config/timecop.rb
289
+ - spec/support/development/config/sandbox.rb
290
+ - spec/support/development/matchers/sandbox.rb
291
+ - spec/support/development/matchers/migrations.rb
292
+ - spec/support/development/helpers/capture.rb
293
+ - spec/support/development/helpers/sandbox.rb
294
+ - spec/support/development/helpers/migrations.rb
295
+ - spec/support/all/config/garbage_collection.rb
296
+ - spec/support/all/config/focus.rb
297
+ - spec/support/all/config/random_order.rb
298
+ - spec/support/all/config/rspec.rb
299
+ - spec/support/runtime/config/i18n.rb
300
+ - spec/support/runtime/config/factory_girl.rb
301
+ - spec/support/runtime/config/database_cleaner.rb
302
+ - spec/support/runtime/factories/uuids.rb
303
+ - spec/support/runtime/factories/records.rb
283
304
  - Rakefile
284
305
  - ".rubocop.yml"
285
306
  has_rdoc:
@@ -1,62 +0,0 @@
1
- # encoding: utf-8
2
- require_relative "../install"
3
-
4
- module Uuids
5
- module Generators
6
- class Install
7
-
8
- # Description for migration to copy.
9
- #
10
- # @example
11
- # migration = Migration.new(
12
- # "/uuids/db/migrate/20141016112506_create_uuids_uuids.rb"
13
- # )
14
- # migration.source
15
- # # => "/uuids/db/migrate/20141016112506_create_uuids_uuids.rb"
16
- # migration.target
17
- # # => "20150101000001_create_uuids_uuids.uuids.rb"
18
- # migration.content
19
- # # => returns uuids content.
20
- #
21
- class Migration
22
-
23
- # A source file for migration.
24
- attr_reader :source
25
-
26
- # Initializes the migration from given source file.
27
- #
28
- # @example
29
- # migration = Migration.new(
30
- # "/uuids/db/migrate/20141016112506_create_uuids_uuids.rb"
31
- # )
32
- #
33
- # Params:
34
- # +source+:: A file name to initalize a migration from.
35
- #
36
- def initialize(source)
37
- @source = source
38
- end
39
-
40
- # Returns a target file name to copy the migration to.
41
- def target
42
- @target ||= "#{ timestamp }#{ basename }.uuids.rb"
43
- end
44
-
45
- # Returns the migration content .
46
- def content
47
- @content ||= File.read source
48
- end
49
-
50
- private
51
-
52
- def timestamp
53
- @timestamp ||= Time.now.utc.strftime "%Y%m%d%H%M%S"
54
- end
55
-
56
- def basename
57
- @basename ||= File.basename(source, ".rb")[14..-1]
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,84 +0,0 @@
1
- # encoding: utf-8
2
- require "thor"
3
-
4
- module Uuids
5
-
6
- # A namespace for +Uuids+ thor-based generators.
7
- module Generators
8
-
9
- # An installer for the module. Copies module migration to external gem.
10
- #
11
- # @example
12
- # installer = Uuids::Generators::Install.start [], { dummy: true }
13
- # # => creates `spec/dummy/db/migrage/{timestamp}_uuids_uuids.uuids.rb
14
- #
15
- # Options:
16
- # <tt>dummy:</tt> (optional, boolean, default: false)
17
- # ... flag to copy migrations to a dummy app. If not set, the migration
18
- # will be added to the root `db/migrate` folder.
19
- #
20
- # Adds the "uuids" gem's migration to a module that uses the gem.
21
- #
22
- class Install < Thor::Group
23
- include Thor::Actions
24
-
25
- class_option(
26
- :dummy,
27
- aliases: "-d",
28
- default: false,
29
- desc: "Copy migrations to dummy (`spec/dummy/db/migrate`) folder.",
30
- required: false,
31
- type: :boolean
32
- )
33
-
34
- class_option(
35
- :folder,
36
- aliases: "-f",
37
- desc: "A folder to copy migrations to (`given_folder/db/migrate`).",
38
- required: false,
39
- type: :string
40
- )
41
-
42
- # Creates a folder for migrations.
43
- def prepare_folder
44
- empty_directory dir, skip: true
45
- end
46
-
47
- # Copies migrations to proper folder
48
- def copy_migrations
49
- migrations.each do |migration|
50
- FileUtils.copy_file(
51
- migration.source,
52
- "#{ destination_root }/#{ dir }#{ migration.target }",
53
- migration.content
54
- )
55
- end
56
- end
57
-
58
- private
59
-
60
- def dir
61
- @dir ||= "#{ folder || dummy || "" }db/migrate/"
62
- end
63
-
64
- def folder
65
- @folder ||= begin
66
- folder = options["folder"]
67
- folder ? "#{ folder }/" : nil
68
- end
69
- end
70
-
71
- def dummy
72
- @dummy ||= "spec/dummy/" if options["dummy"]
73
- end
74
-
75
- def sources
76
- @sources ||= Dir[File.expand_path "../../db/migrate/*.rb"]
77
- end
78
-
79
- def migrations
80
- @migrations ||= sources.map { |source| Migration.new source }
81
- end
82
- end
83
- end
84
- end
@@ -1,3 +0,0 @@
1
- require "active_record"
2
-
3
- ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
@@ -1,16 +0,0 @@
1
- # Returns a list of all module's migrations.
2
- def migrations
3
- @migrations ||= begin
4
- Dir[File.expand_path "../../../db/migrate/*.rb", __FILE__]
5
- end
6
- end
7
-
8
- # Checks if a directory has a migration from given source file.
9
- RSpec::Matchers.define :have_migration_from do |source|
10
- match do |dir|
11
- search = "#{ dir }/*#{ File.basename(source, ".rb")[14..-1] }.uuids.rb"
12
- file = Dir[search].first
13
- expect(file).not_to be_nil
14
- expect(File.read file).to eq File.read source
15
- end
16
- end
@@ -1,49 +0,0 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
-
4
- describe "$ uuids install", :sandbox do
5
-
6
- let(:files_in_sandbox) { Dir["#{ sandbox }/**/*.*"] }
7
-
8
- context "without options" do
9
-
10
- let!(:dir) { "#{ sandbox }/db/migrate" }
11
- before { run_in_sandbox "uuids install" }
12
-
13
- it "copies migrations to 'db/migrate'" do
14
- migrations.each { |file| expect(dir).to have_migration_from file }
15
- end
16
-
17
- it "doesn't add other files" do
18
- expect(files_in_sandbox.count).to eq migrations.count
19
- end
20
- end
21
-
22
- context "-d" do
23
-
24
- let!(:dir) { "#{ sandbox }/spec/dummy/db/migrate" }
25
- before { run_in_sandbox "uuids install -d" }
26
-
27
- it "copies migrations to 'spec/dummy/db/migrate'" do
28
- migrations.each { |file| expect(dir).to have_migration_from file }
29
- end
30
-
31
- it "doesn't add other files" do
32
- expect(files_in_sandbox.count).to eq migrations.count
33
- end
34
- end
35
-
36
- context "-f folder" do
37
-
38
- let!(:dir) { "#{ sandbox }/folder/db/migrate" }
39
- before { run_in_sandbox "uuids install -f folder" }
40
-
41
- it "copies migrations to 'some_path/db/migrate'" do
42
- migrations.each { |file| expect(dir).to have_migration_from file }
43
- end
44
-
45
- it "doesn't add other files" do
46
- expect(files_in_sandbox.count).to eq migrations.count
47
- end
48
- end
49
- end
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
-
4
- module Uuids
5
- module Generators
6
- class Install
7
- describe Migration, :sandbox do
8
-
9
- let(:filename) { "20140101010101_create_items_items" }
10
- let(:filepath) { "#{ sandbox }/#{ filename }.rb" }
11
- let(:content) { "some content" }
12
-
13
- before { File.write filepath, content }
14
- subject { Migration.new filepath }
15
-
16
- describe "#source" do
17
-
18
- it "returns migrations source" do
19
- expect(subject.source).to eq filepath
20
- end
21
- end
22
-
23
- describe "#target" do
24
-
25
- it "returns the name of migration target" do
26
- target = subject.target
27
- expect(target[0..13]).to match(/\d{14}/)
28
- expect(target[14..-1]).to eq "#{ filename[14..-1] }.uuids.rb"
29
- end
30
- end
31
-
32
- describe "#content" do
33
-
34
- it "returns the migration content" do
35
- expect(subject.content).to eq content
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,64 +0,0 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
- require "support/migrations"
4
-
5
- module Uuids
6
- module Generators
7
- describe Install, :sandbox do
8
-
9
- describe "#invoke_all" do
10
-
11
- def run_with_options(options = {})
12
- try_in_sandbox do
13
- subject = Uuids::Generators::Install.new [], options
14
- subject.invoke_all
15
- end
16
- end
17
-
18
- let(:files_in_sandbox) { Dir["#{ sandbox }/**/*.*"] }
19
-
20
- context "without options" do
21
-
22
- let!(:dir) { "#{ sandbox }/db/migrate" }
23
- before { run_with_options }
24
-
25
- it "copies migrations to 'db/migrate'" do
26
- migrations.each { |file| expect(dir).to have_migration_from file }
27
- end
28
-
29
- it "doesn't add other files" do
30
- expect(files_in_sandbox.count).to eq migrations.count
31
- end
32
- end
33
-
34
- context "dummy: true" do
35
-
36
- let!(:dir) { "#{ sandbox }/spec/dummy/db/migrate" }
37
- before { run_with_options dummy: true }
38
-
39
- it "copies migrations to 'spec/dummy/db/migrate'" do
40
- migrations.each { |file| expect(dir).to have_migration_from file }
41
- end
42
-
43
- it "doesn't add other files" do
44
- expect(files_in_sandbox.count).to eq migrations.count
45
- end
46
- end
47
-
48
- context "folder: 'folder'" do
49
-
50
- let!(:dir) { "#{ sandbox }/folder/db/migrate" }
51
- before { run_with_options folder: "folder" }
52
-
53
- it "copies migrations to 'some_path/db/migrate'" do
54
- migrations.each { |file| expect(dir).to have_migration_from file }
55
- end
56
-
57
- it "doesn't add other files" do
58
- expect(files_in_sandbox.count).to eq migrations.count
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end