clearcap 1.1.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 +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +3 -0
- data/README.md +53 -0
- data/Rakefile +1 -0
- data/clearcap.gemspec +27 -0
- data/lib/clearcap.rb +4 -0
- data/lib/clearcap/deploy/avlux.rb +67 -0
- data/lib/clearcap/deploy/common.rb +157 -0
- data/lib/clearcap/deploy/webfaction.rb +27 -0
- data/lib/clearcap/version.rb +3 -0
- data/lib/tasks/install.rake +14 -0
- data/template/deploy.rb +0 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8caae8b5972dc7848968b700eed29b8c022f9835
|
4
|
+
data.tar.gz: ec6a41ba46a481799365a7ac2e78391db87036c2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dda290e2101e2782ba4bdcd38d13110ac0d8f899eb774a62c39f65662121bf50705f34ea785dc579a94661cf0796f6bab78866aae244c542e00955c3e57f2027
|
7
|
+
data.tar.gz: 4099c482bd7cd42868a15631a0095b77514c3352cc7311e9fc3e7f21d183f650ea5322ce6fdbd668f20d8288e7ec6871cbbafe523baa80fd38371267bc58788d
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# Clearcap
|
2
|
+
|
3
|
+
Contains ClearSight Studio's common Capistrano settings.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add these lines to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
group :development do
|
11
|
+
gem 'capistrano', require: false
|
12
|
+
gem 'clearcap', git: "git@bitbucket.org:clearsightstudio/clearcap.git", require: false
|
13
|
+
end
|
14
|
+
```
|
15
|
+
|
16
|
+
|
17
|
+
### Webfaction
|
18
|
+
|
19
|
+
**NOTE: This is a WIP. It's for Webfaction specifically.**
|
20
|
+
|
21
|
+
1. Set up SSH [http://optic.clearsightstudio.com/post/192-setting-up-ssh-on-webfaction](http://optic.clearsightstudio.com/post/192-setting-up-ssh-on-webfaction)
|
22
|
+
1. Set up a deployment key in Bitbucket with the server's id_rsa.pub (create one using `ssh-keygen -t rsa` unless exists?)
|
23
|
+
1. Copy the database.yml to the server's `shared/config/database.yml` (you should be gitignoring the database.yml)
|
24
|
+
1. `gem install capistrano`
|
25
|
+
1. `capify .`
|
26
|
+
1. Gemfile should have the lines above (in Installation)
|
27
|
+
1. Edit `deploy.rb` to look like below in the deploy.rb section.
|
28
|
+
1. bundle up, then run `cap deploy` and enjoy your output.~
|
29
|
+
|
30
|
+
#### deploy.rb
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
require "bundler/capistrano"
|
34
|
+
|
35
|
+
set :application, "myappname"
|
36
|
+
set :repository, "git@bitbucket.org:clearsightstudio/myreponame.git"
|
37
|
+
set :deploy_to, "/home/myusername/webapps/myappname"
|
38
|
+
|
39
|
+
role :web, "someserver.webfactional.com" # Your HTTP server, Apache/etc
|
40
|
+
role :app, "someserver.webfactional.com" # This may be the same as your `Web` server
|
41
|
+
role :db, "someserver.webfactional.com", :primary => true # This is where Rails migrations will run
|
42
|
+
|
43
|
+
set :user, "myusername"
|
44
|
+
|
45
|
+
require 'clearcap/deploy/webfaction'
|
46
|
+
|
47
|
+
# Add any overrides for the Clearcap defaults here.
|
48
|
+
# set :scm, :something_else
|
49
|
+
```
|
50
|
+
|
51
|
+
## Contributing
|
52
|
+
|
53
|
+
1. Don't.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/clearcap.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'clearcap/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "clearcap"
|
8
|
+
spec.version = Clearcap::VERSION
|
9
|
+
spec.authors = ["Jamon Holmgren", "Ryan Linton"]
|
10
|
+
spec.email = ["jamon@clearsightstudio.com", "ryanl@clearsightstudio.com"]
|
11
|
+
spec.description = %q{Contains ClearSight Studio's common Capistrano settings.}
|
12
|
+
spec.summary = %q{ClearSight Studio common Capistrano settings}
|
13
|
+
spec.homepage = "https://bitbucket.org/clearsightstudio/clearcap"
|
14
|
+
spec.license = "Proprietary"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "capistrano"
|
22
|
+
spec.add_dependency "colored"
|
23
|
+
spec.add_dependency "growl"
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
end
|
data/lib/clearcap.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require "clearcap/deploy/common"
|
2
|
+
|
3
|
+
configuration = Capistrano::Configuration.respond_to?(:instance) ? Capistrano::Configuration.instance(:must_exist) : Capistrano.configuration(:must_exist)
|
4
|
+
|
5
|
+
configuration.load do
|
6
|
+
|
7
|
+
require "rvm/capistrano"
|
8
|
+
|
9
|
+
default_run_options[:pty] = true
|
10
|
+
|
11
|
+
set :bundle_without, [:development]
|
12
|
+
set :keep_releases, 2
|
13
|
+
set :rake, "bundle exec rake"
|
14
|
+
set :rvm_type, :user
|
15
|
+
|
16
|
+
namespace :newrelic do
|
17
|
+
desc <<-EOD
|
18
|
+
symlink to the shared/newrelic.yml
|
19
|
+
EOD
|
20
|
+
task :symlink, :except => { :no_release => true } do
|
21
|
+
# run "ln -s #{shared_path}/config/newrelic.yml #{release_path}/config/newrelic.yml"
|
22
|
+
end
|
23
|
+
|
24
|
+
after "deploy:finalize_update", "newrelic:symlink"
|
25
|
+
end
|
26
|
+
|
27
|
+
namespace :uploads do
|
28
|
+
desc <<-EOD
|
29
|
+
Creates the upload folders unless they exist
|
30
|
+
and sets the proper upload permissions.
|
31
|
+
EOD
|
32
|
+
task :setup, :except => { :no_release => true } do
|
33
|
+
dirs = upload_dirs.map { |d| File.join(shared_path, d) }.join(' ')
|
34
|
+
run "#{try_sudo} mkdir -p #{dirs} && #{try_sudo} chmod g+w #{dirs}"
|
35
|
+
end
|
36
|
+
|
37
|
+
desc <<-EOD
|
38
|
+
[internal] Creates the symlink to uploads shared folders
|
39
|
+
for the most recently deployed version
|
40
|
+
EOD
|
41
|
+
task :symlink, :except => { :no_release => true } do
|
42
|
+
run "rm -rf #{release_path}/public/uploads"
|
43
|
+
run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
|
44
|
+
end
|
45
|
+
|
46
|
+
desc <<-EOD
|
47
|
+
[internal] Computes uploads directory paths
|
48
|
+
and registers them in Capistrano environment.
|
49
|
+
EOD
|
50
|
+
task :register_dirs do
|
51
|
+
set :upload_dirs, %w(public/uploads)
|
52
|
+
set :shared_children, fetch(:shared_children) + fetch(:upload_dirs)
|
53
|
+
end
|
54
|
+
|
55
|
+
after "deploy:finalize_update", "uploads:symlink"
|
56
|
+
on :start , "uploads:register_dirs"
|
57
|
+
end
|
58
|
+
|
59
|
+
# Using Passenger mod_rails
|
60
|
+
namespace :deploy do
|
61
|
+
task :restart do
|
62
|
+
raise StandardError.new("Your deploy.rb needs a restart string.") unless restart_string
|
63
|
+
run restart_string
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
options = {}
|
6
|
+
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.banner = "Usage: Look it up on BitBucket."
|
9
|
+
|
10
|
+
options[:verbose] = false
|
11
|
+
opts.on( '-v', '--verbose' ) do
|
12
|
+
options[:verbose] = true
|
13
|
+
end
|
14
|
+
end.parse!
|
15
|
+
|
16
|
+
|
17
|
+
configuration = Capistrano::Configuration.respond_to?(:instance) ? Capistrano::Configuration.instance(:must_exist) : Capistrano.configuration(:must_exist)
|
18
|
+
|
19
|
+
configuration.load do
|
20
|
+
|
21
|
+
set :use_sudo, false
|
22
|
+
set :scm, :git
|
23
|
+
default_run_options[:pty] = true
|
24
|
+
|
25
|
+
after "deploy:finalize_update", "deploy:migrate"
|
26
|
+
after "deploy:restart", "deploy:cleanup"
|
27
|
+
|
28
|
+
namespace :notifications do
|
29
|
+
desc <<-EOD
|
30
|
+
[internal] Shows a success message when done deploying.
|
31
|
+
EOD
|
32
|
+
task :success do
|
33
|
+
require "growl"
|
34
|
+
if Growl.installed?
|
35
|
+
Growl.notify "#{application} deployed successfully to #{rails_env}.", title: 'Capistrano', sticky: true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
if options[:verbose] == true
|
41
|
+
logger.level = Capistrano::Logger::DEBUG
|
42
|
+
else
|
43
|
+
|
44
|
+
require "colored"
|
45
|
+
logger.level = Capistrano::Logger::IMPORTANT
|
46
|
+
|
47
|
+
STDOUT.sync
|
48
|
+
|
49
|
+
before "deploy:update_code" do
|
50
|
+
@begin = Time.now
|
51
|
+
puts "Deploying".cyan;
|
52
|
+
end
|
53
|
+
|
54
|
+
before "bundle:install" do
|
55
|
+
print "Bundling"
|
56
|
+
|
57
|
+
@start_time = Time.now.to_i
|
58
|
+
|
59
|
+
Thread.new do
|
60
|
+
while @bundled != true
|
61
|
+
print "."
|
62
|
+
sleep 1.5
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
after "bundle:install" do
|
68
|
+
@bundled = true
|
69
|
+
print "✔".green
|
70
|
+
puts " -- [#{Time.now.to_i - @start_time} secs]"
|
71
|
+
end
|
72
|
+
|
73
|
+
before "deploy:migrate" do
|
74
|
+
print "Migrating"
|
75
|
+
|
76
|
+
@start_time = Time.now.to_i
|
77
|
+
|
78
|
+
Thread.new do
|
79
|
+
while @migrated != true
|
80
|
+
print "."
|
81
|
+
sleep 1.5
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
after "deploy:migrate" do
|
87
|
+
@migrated = true
|
88
|
+
print "✔".green
|
89
|
+
puts " -- [#{Time.now.to_i - @start_time} secs]"
|
90
|
+
end
|
91
|
+
|
92
|
+
before "deploy:assets:clean" do
|
93
|
+
print "Cleaning"
|
94
|
+
|
95
|
+
@start_time = Time.now.to_i
|
96
|
+
|
97
|
+
Thread.new do
|
98
|
+
while @cleaned != true
|
99
|
+
print "."
|
100
|
+
sleep 1.5
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
after "deploy:assets:clean" do
|
106
|
+
@cleaned = true
|
107
|
+
print "✔".green
|
108
|
+
puts " -- [#{Time.now.to_i - @start_time} secs]"
|
109
|
+
end
|
110
|
+
|
111
|
+
before "deploy:assets:precompile" do
|
112
|
+
print "Compiling"
|
113
|
+
|
114
|
+
@start_time = Time.now.to_i
|
115
|
+
|
116
|
+
Thread.new do
|
117
|
+
while @compiled != true
|
118
|
+
print "."
|
119
|
+
sleep 1.5
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
after "deploy:assets:precompile" do
|
125
|
+
@compiled = true
|
126
|
+
print "✔".green
|
127
|
+
puts " -- [#{Time.now.to_i - @start_time} secs]"
|
128
|
+
end
|
129
|
+
|
130
|
+
after "deploy:update_code" do puts "Deploy Complete......✔".green end
|
131
|
+
|
132
|
+
before "deploy:restart" do
|
133
|
+
print "Restarting"
|
134
|
+
|
135
|
+
@start_time = Time.now.to_i
|
136
|
+
|
137
|
+
Thread.new do
|
138
|
+
while @restarted != true
|
139
|
+
print "."
|
140
|
+
sleep 1.5
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
after "deploy:restart" do
|
146
|
+
@restarted = true
|
147
|
+
print "✔".green
|
148
|
+
puts " -- [#{Time.now.to_i - @start_time} secs]"
|
149
|
+
|
150
|
+
puts "\nDeploy Time: #{Time.now.to_i - @begin.to_i} seconds"
|
151
|
+
end
|
152
|
+
|
153
|
+
after "deploy:restart", "notifications:success" # Show a growl
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "clearcap/deploy/common"
|
2
|
+
|
3
|
+
configuration = Capistrano::Configuration.respond_to?(:instance) ? Capistrano::Configuration.instance(:must_exist) : Capistrano.configuration(:must_exist)
|
4
|
+
|
5
|
+
configuration.load do
|
6
|
+
|
7
|
+
set :deploy_to, "/home/#{user}/webapps/#{application}"
|
8
|
+
|
9
|
+
role :web, "#{webfaction}.webfaction.com" # Your HTTP server, Apache/etc
|
10
|
+
role :app, "#{webfaction}.webfaction.com" # This may be the same as your `Web` server
|
11
|
+
role :db, "#{webfaction}.webfaction.com", :primary => true # This is where Rails migrations will run
|
12
|
+
|
13
|
+
|
14
|
+
namespace :deploy do
|
15
|
+
desc "Restart nginx"
|
16
|
+
task :restart do
|
17
|
+
run "#{deploy_to}/bin/restart"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
set :default_environment, {
|
22
|
+
'PATH' => "#{deploy_to}/bin:$PATH",
|
23
|
+
'GEM_HOME' => "#{deploy_to}/gems",
|
24
|
+
'GEM_PATH' => "#{deploy_to}/gems"
|
25
|
+
}
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
def replace_line(filepath, pattern, replace)
|
2
|
+
File.open filepath, 'w' do |f|
|
3
|
+
text = File.read(filepath)
|
4
|
+
replace = text.gsub(pattern, replace)
|
5
|
+
File.open(filepath, "w") {|file| file.puts replace}
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Sets up ClearCap and Capistrano"
|
10
|
+
task :setup do
|
11
|
+
file 'Gemfile' do
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
data/template/deploy.rb
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: clearcap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jamon Holmgren
|
8
|
+
- Ryan Linton
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: capistrano
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: colored
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: growl
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: bundler
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.3'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.3'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
description: Contains ClearSight Studio's common Capistrano settings.
|
85
|
+
email:
|
86
|
+
- jamon@clearsightstudio.com
|
87
|
+
- ryanl@clearsightstudio.com
|
88
|
+
executables: []
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- .gitignore
|
93
|
+
- Gemfile
|
94
|
+
- LICENSE.txt
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- clearcap.gemspec
|
98
|
+
- lib/clearcap.rb
|
99
|
+
- lib/clearcap/deploy/avlux.rb
|
100
|
+
- lib/clearcap/deploy/common.rb
|
101
|
+
- lib/clearcap/deploy/webfaction.rb
|
102
|
+
- lib/clearcap/version.rb
|
103
|
+
- lib/tasks/install.rake
|
104
|
+
- template/deploy.rb
|
105
|
+
homepage: https://bitbucket.org/clearsightstudio/clearcap
|
106
|
+
licenses:
|
107
|
+
- Proprietary
|
108
|
+
metadata: {}
|
109
|
+
post_install_message:
|
110
|
+
rdoc_options: []
|
111
|
+
require_paths:
|
112
|
+
- lib
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
requirements: []
|
124
|
+
rubyforge_project:
|
125
|
+
rubygems_version: 2.0.0
|
126
|
+
signing_key:
|
127
|
+
specification_version: 4
|
128
|
+
summary: ClearSight Studio common Capistrano settings
|
129
|
+
test_files: []
|