cloner 0.6.1 → 0.7.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 +4 -4
- data/README.md +61 -30
- data/cloner.gemspec +2 -2
- data/lib/cloner/mysql.rb +2 -2
- data/lib/cloner/version.rb +1 -1
- data/lib/generators/cloner_generator.rb +25 -0
- data/lib/generators/templates/cloner_base.template +29 -0
- data/lib/generators/templates/cloner_extend.thor.erb +72 -0
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8ad225c2837f9ea7b93560944d9ff6ad641e7d18df60c8cd4ac5524e939d79b
|
4
|
+
data.tar.gz: 4c69cf30e30e30802c8b8ad623717a2be50edba203504dfdae3fddac56ec64c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dde12ab0ebe23b74b0bcd341fd67fbf938167860fd09ed8b55a6948045fb35d25f863f6b6835ee72a18147a3127c127b4a9d1b2f2d6c7f40e31af68e6dc20ab6
|
7
|
+
data.tar.gz: 1d420ba6e269a1a6aa08339370ab4242181bd5f5db4b0185c9a641148c5fd25cc82a8964f820d582ac12294acd395b7a807ddc84f9f5937ec66a235dc290aa95
|
data/README.md
CHANGED
@@ -20,37 +20,44 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
def remote_dump_path
|
39
|
-
'/data/tea/dump'
|
40
|
-
end
|
41
|
-
def remote_app_path
|
42
|
-
"/data/tea/app/current"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "download", "clone files and DB from production"
|
47
|
-
def download
|
48
|
-
load_env
|
49
|
-
clone_db
|
50
|
-
rsync_public("ckeditor_assets")
|
51
|
-
rsync_public("uploads")
|
52
|
-
end
|
23
|
+
For generate cloner base template, run:
|
24
|
+
|
25
|
+
```
|
26
|
+
bundle exec rails generate cloner
|
27
|
+
```
|
28
|
+
|
29
|
+
This is create `lib/tasks/dl.thor` file with following content:
|
30
|
+
```ruby
|
31
|
+
require 'cloner'
|
32
|
+
|
33
|
+
class Dl < Cloner::Base
|
34
|
+
no_commands do
|
35
|
+
def rails_path
|
36
|
+
File.expand_path("../../../config/environment", __FILE__)
|
53
37
|
end
|
38
|
+
def ssh_host
|
39
|
+
'hottea.ru'
|
40
|
+
end
|
41
|
+
def ssh_user
|
42
|
+
'tea'
|
43
|
+
end
|
44
|
+
def remote_dump_path
|
45
|
+
'/data/tea/dump'
|
46
|
+
end
|
47
|
+
def remote_app_path
|
48
|
+
"/data/tea/app/current"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "download", "clone files and DB from production"
|
53
|
+
def download
|
54
|
+
load_env
|
55
|
+
clone_db
|
56
|
+
rsync_public("ckeditor_assets")
|
57
|
+
rsync_public("uploads")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
```
|
54
61
|
|
55
62
|
Adjust it to your project and deployment.
|
56
63
|
|
@@ -58,6 +65,30 @@ Run it:
|
|
58
65
|
|
59
66
|
thor dl
|
60
67
|
|
68
|
+
|
69
|
+
If you generate extended cloner template as: `rails g cloner -e`,
|
70
|
+
you can run `thor dl` with additional parameters, for example:
|
71
|
+
```
|
72
|
+
bundle exec thor dl -D # For skip clone database
|
73
|
+
bundle exec thor dl -F # For skip clone files
|
74
|
+
```
|
75
|
+
|
76
|
+
For details see help:
|
77
|
+
```
|
78
|
+
bundle exec thor help dl:download
|
79
|
+
|
80
|
+
Usage:
|
81
|
+
thor dl:download
|
82
|
+
|
83
|
+
Options:
|
84
|
+
[--from=FROM] # stage name where cloner get data
|
85
|
+
# Default: production
|
86
|
+
-D, [--skip-database], [--no-skip-database] # skip clone database
|
87
|
+
-F, [--skip-files], [--no-skip-files] # skip clone files
|
88
|
+
|
89
|
+
clone files and DB from production
|
90
|
+
```
|
91
|
+
|
61
92
|
## Additional
|
62
93
|
|
63
94
|
All functions from cloner/internal.rb can be overriden, for example:
|
data/cloner.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_dependency "activesupport"
|
23
23
|
spec.add_dependency 'net-ssh'
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler"
|
26
|
-
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
27
|
end
|
28
28
|
|
data/lib/cloner/mysql.rb
CHANGED
@@ -44,8 +44,8 @@ module Cloner::MySQL
|
|
44
44
|
|
45
45
|
def my_dump_restore
|
46
46
|
puts "restoring DB"
|
47
|
-
host = ar_conf['host'].present? ? "
|
48
|
-
port = ar_conf['port'].present? ? "
|
47
|
+
host = ar_conf['host'].present? ? " --host #{e ar_conf['host']}" : ""
|
48
|
+
port = ar_conf['port'].present? ? " --port #{e ar_conf['port']}" : ""
|
49
49
|
restore = "#{my_bin_path 'mysql'} #{my_restore_param} --user #{e ar_conf['username']} #{my_local_auth}#{host}#{port} #{e ar_to} < #{e(my_path + '/cloner.sql')}"
|
50
50
|
puts restore if verbose?
|
51
51
|
pipe = IO.popen(restore)
|
data/lib/cloner/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
class ClonerGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('templates', __dir__)
|
3
|
+
|
4
|
+
class_option :extend, default: false, type: :boolean, aliases: '-e'
|
5
|
+
|
6
|
+
desc "This generator create lib/tasks/dl.thor"
|
7
|
+
def create_task_file
|
8
|
+
unless options[:extend]
|
9
|
+
create_default_task_file
|
10
|
+
else
|
11
|
+
create_extended_task_file
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def create_default_task_file
|
17
|
+
copy_file 'cloner_base.template', 'lib/tasks/dl.thor'
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_extended_task_file
|
21
|
+
say 'Create extend file'
|
22
|
+
@username = Rails.application.class.parent_name.downcase
|
23
|
+
template 'cloner_extend.thor.erb', 'lib/tasks/dl.thor'
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'cloner'
|
2
|
+
|
3
|
+
class Dl < Cloner::Base
|
4
|
+
no_commands do
|
5
|
+
def rails_path
|
6
|
+
File.expand_path("../../../config/environment", __FILE__)
|
7
|
+
end
|
8
|
+
def ssh_host
|
9
|
+
'hottea.ru'
|
10
|
+
end
|
11
|
+
def ssh_user
|
12
|
+
'tea'
|
13
|
+
end
|
14
|
+
def remote_dump_path
|
15
|
+
'/data/tea/dump'
|
16
|
+
end
|
17
|
+
def remote_app_path
|
18
|
+
"/data/tea/app/current"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "download", "clone files and DB from production"
|
23
|
+
def download
|
24
|
+
load_env
|
25
|
+
clone_db
|
26
|
+
rsync_public("ckeditor_assets")
|
27
|
+
rsync_public("uploads")
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'cloner'
|
2
|
+
|
3
|
+
class Dl < Cloner::Base
|
4
|
+
no_commands do
|
5
|
+
def rails_path
|
6
|
+
File.expand_path("../../../config/environment", __FILE__)
|
7
|
+
end
|
8
|
+
def stages
|
9
|
+
@_stages ||= {
|
10
|
+
# TODO: Add new stages here if you needed
|
11
|
+
production: {
|
12
|
+
# TODO: Fix production settings
|
13
|
+
ssh_host: 'production.example.com',
|
14
|
+
ssh_user: '<%= @username %>'
|
15
|
+
},
|
16
|
+
staging: {
|
17
|
+
# TODO: Fix staging settings
|
18
|
+
ssh_host: 'production.example.com',
|
19
|
+
ssh_user: '<%= @username %>'
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
def ssh_host
|
24
|
+
stages.dig(options[:from].to_sym, :ssh_host)
|
25
|
+
end
|
26
|
+
def ssh_user
|
27
|
+
stages.dig(options[:from].to_sym, :ssh_user)
|
28
|
+
end
|
29
|
+
def remote_dump_path
|
30
|
+
# TODO: Fix remote dump path
|
31
|
+
'/data/<%= @username %>/dump'
|
32
|
+
end
|
33
|
+
def remote_app_path
|
34
|
+
# TODO: Fix remote app path
|
35
|
+
'/data/<%= @username %>/app/current'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class_option :from,
|
40
|
+
default: 'production',
|
41
|
+
type: :string,
|
42
|
+
desc: 'stage name where cloner get data'
|
43
|
+
class_option :skip_database,
|
44
|
+
default: false,
|
45
|
+
type: :boolean,
|
46
|
+
aliases: '-D',
|
47
|
+
desc: 'skip clone database'
|
48
|
+
class_option :skip_files,
|
49
|
+
default: false,
|
50
|
+
type: :boolean,
|
51
|
+
aliases: '-F',
|
52
|
+
desc: 'skip clone files'
|
53
|
+
|
54
|
+
desc "download", "clone files and DB from production"
|
55
|
+
def download
|
56
|
+
load_env
|
57
|
+
say "Clone from: #{options[:from]}", :green
|
58
|
+
if options[:skip_database]
|
59
|
+
say "Skip clone database!", :yellow
|
60
|
+
else
|
61
|
+
clone_db
|
62
|
+
end
|
63
|
+
|
64
|
+
if options[:skip_files]
|
65
|
+
say "Skip clone files!", :yellow
|
66
|
+
else
|
67
|
+
# TODO: Fix folders for synchronization here
|
68
|
+
rsync_public("ckeditor_assets")
|
69
|
+
rsync_public("uploads")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebtv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -56,30 +56,30 @@ dependencies:
|
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
description: ''
|
84
84
|
email:
|
85
85
|
- glebtv@gmail.com
|
@@ -106,6 +106,9 @@ files:
|
|
106
106
|
- lib/cloner/rsync.rb
|
107
107
|
- lib/cloner/ssh.rb
|
108
108
|
- lib/cloner/version.rb
|
109
|
+
- lib/generators/cloner_generator.rb
|
110
|
+
- lib/generators/templates/cloner_base.template
|
111
|
+
- lib/generators/templates/cloner_extend.thor.erb
|
109
112
|
homepage: https://github.com/rs-pro/cloner
|
110
113
|
licenses:
|
111
114
|
- MIT
|
@@ -125,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
128
|
- !ruby/object:Gem::Version
|
126
129
|
version: '0'
|
127
130
|
requirements: []
|
128
|
-
|
129
|
-
rubygems_version: 2.7.7
|
131
|
+
rubygems_version: 3.0.3
|
130
132
|
signing_key:
|
131
133
|
specification_version: 4
|
132
134
|
summary: Easily clone your production Mongoid database and files for local development
|