capistrano-alchemy 1.0.0 → 2.0.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 +5 -5
- data/.rspec +1 -0
- data/capistrano-alchemy.gemspec +1 -4
- data/lib/capistrano/alchemy/version.rb +1 -1
- data/lib/capistrano/alchemy.rb +1 -5
- data/lib/capistrano/tasks/alchemy.rake +30 -58
- metadata +12 -41
- data/lib/capistrano/alchemy/deploy_support.rb +0 -59
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: b73822a4e394141f9c35c6296e9bbb7f86030fda9cc78765c5aa23c70abcd275
|
|
4
|
+
data.tar.gz: e4422807f16f7915717d7c0d9037d543ac5a879feb30658f7af3f3bff371e297
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b35211b07a8189a0c7142893e52e7f452ac0249613b0b00ec8af0dd3d95dc3e4658f4d8e23d54a86e08cbf8437abf3d1822b3b5a497cfcd0e3d5c0fa5418a23c
|
|
7
|
+
data.tar.gz: 5fb58e7895293a10575830e85b43b1aa1844d12e1eb2820f9739e4c8b923858ee6a3c68b7acf0f2fc2dd0e7b1935a805bb28cc6d0559fd41b8dd4619dae72c41
|
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--require spec_helper
|
data/capistrano-alchemy.gemspec
CHANGED
|
@@ -18,8 +18,5 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.require_paths = ["lib"]
|
|
19
19
|
|
|
20
20
|
spec.add_dependency "capistrano-rails", "~> 1.1"
|
|
21
|
-
|
|
22
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
|
23
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
24
|
-
spec.add_development_dependency 'alchemy_cms', "~> 3.0"
|
|
21
|
+
spec.add_dependency "capistrano-db-tasks", "~> 0.6"
|
|
25
22
|
end
|
data/lib/capistrano/alchemy.rb
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
require "capistrano/alchemy/version"
|
|
2
2
|
|
|
3
3
|
require 'fileutils'
|
|
4
|
-
require '
|
|
5
|
-
require 'capistrano/alchemy/deploy_support'
|
|
6
|
-
|
|
7
|
-
include Alchemy::Tasks::Helpers
|
|
8
|
-
include Capistrano::Alchemy::DeploySupport
|
|
4
|
+
require 'capistrano-db-tasks'
|
|
9
5
|
|
|
10
6
|
load File.expand_path('../tasks/alchemy.rake', __FILE__)
|
|
11
7
|
load File.expand_path('../tasks/alchemy_capistrano_hooks.rake', __FILE__)
|
|
@@ -2,100 +2,72 @@ namespace :alchemy do
|
|
|
2
2
|
|
|
3
3
|
# Prepare Alchemy for deployment
|
|
4
4
|
task :default_paths do
|
|
5
|
-
set :linked_dirs, fetch(:linked_dirs, []) + %w(uploads)
|
|
5
|
+
set :linked_dirs, fetch(:linked_dirs, []) + %w(uploads public/pictures)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
namespace :db do
|
|
9
9
|
desc "Dumps the database into 'db/dumps' on the server."
|
|
10
10
|
task dump: ['alchemy:default_paths', 'deploy:check'] do
|
|
11
|
+
|
|
11
12
|
on roles :db do
|
|
12
|
-
|
|
13
|
-
timestamp = Time.now.strftime('%Y-%m-%d-%H-%M')
|
|
14
|
-
execute :mkdir, '-p', 'db/dumps'
|
|
15
|
-
with dump_filename: "db/dumps/#{timestamp}.sql", rails_env: fetch(:rails_env, 'production') do
|
|
16
|
-
execute :rake, 'alchemy:db:dump'
|
|
17
|
-
end
|
|
18
|
-
end
|
|
13
|
+
Database::Remote.new(self).dump
|
|
19
14
|
end
|
|
20
15
|
end
|
|
21
16
|
end
|
|
22
17
|
|
|
23
18
|
namespace :import do
|
|
24
19
|
desc "Imports all data (Pictures, attachments and the database) into your local development machine."
|
|
25
|
-
task all: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
puts "\n"
|
|
31
|
-
invoke('alchemy:import:database')
|
|
32
|
-
end
|
|
33
|
-
end
|
|
20
|
+
task all: [
|
|
21
|
+
'alchemy:import:attachments',
|
|
22
|
+
'alchemy:import:pictures',
|
|
23
|
+
'alchemy:import:database'
|
|
24
|
+
]
|
|
34
25
|
|
|
35
26
|
desc "Imports the server database into your local development machine."
|
|
36
|
-
task database: ['alchemy:default_paths', 'deploy:check']
|
|
37
|
-
on roles :db do |server|
|
|
38
|
-
puts '## Importing database'
|
|
39
|
-
puts ' Please wait! This may take some time...'
|
|
40
|
-
system db_import_cmd(server)
|
|
41
|
-
puts ' done.'
|
|
42
|
-
end
|
|
43
|
-
end
|
|
27
|
+
task database: ['db:local:sync', 'alchemy:default_paths', 'deploy:check']
|
|
44
28
|
|
|
45
29
|
desc "Imports attachments into your local machine using rsync."
|
|
46
30
|
task attachments: ['alchemy:default_paths', 'deploy:check'] do
|
|
47
|
-
|
|
48
|
-
|
|
31
|
+
set :assets_dir, %w(uploads/attachments)
|
|
32
|
+
set :local_assets_dir, %w(uploads)
|
|
33
|
+
on roles [:app, :db] do
|
|
34
|
+
invoke('assets:local:sync')
|
|
49
35
|
end
|
|
50
36
|
end
|
|
51
37
|
|
|
52
38
|
desc "Imports pictures into your local machine using rsync."
|
|
53
39
|
task pictures: ['alchemy:default_paths', 'deploy:check'] do
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
set :assets_dir, %w(public/pictures uploads/pictures)
|
|
41
|
+
set :local_assets_dir, %w(public uploads)
|
|
42
|
+
on roles [:app, :db] do
|
|
43
|
+
invoke('assets:local:sync')
|
|
56
44
|
end
|
|
57
45
|
end
|
|
58
46
|
end
|
|
59
47
|
|
|
60
48
|
namespace :export do
|
|
61
49
|
desc "Sends all data (Pictures, attachments and the database) to your remote machine."
|
|
62
|
-
task all: [
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
50
|
+
task all: [
|
|
51
|
+
'alchemy:export:attachments',
|
|
52
|
+
'alchemy:export:pictures',
|
|
53
|
+
'alchemy:export:database'
|
|
54
|
+
]
|
|
67
55
|
|
|
68
|
-
desc "
|
|
69
|
-
task database: ['alchemy:default_paths', 'deploy:check']
|
|
70
|
-
on roles :db do |host|
|
|
71
|
-
within release_path do
|
|
72
|
-
if ask(:backup_confirm, 'WARNING: This task will overwrite your remote database. Do you want me to make a backup? (y/n)') == "y"
|
|
73
|
-
backup_database
|
|
74
|
-
export_database(host)
|
|
75
|
-
else
|
|
76
|
-
if ask(:overwrite_confirm, 'Are you sure? (y/n)') == "y"
|
|
77
|
-
export_database(host)
|
|
78
|
-
else
|
|
79
|
-
backup_database
|
|
80
|
-
export_database(host)
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
56
|
+
desc "Exports the local database into your server."
|
|
57
|
+
task database: ['db:remote:sync', 'alchemy:default_paths', 'deploy:check']
|
|
86
58
|
|
|
87
59
|
desc "Sends attachments to your remote machine using rsync."
|
|
88
60
|
task attachments: ['alchemy:default_paths', 'deploy:check'] do
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
61
|
+
set :assets_dir, %w(uploads/attachments)
|
|
62
|
+
set :local_assets_dir, %w(uploads)
|
|
63
|
+
invoke('assets:remote:sync')
|
|
92
64
|
end
|
|
93
65
|
|
|
94
66
|
desc "Sends pictures to your remote machine using rsync."
|
|
95
67
|
task pictures: ['alchemy:default_paths', 'deploy:check'] do
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
68
|
+
set :assets_dir, %w(public/pictures uploads/attachments)
|
|
69
|
+
set :local_assets_dir, %w(public uploads)
|
|
70
|
+
invoke('assets:remote:sync')
|
|
99
71
|
end
|
|
100
72
|
end
|
|
101
73
|
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capistrano-alchemy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Meyerhoff
|
|
8
8
|
- Thomas von Deyen
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2023-03-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: capistrano-rails
|
|
@@ -26,48 +26,20 @@ dependencies:
|
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
27
|
version: '1.1'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
29
|
+
name: capistrano-db-tasks
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '
|
|
35
|
-
type: :
|
|
36
|
-
prerelease: false
|
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
-
requirements:
|
|
39
|
-
- - "~>"
|
|
40
|
-
- !ruby/object:Gem::Version
|
|
41
|
-
version: '1.7'
|
|
42
|
-
- !ruby/object:Gem::Dependency
|
|
43
|
-
name: rake
|
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
|
45
|
-
requirements:
|
|
46
|
-
- - "~>"
|
|
47
|
-
- !ruby/object:Gem::Version
|
|
48
|
-
version: '10.0'
|
|
49
|
-
type: :development
|
|
50
|
-
prerelease: false
|
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
-
requirements:
|
|
53
|
-
- - "~>"
|
|
54
|
-
- !ruby/object:Gem::Version
|
|
55
|
-
version: '10.0'
|
|
56
|
-
- !ruby/object:Gem::Dependency
|
|
57
|
-
name: alchemy_cms
|
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
|
59
|
-
requirements:
|
|
60
|
-
- - "~>"
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: '3.0'
|
|
63
|
-
type: :development
|
|
34
|
+
version: '0.6'
|
|
35
|
+
type: :runtime
|
|
64
36
|
prerelease: false
|
|
65
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
38
|
requirements:
|
|
67
39
|
- - "~>"
|
|
68
40
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '
|
|
70
|
-
description:
|
|
41
|
+
version: '0.6'
|
|
42
|
+
description:
|
|
71
43
|
email:
|
|
72
44
|
- mamhoff@googlemail.com
|
|
73
45
|
- thomas@vondeyen.com
|
|
@@ -76,6 +48,7 @@ extensions: []
|
|
|
76
48
|
extra_rdoc_files: []
|
|
77
49
|
files:
|
|
78
50
|
- ".gitignore"
|
|
51
|
+
- ".rspec"
|
|
79
52
|
- Gemfile
|
|
80
53
|
- LICENSE.txt
|
|
81
54
|
- README.md
|
|
@@ -83,7 +56,6 @@ files:
|
|
|
83
56
|
- capistrano-alchemy.gemspec
|
|
84
57
|
- lib/capistrano-alchemy.rb
|
|
85
58
|
- lib/capistrano/alchemy.rb
|
|
86
|
-
- lib/capistrano/alchemy/deploy_support.rb
|
|
87
59
|
- lib/capistrano/alchemy/version.rb
|
|
88
60
|
- lib/capistrano/tasks/alchemy.rake
|
|
89
61
|
- lib/capistrano/tasks/alchemy_capistrano_hooks.rake
|
|
@@ -91,7 +63,7 @@ homepage: https://alchemy-cms.com
|
|
|
91
63
|
licenses:
|
|
92
64
|
- MIT
|
|
93
65
|
metadata: {}
|
|
94
|
-
post_install_message:
|
|
66
|
+
post_install_message:
|
|
95
67
|
rdoc_options: []
|
|
96
68
|
require_paths:
|
|
97
69
|
- lib
|
|
@@ -106,9 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
106
78
|
- !ruby/object:Gem::Version
|
|
107
79
|
version: '0'
|
|
108
80
|
requirements: []
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
signing_key:
|
|
81
|
+
rubygems_version: 3.2.33
|
|
82
|
+
signing_key:
|
|
112
83
|
specification_version: 4
|
|
113
84
|
summary: Capistrano Tasks for AlchemyCMS.
|
|
114
85
|
test_files: []
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
module Capistrano::Alchemy::DeploySupport
|
|
2
|
-
# Makes a backup of the remote database and stores it in db/ folder
|
|
3
|
-
def backup_database
|
|
4
|
-
puts 'Backing up database'
|
|
5
|
-
timestamp = Time.now.strftime('%Y-%m-%d-%H-%M')
|
|
6
|
-
rake "RAILS_ENV=#{fetch(:rails_env, 'production')} alchemy:db:dump DUMP_FILENAME=db/dump-#{timestamp}.sql"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# Sends the database via ssh to the server
|
|
10
|
-
def export_database(server)
|
|
11
|
-
puts "Exporting the database. Please wait..."
|
|
12
|
-
system db_export_cmd(server)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def db_import_cmd(server)
|
|
16
|
-
raise "No server given" if !server
|
|
17
|
-
env = "RAILS_ENV=#{fetch(:rails_env, 'production')}"
|
|
18
|
-
dump_cmd = "cd #{release_path} && #{rake_cmd} alchemy:db:dump #{env}"
|
|
19
|
-
sql_stream = "#{ssh_command(server)} '#{dump_cmd}'"
|
|
20
|
-
"#{sql_stream} | #{database_import_command(database_config['adapter'])} 1>/dev/null 2>&1"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# The actual export command that sends the data
|
|
24
|
-
def db_export_cmd(server)
|
|
25
|
-
raise "No server given" if !server
|
|
26
|
-
env = "RAILS_ENV=#{fetch(:rails_env, 'production')}"
|
|
27
|
-
import_cmd = "cd #{release_path} && #{rake_cmd} alchemy:db:import #{env}"
|
|
28
|
-
ssh_cmd = "#{ssh_command(server)} '#{import_cmd}'"
|
|
29
|
-
"#{database_dump_command(database_config['adapter'])} | #{ssh_cmd}"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Sends files of given type via rsync to server
|
|
33
|
-
def send_files(type, server)
|
|
34
|
-
raise "No server given" if !server
|
|
35
|
-
FileUtils.mkdir_p "./uploads/#{type}"
|
|
36
|
-
system "rsync --progress -rue 'ssh -p #{ssh_port(server)}' uploads/#{type} #{server.user}@#{server.hostname}:#{shared_path}/uploads/"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def get_files(type, server)
|
|
40
|
-
raise "No server given" if !server
|
|
41
|
-
FileUtils.mkdir_p "./uploads"
|
|
42
|
-
puts "Importing #{type}. Please wait..."
|
|
43
|
-
system "rsync --progress -rue 'ssh -p #{ssh_port(server)}' #{server.user}@#{server.hostname}:#{shared_path}/uploads/#{type} ./uploads/"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
def ssh_command(server)
|
|
49
|
-
"ssh -C -p #{ssh_port(server)} #{server.user}@#{server.hostname}"
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def ssh_port(server)
|
|
53
|
-
server.port || 22
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def rake_cmd
|
|
57
|
-
SSHKit.config.command_map[:rake]
|
|
58
|
-
end
|
|
59
|
-
end
|