recap 1.0.5 → 1.0.6
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.
- data/Vagrantfile +2 -2
- data/lib/recap/support/capistrano_extensions.rb +3 -13
- data/lib/recap/tasks/deploy.rb +2 -3
- data/lib/recap/tasks/env.rb +1 -1
- data/lib/recap/tasks/foreman.rb +1 -0
- data/lib/recap/tasks/rails.rb +1 -1
- data/lib/recap/version.rb +1 -1
- data/spec/tasks/foreman_spec.rb +1 -0
- data/spec/tasks/rails_spec.rb +10 -0
- metadata +5 -5
data/Vagrantfile
CHANGED
@@ -7,11 +7,11 @@ Vagrant::Config.run do |config|
|
|
7
7
|
# please see the online documentation at vagrantup.com.
|
8
8
|
|
9
9
|
# Every Vagrant virtual environment requires a box to build off of.
|
10
|
-
config.vm.box = "
|
10
|
+
config.vm.box = "precise64"
|
11
11
|
|
12
12
|
# The url from where the 'config.vm.box' box will be fetched if it
|
13
13
|
# doesn't already exist on the user's system.
|
14
|
-
config.vm.box_url = "http://files.vagrantup.com/
|
14
|
+
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
|
15
15
|
|
16
16
|
# Boot with a GUI so you can see the screen. (Default is headless)
|
17
17
|
# config.vm.boot_mode = :gui
|
@@ -4,19 +4,9 @@ require 'tempfile'
|
|
4
4
|
# as part of a deployments
|
5
5
|
|
6
6
|
module Recap::Support::CapistranoExtensions
|
7
|
-
# Run a command as the given user
|
8
|
-
def as_user(user, command, pwd = deploy_to)
|
9
|
-
sudo "su - #{user} -c 'cd #{pwd} && #{command}'"
|
10
|
-
end
|
11
|
-
|
12
|
-
# Run a command as root
|
13
|
-
def as_root(command, pwd = deploy_to)
|
14
|
-
as_user 'root', command, pwd
|
15
|
-
end
|
16
|
-
|
17
7
|
# Run a command as the application user
|
18
8
|
def as_app(command, pwd = deploy_to)
|
19
|
-
|
9
|
+
sudo "su - #{application_user} -c 'cd #{pwd} && #{command}'"
|
20
10
|
end
|
21
11
|
|
22
12
|
# Put a string into a file as the application user
|
@@ -65,8 +55,8 @@ module Recap::Support::CapistranoExtensions
|
|
65
55
|
# Find the latest tag from the repository. As `git tag` returns tags in order, and our release
|
66
56
|
# tags are timestamps, the latest tag will always be the last in the list.
|
67
57
|
def latest_tag_from_repository
|
68
|
-
|
69
|
-
|
58
|
+
tags = capture_git("tag").strip.split
|
59
|
+
tags.grep(/^[0-9]{17}/).last
|
70
60
|
end
|
71
61
|
|
72
62
|
# Does the given file exist within the deployment directory?
|
data/lib/recap/tasks/deploy.rb
CHANGED
@@ -33,9 +33,8 @@ module Recap::Tasks::Deploy
|
|
33
33
|
# directory. The default is `/home/#{application_user}/app`.
|
34
34
|
set(:deploy_to) { "/home/#{application_user}/app" }
|
35
35
|
|
36
|
-
# Each release is marked by a unique tag, generated with the current timestamp.
|
37
|
-
#
|
38
|
-
# be listed after earlier tags.
|
36
|
+
# Each release is marked by a unique tag, generated with the current timestamp. This should
|
37
|
+
# not be changed, as the format is matched in the list of tags to find deploy tags.
|
39
38
|
set(:release_tag) { Time.now.utc.strftime("%Y%m%d%H%M%S") }
|
40
39
|
|
41
40
|
# On tagging a release, a message is also recorded alongside the tag. This message can contain
|
data/lib/recap/tasks/env.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Recap encourages the storage of application configuration (such as database passwords, S3 keys and
|
2
2
|
# other things that change between deploys) in environment variables.
|
3
|
-
# [12factor.net](http://www.12factor.net) has [http://www.12factor.net/config
|
3
|
+
# [12factor.net](http://www.12factor.net) has [a good set of reasons](http://www.12factor.net/config)
|
4
4
|
# why this is desirable).
|
5
5
|
#
|
6
6
|
# To enable this, [recap](https://github.com/freerange/recap) stores these configuration variables
|
data/lib/recap/tasks/foreman.rb
CHANGED
@@ -35,6 +35,7 @@ module Recap::Tasks::Foreman
|
|
35
35
|
desc 'Export foreman configuration'
|
36
36
|
task :default do
|
37
37
|
if deployed_file_exists?(procfile)
|
38
|
+
sudo "mkdir -p #{deploy_to}/log"
|
38
39
|
sudo "chown #{application_user}: #{deploy_to}/log"
|
39
40
|
as_app foreman_export_command
|
40
41
|
sudo "rm -f #{foreman_export_location}/#{application}*"
|
data/lib/recap/tasks/rails.rb
CHANGED
data/lib/recap/version.rb
CHANGED
data/spec/tasks/foreman_spec.rb
CHANGED
@@ -100,6 +100,7 @@ describe Recap::Tasks::Foreman do
|
|
100
100
|
describe 'foreman:export' do
|
101
101
|
it 'runs the foreman export command, then moves the exported files to the export location' do
|
102
102
|
namespace.stubs(:deployed_file_exists?).with(config.procfile).returns(true)
|
103
|
+
namespace.expects(:sudo).with("mkdir -p #{config.deploy_to}/log").in_sequence(commands)
|
103
104
|
namespace.expects(:sudo).with("chown #{config.application_user}: #{config.deploy_to}/log").in_sequence(commands)
|
104
105
|
namespace.expects(:as_app).with(config.foreman_export_command).in_sequence(commands)
|
105
106
|
namespace.expects(:sudo).with("rm -f #{config.foreman_export_location}/#{config.application}*").in_sequence(commands)
|
data/spec/tasks/rails_spec.rb
CHANGED
@@ -37,15 +37,25 @@ describe Recap::Tasks::Rails do
|
|
37
37
|
|
38
38
|
describe 'rails:db:migrate' do
|
39
39
|
it 'runs migrations if the schema has changed' do
|
40
|
+
namespace.stubs(:deployed_file_exists?).with('db/schema.rb').returns(true)
|
40
41
|
namespace.stubs(:deployed_file_changed?).with('db/schema.rb').returns(true)
|
41
42
|
namespace.expects(:as_app).with('./bin/rake db:migrate')
|
42
43
|
config.find_and_execute_task('rails:db:migrate')
|
43
44
|
end
|
45
|
+
|
44
46
|
it 'does nothing if the schema has not changed' do
|
47
|
+
namespace.stubs(:deployed_file_exists?).with('db/schema.rb').returns(true)
|
45
48
|
namespace.stubs(:deployed_file_changed?).with('db/schema.rb').returns(false)
|
46
49
|
namespace.expects(:as_app).never
|
47
50
|
config.find_and_execute_task('rails:db:migrate')
|
48
51
|
end
|
52
|
+
|
53
|
+
it 'does nothing if the schema does not exist' do
|
54
|
+
namespace.stubs(:deployed_file_exists?).with('db/schema.rb').returns(false)
|
55
|
+
namespace.stubs(:deployed_file_changed?).with('db/schema.rb').returns(true)
|
56
|
+
namespace.expects(:as_app).never
|
57
|
+
config.find_and_execute_task('rails:db:migrate')
|
58
|
+
end
|
49
59
|
end
|
50
60
|
|
51
61
|
describe 'assets:precompile' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -266,7 +266,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
266
|
version: '0'
|
267
267
|
segments:
|
268
268
|
- 0
|
269
|
-
hash: -
|
269
|
+
hash: -2984683490822306722
|
270
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
271
|
none: false
|
272
272
|
requirements:
|
@@ -275,10 +275,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
275
|
version: '0'
|
276
276
|
segments:
|
277
277
|
- 0
|
278
|
-
hash: -
|
278
|
+
hash: -2984683490822306722
|
279
279
|
requirements: []
|
280
280
|
rubyforge_project:
|
281
|
-
rubygems_version: 1.8.
|
281
|
+
rubygems_version: 1.8.23
|
282
282
|
signing_key:
|
283
283
|
specification_version: 3
|
284
284
|
summary: GIT based deployment recipes for Capistrano
|