capistrano-shared-file 1.0.1 → 1.1.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.
- checksums.yaml +4 -4
- data/README.md +59 -7
- data/lib/capistrano/shared_file/tasks.rb +13 -2
- data/lib/capistrano/shared_file/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e1eee643c665843a165fec2114bd677d8f0c024
|
4
|
+
data.tar.gz: 01d534b9072cef9a0f6a653ae38a6c435c56e0a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09696afa985ae72b31d5522eda84551f174da87d5fff8193e1a264d92e225c3519431ab9eeef5b9a9bc1825c22daeb79e955f79ffc694174bbb859e705a185bf
|
7
|
+
data.tar.gz: 5839efabdc0a3605a6cf2d65cad54679a4edf00d4f74436b456d9dee00dd17664909fa512d4af23885cce07b03c3f584dabad9b5fe100ec56bc4eb1fef5df048
|
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# capistrano-shared-file
|
2
|
-
A Capistrano recipe to upload, download and symlink configuration files like `config/database.yml`
|
2
|
+
A Capistrano recipe to upload, download and symlink configuration files like `config/database.yml` to or from your remote servers.
|
3
|
+
|
4
|
+
One of the most common use cases for this gem is when used together with [Figaro](https://github.com/laserlemon/figaro), where the `config/application.yml` file is *git-ignored* but you still want to have a convenient way to push it to your servers on every deploy.
|
5
|
+
|
6
|
+
Heavily inspired by teohm's [capistrano-shared_file](https://github.com/teohm/capistrano-shared_file) gem.
|
3
7
|
|
4
8
|
## Install
|
5
9
|
|
@@ -11,11 +15,50 @@ For Bundler, add this to your `Gemfile`:
|
|
11
15
|
|
12
16
|
## Usage
|
13
17
|
|
14
|
-
|
18
|
+
You can start using it by simply adding the line below at the bottom of your `deploy.rb`:
|
15
19
|
|
16
|
-
set :shared_files, %w(config/database.yml)
|
17
20
|
require 'capistrano-shared-file'
|
18
21
|
|
22
|
+
Generally you won't need to modify any of the default variables defined in the gem. For a more customized setup, please refer to the next section.
|
23
|
+
|
24
|
+
## Variables
|
25
|
+
|
26
|
+
The following is the list of capistrano variables that are defined in this gem and that can be customized to fit your specific needs.
|
27
|
+
|
28
|
+
### shared_files
|
29
|
+
|
30
|
+
Specifies the list of files that you want to symlink to the `current_release` directory. By default:
|
31
|
+
|
32
|
+
set :shared_files, %w(config/database.yml)
|
33
|
+
|
34
|
+
For example, when using [Figaro](https://github.com/laserlemon/figaro) you will probably want to add the `application.yml` file to this list.
|
35
|
+
|
36
|
+
set :shared_files, %w(config/database.yml config/application.yml)
|
37
|
+
|
38
|
+
### shared_file_dir
|
39
|
+
|
40
|
+
Specify the directory in which you want to upload all shared files. By default:
|
41
|
+
|
42
|
+
set :shared_file_dir, 'files'
|
43
|
+
|
44
|
+
For example, given the following variables are set in your `deploy.rb`:
|
45
|
+
|
46
|
+
set :deploy_to, '/home/damselem/my_amazing_project
|
47
|
+
set :shared_file_dir, 'files'
|
48
|
+
set :shared_files, %w(config/application.yml)
|
49
|
+
|
50
|
+
The shared file in the remote will be at:
|
51
|
+
|
52
|
+
/home/damselem/my_amazing_project/shared/files/config/application.yml
|
53
|
+
|
54
|
+
### shared_file_backup
|
55
|
+
|
56
|
+
Enbales backups of your shared files when uploading and downloading shared files. By default:
|
57
|
+
|
58
|
+
set :shared_file_backup, false
|
59
|
+
|
60
|
+
For more details on the implications of setting this variable to `true`, refer to the next **Upload** and **Download** sections.
|
61
|
+
|
19
62
|
## Tasks
|
20
63
|
|
21
64
|
### Upload
|
@@ -24,21 +67,30 @@ To upload all the files defined in the `shared_files` capistrano variable to a r
|
|
24
67
|
|
25
68
|
bundle exec cap shared_file:upload
|
26
69
|
|
70
|
+
With backup (it creates a backup of the remote shared files on your machine before uploading the new versions to the remote machine):
|
71
|
+
|
72
|
+
bundle exec cap shared_file:upload -S shared_file_backup=true
|
73
|
+
|
27
74
|
### Download
|
28
75
|
|
29
76
|
To download all the files defined in the `shared_files` capistrano variable from a remote server, you can execute:
|
30
77
|
|
31
78
|
bundle exec cap shared_file:download
|
32
|
-
|
79
|
+
|
80
|
+
With backup (it creates a backup of the local shared files on your machine before downloading the new versions from the remote machine):
|
81
|
+
|
82
|
+
bundle exec cap shared_file:download -S shared_file_backup=true
|
83
|
+
|
33
84
|
### Symlink
|
34
85
|
|
35
86
|
To symlink the uploaded configuration files to the current release path, you can execute:
|
36
87
|
|
37
88
|
bundle exec cap shared_file:symlink
|
38
|
-
|
39
|
-
This task will be executed on every deploy. If you happen to make any changes in the files specified in the `shared_files` capistrano variable, make sure you upload them.
|
40
89
|
|
41
|
-
|
90
|
+
You normally shouldn't have to execute it manually since it's already executed automatically on every deploy.
|
91
|
+
|
92
|
+
## capistrano/ext/multistage
|
93
|
+
This gem has been tested to work with `capistrano/ext/multistage`. For example:
|
42
94
|
|
43
95
|
bundle exec cap <STAGE> shared_file:upload
|
44
96
|
bundle exec cap <STAGE> shared_file:download
|
@@ -6,13 +6,18 @@ end
|
|
6
6
|
|
7
7
|
Capistrano::Configuration.instance.load do
|
8
8
|
|
9
|
-
_cset :shared_files,
|
10
|
-
_cset :shared_file_dir,
|
9
|
+
_cset :shared_files, %w(config/database.yml)
|
10
|
+
_cset :shared_file_dir, 'files'
|
11
|
+
_cset :shared_file_backup, false
|
11
12
|
|
12
13
|
def remote_path_to(file)
|
13
14
|
File.join(shared_path, shared_file_dir, file)
|
14
15
|
end
|
15
16
|
|
17
|
+
def backup_path_to(file)
|
18
|
+
File.join(File.dirname(file), "#{Time.now.strftime('%Y%m%dT%H%M%S')}_#{File.basename(file)}")
|
19
|
+
end
|
20
|
+
|
16
21
|
namespace :shared_file do
|
17
22
|
|
18
23
|
desc 'Generate remote directories for shared files.'
|
@@ -27,6 +32,9 @@ Capistrano::Configuration.instance.load do
|
|
27
32
|
desc 'Upload shared files to server'
|
28
33
|
task :upload, :except => { :no_release => true } do
|
29
34
|
shared_files.each do |file|
|
35
|
+
if shared_file_backup
|
36
|
+
top.download(remote_path_to(file), backup_path_to(file), :via => :scp)
|
37
|
+
end
|
30
38
|
top.upload(file, remote_path_to(file), :via => :scp)
|
31
39
|
end
|
32
40
|
end
|
@@ -34,6 +42,9 @@ Capistrano::Configuration.instance.load do
|
|
34
42
|
desc 'Download shared files from server.'
|
35
43
|
task :download, :except => { :no_release => true } do
|
36
44
|
shared_files.each do |file|
|
45
|
+
if shared_file_backup
|
46
|
+
run_locally "cp #{file} #{backup_path_to(file)}"
|
47
|
+
end
|
37
48
|
top.download(remote_path_to(file), file, :via => :scp)
|
38
49
|
end
|
39
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-shared-file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Salmeron Amselem
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|