cap-strap 0.0.2
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/.gitignore +4 -0
- data/Gemfile +3 -0
- data/README.md +62 -0
- data/Rakefile +8 -0
- data/cap-strap.gemspec +26 -0
- data/lib/cap-strap.rb +14 -0
- data/lib/cap-strap/helpers.rb +78 -0
- data/lib/cap-strap/recipes/bootstrap.rb +89 -0
- data/lib/cap-strap/recipes/rvm.rb +70 -0
- data/spec/bootstrap_spec.rb +49 -0
- data/spec/rvm_spec.rb +33 -0
- data/spec/spec_helper.rb +8 -0
- metadata +125 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# CapStrap
|
|
2
|
+
|
|
3
|
+
CapStrap is a Capistrano Extension that bootstraps a machine for future capistrano tasks.
|
|
4
|
+
It installs System-wide Rvm and specified rubies and gems. It will create a user for future capistrano
|
|
5
|
+
deploy tasks.
|
|
6
|
+
|
|
7
|
+
## Notes
|
|
8
|
+
|
|
9
|
+
Currently only Ubuntu 10.04 and 10.10 have been tested.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
Add this line to your application's Gemfile:
|
|
15
|
+
|
|
16
|
+
gem 'cap-strap', :git => 'git@github.com:substantial/cap-strap.git'
|
|
17
|
+
|
|
18
|
+
And then execute:
|
|
19
|
+
|
|
20
|
+
$ bundle
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
You will be prompted for the name of the future deploy_user, location of authorized keys and
|
|
25
|
+
the deploy_key. Deploy key isn't required, and you may skip.
|
|
26
|
+
|
|
27
|
+
In your deploy.rb, you may override the following variables:
|
|
28
|
+
Note: Paths are relative to the root
|
|
29
|
+
|
|
30
|
+
* `set :deploy_user, "<name of user for future deployes>"`
|
|
31
|
+
* `set :authorized_keys_file, "<location of authorized keys>"`
|
|
32
|
+
* `set :deploy_key_file, "<location of deploy-key>"`
|
|
33
|
+
* `set :known_hosts, "<string of known hosts">` - Default is github.com
|
|
34
|
+
* `set :default_ruby, "1.9.3-p125"` - Default is 1.9.3-p125
|
|
35
|
+
* `set :rubies, [
|
|
36
|
+
"ree-1.8.7-2012.02",
|
|
37
|
+
{
|
|
38
|
+
:version => "1.9.3-p125-perf",
|
|
39
|
+
:patch => "falcon,debug --force-autoconf -j 3"
|
|
40
|
+
}
|
|
41
|
+
]`
|
|
42
|
+
* `set :gemset, "<default gemset>"` - Default is global
|
|
43
|
+
* `set :global_gems, ["bundler", "other-gem"]` - Default is ["bundler"]
|
|
44
|
+
|
|
45
|
+
Note: Run from project root
|
|
46
|
+
|
|
47
|
+
$ cap <stage> bootstrap -s user=<root_username>
|
|
48
|
+
|
|
49
|
+
## Testing
|
|
50
|
+
|
|
51
|
+
We're https://github.com/technicalpickles/capistrano-spec for testing the capistrano
|
|
52
|
+
configuration.
|
|
53
|
+
|
|
54
|
+
###TODO: Use Vagrant to test cap-strap.
|
|
55
|
+
|
|
56
|
+
## Contributing
|
|
57
|
+
|
|
58
|
+
1. Fork it
|
|
59
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
60
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
|
61
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
62
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/cap-strap.gemspec
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "cap-strap/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "cap-strap"
|
|
7
|
+
s.version = "0.0.2"
|
|
8
|
+
s.authors = ["Shaun Dern"]
|
|
9
|
+
s.email = ["shaun@substantial.com"]
|
|
10
|
+
s.homepage = ""
|
|
11
|
+
s.summary = %q{Bootstrap a new machine for future Capistrano tasks.}
|
|
12
|
+
s.description = %q{Bootstrap a a machine. Add a deploy user, install RVM, desired rubies and gems.}
|
|
13
|
+
|
|
14
|
+
s.rubyforge_project = "cap-strap"
|
|
15
|
+
|
|
16
|
+
s.files = `git ls-files`.split("\n")
|
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
19
|
+
s.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
s.add_development_dependency "capistrano", '>= 2.0.0'
|
|
22
|
+
s.add_development_dependency "capistrano-spec"
|
|
23
|
+
s.add_development_dependency "rspec"
|
|
24
|
+
|
|
25
|
+
s.add_runtime_dependency "capistrano", ">= 2.0.0"
|
|
26
|
+
end
|
data/lib/cap-strap.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'capistrano'
|
|
2
|
+
|
|
3
|
+
require 'cap-strap/helpers'
|
|
4
|
+
require "cap-strap/recipes/rvm"
|
|
5
|
+
require "cap-strap/recipes/bootstrap"
|
|
6
|
+
|
|
7
|
+
if instance = Capistrano::Configuration.instance
|
|
8
|
+
Capistrano::RVM.load_into(instance)
|
|
9
|
+
Capistrano::Bootstrap.load_into(instance)
|
|
10
|
+
|
|
11
|
+
instance.load do
|
|
12
|
+
ssh_options[:forward_agent] = true
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
def _cset(name, *args, &block)
|
|
2
|
+
unless exists?(name)
|
|
3
|
+
set(name, *args, &block)
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def add_user_to_group(user, group)
|
|
8
|
+
sudo "usermod -a -G #{group} #{user}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def install_packages(packages)
|
|
12
|
+
sudo "apt-get update"
|
|
13
|
+
packages.each do |pkg|
|
|
14
|
+
sudo "apt-get -y install #{pkg}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def create_user(user)
|
|
19
|
+
unless user_exists?(user)
|
|
20
|
+
sudo "useradd -s /bin/bash -d /home/#{user} -m #{user}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def add_group_to_sudoers(group)
|
|
25
|
+
unless group_has_sudo?(group)
|
|
26
|
+
puts "********* Adding #{group} to sudoers"
|
|
27
|
+
sudo "cp /etc/sudoers /etc/sudoers.bak"
|
|
28
|
+
sudo "chmod a+w /etc/sudoers.bak"
|
|
29
|
+
sudo "echo %rvm ALL=NOPASSWD:ALL >> /etc/sudoers.bak"
|
|
30
|
+
sudo "chmod a-w /etc/sudoers.bak"
|
|
31
|
+
sudo "mv /etc/sudoers.bak /etc/sudoers"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def group_has_sudo?(group)
|
|
36
|
+
sudoer_test = "sudo bash -c \"if grep -Fxq '%#{group} ALL=NOPASSWD:ALL' /etc/sudoers; then echo 'true'; else echo 'false'; fi\""
|
|
37
|
+
return capture(sudoer_test).include?("true")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def user_exists?(user)
|
|
41
|
+
user_test = "if id #{user} > /dev/null 2>&1; then echo 'true'; else echo 'false'; fi"
|
|
42
|
+
return capture(user_test).include?("true")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def default_known_hosts
|
|
46
|
+
<<-TEXT
|
|
47
|
+
github.com,207.97.227.239 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|
|
48
|
+
TEXT
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def install_ruby(ruby, patch = nil)
|
|
52
|
+
command = "rvm install #{ruby}"
|
|
53
|
+
command << " --patch #{patch}" if patch
|
|
54
|
+
sudo rvm_wrapper(command)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def install_global_gem(ruby, gem)
|
|
58
|
+
sudo rvm_wrapper("rvm use #{ruby}@global --create && gem install #{gem} --no-rdoc --no-ri")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def rvm_wrapper(command)
|
|
62
|
+
"bash -c '. /etc/profile.d/rvm.sh && #{command}'"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def gemrc
|
|
66
|
+
<<TEXT
|
|
67
|
+
---
|
|
68
|
+
:update_sources: true
|
|
69
|
+
:sources:
|
|
70
|
+
- http://gems.rubyforge.org/
|
|
71
|
+
- http://gems.github.com
|
|
72
|
+
:benchmark: false
|
|
73
|
+
:bulk_threshold: 1000
|
|
74
|
+
:backtrace: false
|
|
75
|
+
:verbose: true
|
|
76
|
+
gem: --no-ri --no-rdoc
|
|
77
|
+
TEXT
|
|
78
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'cap-strap/helpers'
|
|
2
|
+
require 'cap-strap/recipes/rvm'
|
|
3
|
+
require 'capistrano/cli'
|
|
4
|
+
|
|
5
|
+
module Capistrano
|
|
6
|
+
module Bootstrap
|
|
7
|
+
def self.load_into(configuration)
|
|
8
|
+
configuration.load do
|
|
9
|
+
before 'rvm:install_system_wide_rvm', 'bootstrap:install_rvm_dependencies'
|
|
10
|
+
|
|
11
|
+
rvm_packages = %w( build-essential openssl libreadline6 libreadline6-dev
|
|
12
|
+
curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev
|
|
13
|
+
libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
|
|
14
|
+
libc6-dev ncurses-dev automake libtool bison subversion )
|
|
15
|
+
|
|
16
|
+
_cset(:deploy_user) { Capistrano::CLI.ui.ask("deploy user: ") }
|
|
17
|
+
_cset(:user) { Capistrano::CLI.ui.ask("bootstrap root user: ") }
|
|
18
|
+
_cset(:authorized_keys_file) { Capistrano::CLI.ui.ask("Location of authorized keys relative to root to upload: ") }
|
|
19
|
+
_cset(:deploy_key_file) { Capistrano::CLI.ui.ask("Location of deploy key for upload, press enter to skip: ") }
|
|
20
|
+
_cset(:known_hosts) { default_known_hosts }
|
|
21
|
+
|
|
22
|
+
namespace :bootstrap do
|
|
23
|
+
desc "bootstraps a fresh box."
|
|
24
|
+
task :default do
|
|
25
|
+
rvm.default
|
|
26
|
+
bootstrap.create_deploy_user
|
|
27
|
+
bootstrap.upload_deploy_authorized_keys
|
|
28
|
+
bootstrap.add_known_hosts
|
|
29
|
+
bootstrap.add_rvm_to_sudoers
|
|
30
|
+
bootstrap.upload_deploy_key
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
task :create_deploy_user do
|
|
34
|
+
create_user(deploy_user)
|
|
35
|
+
add_user_to_group(deploy_user, "rvm")
|
|
36
|
+
add_user_to_group(deploy_user, "admin")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
task :upload_deploy_authorized_keys do
|
|
40
|
+
begin
|
|
41
|
+
authorized_keys_path = File.join(File.expand_path(Dir.pwd), authorized_keys_file)
|
|
42
|
+
puts "************Looking for Authorized Keys at: #{authorized_keys_path}"
|
|
43
|
+
authorized_keys = File.read(authorized_keys_file)
|
|
44
|
+
put(authorized_keys, "authorized_keys", :mode => "0600")
|
|
45
|
+
sudo "mkdir -p /home/#{deploy_user}/.ssh"
|
|
46
|
+
sudo "chmod 0700 /home/#{deploy_user}/.ssh"
|
|
47
|
+
sudo "mv ~/authorized_keys /home/#{deploy_user}/.ssh/"
|
|
48
|
+
sudo "chown -R #{deploy_user}:rvm /home/#{deploy_user}/.ssh"
|
|
49
|
+
rescue Exception => e
|
|
50
|
+
puts e
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
task :add_known_hosts do
|
|
55
|
+
put(known_hosts, "known_hosts", :mode => "0644")
|
|
56
|
+
sudo "mv ~/known_hosts /home/#{deploy_user}/.ssh/known_hosts"
|
|
57
|
+
sudo "chown -R deploy:rvm /home/#{deploy_user}/.ssh"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
task :add_rvm_to_sudoers do
|
|
61
|
+
add_group_to_sudoers("rvm")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
task :install_rvm_dependencies do
|
|
65
|
+
install_packages(rvm_packages)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
desc "Uploads the id_rsa for the deploy user. Put the key under config/deploy-key and run."
|
|
69
|
+
task :upload_deploy_key do
|
|
70
|
+
if deploy_key_file.empty?
|
|
71
|
+
puts "No deploy key specified, skipping"
|
|
72
|
+
else
|
|
73
|
+
begin
|
|
74
|
+
deploy_key_path= File.join(File.expand_path(Dir.pwd), deploy_key_file)
|
|
75
|
+
puts "************Looking for Deploy key at: #{deploy_key_path}"
|
|
76
|
+
id_rsa = File.read(deploy_key_path)
|
|
77
|
+
put(id_rsa, "id_rsa", :mode => "0600")
|
|
78
|
+
sudo "mv ~/id_rsa /home/#{deploy_user}/.ssh/"
|
|
79
|
+
sudo "chown -R #{deploy_user}:rvm /home/#{deploy_user}/.ssh"
|
|
80
|
+
rescue Exception => e
|
|
81
|
+
puts e
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'cap-strap/helpers'
|
|
2
|
+
|
|
3
|
+
module Capistrano
|
|
4
|
+
module RVM
|
|
5
|
+
def self.load_into(configuration)
|
|
6
|
+
configuration.load do
|
|
7
|
+
|
|
8
|
+
_cset :default_ruby , "1.9.3-p125"
|
|
9
|
+
_cset :gemset, "global"
|
|
10
|
+
_cset :rubies, []
|
|
11
|
+
_cset(:user) { Capistrano::CLI.ui.ask("bootstrap root user: ") }
|
|
12
|
+
_cset :global_gems, ["bundler"]
|
|
13
|
+
|
|
14
|
+
default_run_options[:shell] = '/bin/bash'
|
|
15
|
+
default_run_options[:pty] = true
|
|
16
|
+
|
|
17
|
+
namespace :rvm do
|
|
18
|
+
task :default do
|
|
19
|
+
rvm.install_system_wide_rvm
|
|
20
|
+
rvm.add_gemrc
|
|
21
|
+
rvm.add_user_to_rvm_group
|
|
22
|
+
rvm.install_rubies
|
|
23
|
+
rvm.set_default_ruby
|
|
24
|
+
rvm.create_default_gemset
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
task :install_system_wide_rvm do
|
|
28
|
+
command = "curl -L get.rvm.io | "
|
|
29
|
+
command << "sudo bash -s stable"
|
|
30
|
+
run command
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
task :install_rubies do
|
|
34
|
+
rubies << default_ruby
|
|
35
|
+
rubies.each do |rubie|
|
|
36
|
+
if rubie.is_a?(Hash)
|
|
37
|
+
ruby = rubie.fetch(:version)
|
|
38
|
+
ruby_patch = rubie.fetch(:patch)
|
|
39
|
+
else
|
|
40
|
+
ruby = rubie
|
|
41
|
+
ruby_patch = nil
|
|
42
|
+
end
|
|
43
|
+
install_ruby(ruby, ruby_patch)
|
|
44
|
+
global_gems.each do |gem|
|
|
45
|
+
install_global_gem(ruby, gem)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
task :create_default_gemset do
|
|
51
|
+
sudo rvm_wrapper("rvm use #{default_ruby}@#{gemset} --create")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
task :set_default_ruby do
|
|
55
|
+
sudo rvm_wrapper("rvm use #{default_ruby} --default")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
task :add_user_to_rvm_group do
|
|
59
|
+
add_user_to_group(user, "rvm")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
task :add_gemrc do
|
|
63
|
+
put gemrc, "gemrc"
|
|
64
|
+
sudo "mv ~/gemrc /etc/"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Capistrano::Bootstrap do
|
|
4
|
+
let(:ui) { double("ui", :ask => 'prompt') }
|
|
5
|
+
before do
|
|
6
|
+
@configuration = Capistrano::Configuration.new
|
|
7
|
+
@configuration.extend(Capistrano::Spec::ConfigurationExtension)
|
|
8
|
+
Capistrano::Bootstrap.load_into(@configuration)
|
|
9
|
+
Capistrano::CLI.stub(:ui).and_return { ui }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "default variables" do
|
|
13
|
+
it "prompts for a bootstrap user" do
|
|
14
|
+
@configuration.fetch(:user).should == 'prompt'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "prompts for a deploy user" do
|
|
18
|
+
@configuration.fetch(:deploy_user).should == 'prompt'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'prompts for authorized keys if no path set' do
|
|
22
|
+
@configuration.fetch(:authorized_keys_file).should == 'prompt'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "prompts for deploy key location if not set" do
|
|
26
|
+
@configuration.fetch(:deploy_key_file).should == 'prompt'
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "variables set" do
|
|
31
|
+
before do
|
|
32
|
+
@configuration.set(:user, "foo")
|
|
33
|
+
@configuration.set(:deploy_user, "bar")
|
|
34
|
+
@configuration.set(:known_hosts, "baz")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "doesn't prompted for a bootstrap user" do
|
|
38
|
+
@configuration.fetch(:user).should == "foo"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "doesn't prompted for a deploy user" do
|
|
42
|
+
@configuration.fetch(:deploy_user).should == "bar"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "replaces known_hosts with ones that are set" do
|
|
46
|
+
@configuration.fetch(:known_hosts).should == "baz"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/spec/rvm_spec.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Capistrano::RVM do
|
|
4
|
+
let(:ui) { double("ui", :ask => 'prompt') }
|
|
5
|
+
before do
|
|
6
|
+
@configuration = Capistrano::Configuration.new
|
|
7
|
+
@configuration.extend(Capistrano::Spec::ConfigurationExtension)
|
|
8
|
+
Capistrano::RVM.load_into(@configuration)
|
|
9
|
+
Capistrano::CLI.stub(:ui).and_return { ui }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "default variables" do
|
|
13
|
+
it "has a prompts for a bootstrap user" do
|
|
14
|
+
@configuration.fetch(:user).should == 'prompt'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "has a default ruby" do
|
|
18
|
+
@configuration.fetch(:default_ruby).should be
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "has a default gemset" do
|
|
22
|
+
@configuration.fetch(:gemset).should be
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "defaults to empty ruby set" do
|
|
26
|
+
@configuration.fetch(:rubies).length.should be 0
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "has bundler in it's global gems" do
|
|
30
|
+
@configuration.fetch(:global_gems).include?("bundler").should == true
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: cap-strap
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.2
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Shaun Dern
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-04-19 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: capistrano
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 2.0.0
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 2.0.0
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: capistrano-spec
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: rspec
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: capistrano
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 2.0.0
|
|
70
|
+
type: :runtime
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: 2.0.0
|
|
78
|
+
description: Bootstrap a a machine. Add a deploy user, install RVM, desired rubies
|
|
79
|
+
and gems.
|
|
80
|
+
email:
|
|
81
|
+
- shaun@substantial.com
|
|
82
|
+
executables: []
|
|
83
|
+
extensions: []
|
|
84
|
+
extra_rdoc_files: []
|
|
85
|
+
files:
|
|
86
|
+
- .gitignore
|
|
87
|
+
- Gemfile
|
|
88
|
+
- README.md
|
|
89
|
+
- Rakefile
|
|
90
|
+
- cap-strap.gemspec
|
|
91
|
+
- lib/cap-strap.rb
|
|
92
|
+
- lib/cap-strap/helpers.rb
|
|
93
|
+
- lib/cap-strap/recipes/bootstrap.rb
|
|
94
|
+
- lib/cap-strap/recipes/rvm.rb
|
|
95
|
+
- spec/bootstrap_spec.rb
|
|
96
|
+
- spec/rvm_spec.rb
|
|
97
|
+
- spec/spec_helper.rb
|
|
98
|
+
homepage: ''
|
|
99
|
+
licenses: []
|
|
100
|
+
post_install_message:
|
|
101
|
+
rdoc_options: []
|
|
102
|
+
require_paths:
|
|
103
|
+
- lib
|
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
|
+
none: false
|
|
106
|
+
requirements:
|
|
107
|
+
- - ! '>='
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
|
+
none: false
|
|
112
|
+
requirements:
|
|
113
|
+
- - ! '>='
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: '0'
|
|
116
|
+
requirements: []
|
|
117
|
+
rubyforge_project: cap-strap
|
|
118
|
+
rubygems_version: 1.8.22
|
|
119
|
+
signing_key:
|
|
120
|
+
specification_version: 3
|
|
121
|
+
summary: Bootstrap a new machine for future Capistrano tasks.
|
|
122
|
+
test_files:
|
|
123
|
+
- spec/bootstrap_spec.rb
|
|
124
|
+
- spec/rvm_spec.rb
|
|
125
|
+
- spec/spec_helper.rb
|