recap 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6606826af353db87e4cb782732a19207ce156869
4
- data.tar.gz: ccab176fe7120b06b759832ebc051dd209b7d280
3
+ metadata.gz: 1ce0fd67a3a5eca2575897507013976d255d2cdf
4
+ data.tar.gz: 84fe27ce735df0abeafe7728f56bcaf69f4e1086
5
5
  SHA512:
6
- metadata.gz: 22297c0c8dcdefccb845c8a3aedf4883b61dc6153e0fc7d192fad377f68971b9cba1bdd81bd73500c297ad26b916c72f44445357503de95424414b14f3ba8f5c
7
- data.tar.gz: 161eac0c9fbf088129e75a656becbe9106df4c8491a238b4ad3dbbc7218b32526e11274ed84758a437c2bcdcd00b9eafe043430eb8dda16f946daf4043a1ae0d
6
+ metadata.gz: df47ca9c62c0ac5160c64d48f659d7562302b1713e27bb571b06e06f46942a357868f1bba30254d5e481dfa340a28f4e1d60209b3ee25ffd66510aea8967356a
7
+ data.tar.gz: 00db9075c0fdc5c0591c52f77750ffacf5d0562b0cf65bca026bd1aa69403fa91fd90e10947858c116ffd1df5c5c58c577359fa4a20a9f7ad25126adce4f1005
@@ -1,7 +1,7 @@
1
1
  require 'tempfile'
2
2
 
3
3
  # These methods are used by recap tasks to run commands and detect when files have changed
4
- # as part of a deployments
4
+ # as part of a deployment.
5
5
 
6
6
  module Recap::Support::CapistranoExtensions
7
7
  # Run a command as the application user
@@ -113,5 +113,11 @@ and try again.
113
113
  end
114
114
  end
115
115
 
116
+ def _cset(name, *args, &block)
117
+ unless exists?(name)
118
+ set(name, *args, &block)
119
+ end
120
+ end
121
+
116
122
  Capistrano::Configuration.send :include, self
117
123
  end
@@ -10,5 +10,5 @@ module Recap::Support::Compatibility
10
10
 
11
11
  # As `git` to manages releases, all deployments are placed directly in the `deploy_to` folder. The
12
12
  # `current_path` is always this directory (no symlinking required).
13
- set(:current_path) { deploy_to }
14
- end
13
+ _cset(:current_path) { deploy_to }
14
+ end
@@ -15,10 +15,10 @@ module Recap::Tasks::Bootstrap
15
15
  extend Recap::Support::Namespace
16
16
 
17
17
  # The bootstrap namespace has a couple of task that help configure application and personal accounts
18
- # and personal accounts to meet these requirements.
18
+ # to meet these requirements.
19
19
  namespace :bootstrap do
20
- set(:remote_username) { capture('whoami').strip }
21
- set(:application_home) { "/home/#{application_user}"}
20
+ _cset(:remote_username) { capture('whoami').strip }
21
+ _cset(:application_home) { "/home/#{application_user}"}
22
22
 
23
23
  # The `bootstrap:application` task sets up the account on the server the application itself uses. This
24
24
  # account should be dedicated to running this application.
@@ -7,22 +7,22 @@ module Recap::Tasks::Bundler
7
7
 
8
8
  namespace :bundle do
9
9
  # Each bundle is declared in a `Gemfile`, by default in the root of the application directory.
10
- set(:bundle_gemfile) { "Gemfile" }
10
+ _cset(:bundle_gemfile) { "Gemfile" }
11
11
 
12
12
  # As well as a `Gemfile`, application repositories should also contain a `Gemfile.lock`.
13
- set(:bundle_gemfile_lock) { "#{bundle_gemfile}.lock" }
13
+ _cset(:bundle_gemfile_lock) { "#{bundle_gemfile}.lock" }
14
14
 
15
15
  # An application's gems are installed within the application directory. By default they are
16
16
  # placed under `vendor/gems`.
17
- set(:bundle_path) { "#{deploy_to}/vendor/gems" }
17
+ _cset(:bundle_path) { "#{deploy_to}/vendor/gems" }
18
18
 
19
19
  # Not all gems are needed for production environments, so by default the `development`, `test` and
20
20
  # `assets` groups are skipped.
21
- set(:bundle_without) { "development test" }
21
+ _cset(:bundle_without) { "development test" }
22
22
 
23
23
  # The main bundle install command uses all the settings above, together with the `--deployment`,
24
24
  # `--binstubs` and `--quiet` flags
25
- set(:bundle_install_command) { "bundle install --gemfile #{bundle_gemfile} --path #{bundle_path} --deployment --quiet --binstubs --without #{bundle_without}" }
25
+ _cset(:bundle_install_command) { "bundle install --gemfile #{bundle_gemfile} --path #{bundle_path} --deployment --quiet --binstubs --without #{bundle_without}" }
26
26
 
27
27
  namespace :install do
28
28
  # After cloning or updating the code, we only install the bundle if the `Gemfile` or `Gemfile.lock` have changed.
@@ -61,4 +61,4 @@ module Recap::Tasks::Bundler
61
61
  after 'deploy:clone_code', 'bundle:install:if_changed'
62
62
  after 'deploy:update_code', 'bundle:install:if_changed'
63
63
  end
64
- end
64
+ end
@@ -17,47 +17,47 @@ module Recap::Tasks::Deploy
17
17
 
18
18
  namespace :deploy do
19
19
  # To use this recipe, both the application's name and its git repository are required.
20
- set(:application) { abort "You must set the name of your application in your Capfile, e.g.: set :application, 'tomafro.net'" }
21
- set(:repository) { abort "You must set the git respository location in your Capfile, e.g.: set :respository, 'git@github.com/tomafro/tomafro.net'" }
20
+ _cset(:application) { abort "You must set the name of your application in your Capfile, e.g.: set :application, 'tomafro.net'" }
21
+ _cset(:repository) { abort "You must set the git respository location in your Capfile, e.g.: set :respository, 'git@github.com/tomafro/tomafro.net'" }
22
22
 
23
23
  # The recipe assumes that the application code will be run as a dedicated user. Any user who
24
24
  # can deploy the application should be added as a member of the application's group. By default,
25
25
  # both the application user and group take the same name as the application.
26
- set(:application_user) { application }
27
- set(:application_group) { application_user }
26
+ _cset(:application_user) { application }
27
+ _cset(:application_group) { application_user }
28
28
 
29
29
  # Deployments can be made from any branch. `master` is used by default.
30
- set(:branch, 'master')
30
+ _cset(:branch, 'master')
31
31
 
32
32
  # Unlike a standard capistrano deployment, all releases are stored directly in the `deploy_to`
33
33
  # directory. The default is `/home/#{application_user}/app`.
34
- set(:deploy_to) { "/home/#{application_user}/app" }
34
+ _cset(:deploy_to) { "/home/#{application_user}/app" }
35
35
 
36
36
  # Each release is marked by a unique tag, generated with the current timestamp. This should
37
37
  # not be changed, as the format is matched in the list of tags to find deploy tags.
38
- set(:release_tag) { Time.now.utc.strftime("%Y%m%d%H%M%S") }
38
+ _cset(:release_tag) { Time.now.utc.strftime("%Y%m%d%H%M%S") }
39
39
 
40
40
  # If `release_tag` is changed, then `release_matcher` must be too, to a regular expression
41
41
  # that will match all generated release tags. In general it's best to leave both unchanged.
42
- set(:release_matcher) { /\A[0-9]{14}\Z/ }
42
+ _cset(:release_matcher) { /\A[0-9]{14}\Z/ }
43
43
 
44
44
  # On tagging a release, a message is also recorded alongside the tag. This message can contain
45
45
  # anything useful - its contents are not important for the recipe.
46
- set(:release_message, "Deployed at #{Time.now}")
46
+ _cset(:release_message, "Deployed at #{Time.now}")
47
47
 
48
48
  # Some tasks need to know the `latest_tag` - the most recent successful deployment. If no
49
49
  # deployments have been made, this will be `nil`.
50
- set(:latest_tag) { latest_tag_from_repository }
50
+ _cset(:latest_tag) { latest_tag_from_repository }
51
51
 
52
52
  # Force a complete deploy, even if no trigger files have changed
53
- set(:force_full_deploy, false)
53
+ _cset(:force_full_deploy, false)
54
54
 
55
55
  # A lock file is used to ensure deployments don't overlap
56
- set(:deploy_lock_file) { "#{deploy_to}/.recap-lock"}
56
+ _cset(:deploy_lock_file) { "#{deploy_to}/.recap-lock"}
57
57
 
58
58
  # The lock file is set to include a message that can be displayed
59
59
  # if claiming the lock fails
60
- set(:deploy_lock_message) { "Deployment in progress (started #{Time.now.to_s})" }
60
+ _cset(:deploy_lock_message) { "Deployment in progress (started #{Time.now.to_s})" }
61
61
 
62
62
  # To authenticate with github or other git servers, it is easier (and cleaner) to forward the
63
63
  # deploying user's ssh key than manage keys on deployment servers.
@@ -24,7 +24,7 @@ module Recap::Tasks::Env
24
24
  extend Recap::Support::Namespace
25
25
 
26
26
  namespace :env do
27
- set(:environment_file) { "/home/#{application_user}/.env" }
27
+ _cset(:environment_file) { "/home/#{application_user}/.env" }
28
28
 
29
29
  # The `env` task displays the current configuration environment. Note that this doesn't
30
30
  # include all environment variables, only those stored in the `.env` file.
@@ -108,4 +108,4 @@ module Recap::Tasks::Env
108
108
  def env_argv
109
109
  ARGV[1..-1]
110
110
  end
111
- end
111
+ end
@@ -7,24 +7,24 @@ module Recap::Tasks::Foreman
7
7
 
8
8
  namespace :foreman do
9
9
  # Processes are declared in a `Procfile`, by default in the root of the application directory.
10
- set(:procfile) { "Procfile" }
10
+ _cset(:procfile) { "Procfile" }
11
11
 
12
12
  # Foreman startup scripts are exported in `upstart` format by default.
13
- set(:foreman_export_format, "upstart")
13
+ _cset(:foreman_export_format, "upstart")
14
14
 
15
15
  # Foreman startup scripts are generated based on the standard templates by default
16
- set(:foreman_template, nil)
16
+ _cset(:foreman_template, nil)
17
17
 
18
- set(:foreman_template_option) { foreman_template ? "--template #{foreman_template}" : nil}
18
+ _cset(:foreman_template_option) { foreman_template ? "--template #{foreman_template}" : nil}
19
19
 
20
20
  # Scripts are exported (as the the application user) to a temporary location first.
21
- set(:foreman_tmp_location) { "#{deploy_to}/tmp/foreman" }
21
+ _cset(:foreman_tmp_location) { "#{deploy_to}/tmp/foreman" }
22
22
 
23
23
  # After exports, the scripts are moved to their final location, usually `/etc/init`.
24
- set(:foreman_export_location, "/etc/init")
24
+ _cset(:foreman_export_location, "/etc/init")
25
25
 
26
26
  # The standard foreman export.
27
- set(:foreman_export_command) { "./bin/foreman export #{foreman_export_format} #{foreman_tmp_location} --procfile #{procfile} --app #{application} --user #{application_user} --log #{deploy_to}/log #{foreman_template_option}" }
27
+ _cset(:foreman_export_command) { "./bin/foreman export #{foreman_export_format} #{foreman_tmp_location} --procfile #{procfile} --app #{application} --user #{application_user} --log #{deploy_to}/log #{foreman_template_option}" }
28
28
 
29
29
  namespace :export do
30
30
  # After each deployment, the startup scripts are exported if either the `Procfile` or any custom Foreman templates have changed.
@@ -27,7 +27,7 @@ module Recap::Tasks::Preflight
27
27
  before 'deploy:setup', 'preflight:check'
28
28
  before 'deploy', 'preflight:check'
29
29
 
30
- set(:remote_username) { capture('whoami').strip }
30
+ _cset(:remote_username) { capture('whoami').strip }
31
31
 
32
32
  task :check do
33
33
  # First check the `application_user` exists.
@@ -20,7 +20,7 @@ module Recap::Tasks::Rails
20
20
  # assets to be compiled, and which don't. By default, recap will watch
21
21
  # the following files and directories and compile assets if they change
22
22
  # between deploys.
23
- set(:asset_precompilation_triggers, %w(app/assets vendor/assets Gemfile.lock config))
23
+ _cset(:asset_precompilation_triggers, %w(app/assets vendor/assets Gemfile.lock config))
24
24
 
25
25
  namespace :db do
26
26
  task :load_schema do
@@ -2,7 +2,7 @@ module Recap::Tasks::Ruby
2
2
  extend Recap::Support::Namespace
3
3
 
4
4
  namespace :ruby do
5
- set(:skip_rails_recipe_not_used_warning, false)
5
+ _cset(:skip_rails_recipe_not_used_warning, false)
6
6
 
7
7
  task :preflight do
8
8
  if exit_code("grep rails #{deploy_to}/Gemfile") == "0"
@@ -20,4 +20,4 @@ suppress this warning, set :skip_rails_recipe_not_used_warning to true.
20
20
 
21
21
  after "preflight:check", "ruby:preflight"
22
22
  end
23
- end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Recap
2
- VERSION = '1.2.1'
2
+ VERSION = '1.2.2'
3
3
  end
@@ -59,6 +59,12 @@ describe Recap::Tasks::Deploy do
59
59
  it 'defaults to master' do
60
60
  config.branch.should eql('master')
61
61
  end
62
+
63
+ it 'honours value in pre-set variable' do
64
+ config.set(:branch, 'branch-from-command-line')
65
+ Recap::Tasks::Deploy.load_into(config)
66
+ config.branch.should eql('branch-from-command-line')
67
+ end
62
68
  end
63
69
 
64
70
  describe '#deploy_to' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Ward
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-01 00:00:00.000000000 Z
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  version: '0'
224
224
  requirements: []
225
225
  rubyforge_project:
226
- rubygems_version: 2.0.3
226
+ rubygems_version: 2.1.5
227
227
  signing_key:
228
228
  specification_version: 4
229
229
  summary: GIT based deployment recipes for Capistrano