capistrano-relevance 0.0.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.
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .idea
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in capistrano-relevance.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Relevance
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,152 @@
1
+ # Capistrano::Relevance
2
+
3
+ A collection of commonly-used (default) Capistrano recipes for Rails projects at [Relevance](http://thinkrelevance.com).
4
+
5
+
6
+ ## Installation
7
+
8
+ Add these lines to the Gemfile in your Rails application:
9
+
10
+ ```ruby
11
+ group :deployment do
12
+ gem 'capistrano', :git => 'git://github.com/capistrano/capistrano', :ref => 'b31e2f5'
13
+ gem 'capistrano-relevance'
14
+ end
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ ```sh
20
+ bundle
21
+ ```
22
+
23
+ **Note**: You will notice that we rely on a specific revision of Capistrano in the `Gemfile` above. (Weird, right?)
24
+ At the time of this writing, Capistrano 2.13.4 is the latest *released* version;
25
+ however, 2.13.4 hardcoded the SCM to `:subversion`, which caused a problem for `capistrano-relevance`.
26
+ [Pull request 223](https://github.com/capistrano/capistrano/pull/233) addresses this issue.
27
+ `b31e2f5` is the last commit from that pull request, so `capistrano-relevance` needs to depend on that commit until a new version of Capistrano is released (e.g., 2.13.4.1 or 2.13.5).
28
+
29
+
30
+ ## Usage
31
+
32
+ After installing `capistrano-relevance` as described above, you are ready to set up your Capistrano deployment. First, you need to `capify` your app:
33
+
34
+ bundle exec capify .
35
+
36
+ From here, there are two ways that you can use `capistrano-relevance`:
37
+
38
+ 1. Use the [default set of recipes](https://github.com/relevance/capistrano-relevance/blob/master/lib/capistrano/relevance/all.rb), or
39
+ 2. Use a customized set of recipes.
40
+
41
+ We'll first walk through the process for using the default set of recipes.
42
+ From there, it's easy for you pick and choose a different set of recipes.
43
+
44
+
45
+ ### Using the default set of recipes
46
+
47
+ #### Configuring deploy.rb
48
+
49
+ To use the `capistrano-relevance` recipes, you will edit your `config/deploy.rb` file to require the `capistrano-relevance` recipes.
50
+ You will also define a few additional required settings.
51
+
52
+ Here is an example file that is ready for use with `capistrano-relevance`:
53
+
54
+ ```ruby
55
+ require 'bundler/capistrano'
56
+ require 'capistrano/relevance/all'
57
+
58
+ set :application, "your_app_name"
59
+ set :repository, "git://github.com/username/your_app_name"
60
+
61
+ role :web, "your_app_name.example.com"
62
+ role :app, "your_app_name.example.com"
63
+ role :db, "your_app_name.example.com", :primary => true
64
+ ```
65
+
66
+ #### Noteworthy Assumptions
67
+
68
+ By default, `capistrano-relevance` [expects](https://github.com/relevance/capistrano-relevance/blob/master/lib/capistrano/relevance/common.rb) to deploy as the following user in the following location:
69
+
70
+ ```ruby
71
+ set :user, 'deploy'
72
+ set(:deploy_to) { "/var/www/apps/#{application}" }
73
+ ```
74
+
75
+ If your server uses a different user, or deploys in a different location, you can override these settings. For example:
76
+
77
+ ```ruby
78
+ require 'bundler/capistrano'
79
+ require 'capistrano/relevance/all'
80
+
81
+ set :user, 'apptastic'
82
+ set(:deploy_to) { "/home/apptastic/apps/#{application}" }
83
+
84
+ # other settings here ...
85
+ ```
86
+
87
+ #### Deploying
88
+
89
+ Now you're ready to start deploying your app to your server.
90
+ You need to create the directory structure that Capistrano expects and place your database configuration on the server.
91
+ Best practices (TM) discourage you from checking in any database credentials into your Git repo.
92
+ Instead, you can create a `database.yml` file on your target server.
93
+
94
+ ```sh
95
+ bundle exec cap deploy:setup
96
+
97
+ ssh deploy@your_app_name.example.com
98
+
99
+ # Create the the directory where you will store your shared configuration.
100
+ # If you are using a custom :deploy_to value, you should customize this command accordingly.
101
+ mkdir /var/www/apps/[YOUR-APP-NAME]/shared/config
102
+
103
+ # Add production settings for your database
104
+ vim /var/www/apps/[YOUR-APP-NAME]/shared/config/database.yml
105
+
106
+ # We're done messing around on the server; let's get outta here
107
+ exit
108
+ ```
109
+
110
+ Now it's time to deploy your Rails app to the server.
111
+ Since this is the first time you've deployed this app to the server, you'll need to run a special Capistrano command that does slightly more work than a bare deploy.
112
+
113
+ ```sh
114
+ bundle exec cap deploy:cold
115
+ ```
116
+
117
+ Congratulations! You should be able to visit `your_app_name.example.com` using your favorite browser and see the application up and running.
118
+
119
+ For subsequent deploys, you can simply run:
120
+
121
+ ```sh
122
+ bundle exec cap deploy
123
+ ```
124
+
125
+ ## Use a customized set of recipes
126
+
127
+ When you require `capistrano/relevance/all` in your `deploy.rb` file, it includes the [default set of recipes](https://github.com/relevance/capistrano-relevance/blob/master/lib/capistrano/relevance/all.rb).
128
+ If you need something other than the default set of recipes, you can include a customized set of recipes for your app.
129
+ To do so, edit your `deploy.rb` file, and replace this line ...
130
+
131
+ ```ruby
132
+ require 'capistrano/relevance/all'
133
+ ```
134
+
135
+ ... with the specific set of recipes you want to use in your app.
136
+
137
+ For example, imagine that you're using Unicorn instead of Passenger. You might want to include all recipes *except* the Passenger recipe.
138
+
139
+ ```ruby
140
+ require 'capistrano/relevance/common'
141
+ require 'capistrano/relevance/migrate_after_update_code'
142
+ require 'capistrano/relevance/symlink_configs'
143
+ ```
144
+
145
+
146
+ ## Contributing
147
+
148
+ 1. Fork it
149
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
150
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
151
+ 4. Push to the branch (`git push origin my-new-feature`)
152
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'capistrano/relevance/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "capistrano-relevance"
8
+ gem.version = Capistrano::Relevance::VERSION
9
+ gem.authors = ["Yoko Harada and Jason Rudolph"]
10
+ gem.email = ["opensource@thinkrelevance.com"]
11
+ gem.description = %q{A collection of default Capistrano recipes commonly used on Relevance projects}
12
+ gem.summary = %q{Relevance recipes for Capistrano}
13
+ gem.homepage = "https://github.com/relevance/capistrano-relevance"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ # You actually need an unreleased version of Capistrano (2.13.4.1? or 2.13.5?). See README.
21
+ gem.add_runtime_dependency "capistrano", "~> 2.13.4"
22
+ end
@@ -0,0 +1 @@
1
+ require "capistrano/relevance/version"
@@ -0,0 +1,4 @@
1
+ require 'capistrano/relevance/common'
2
+ require 'capistrano/relevance/migrate_after_update_code'
3
+ require 'capistrano/relevance/passenger'
4
+ require 'capistrano/relevance/symlink_configs'
@@ -0,0 +1,3 @@
1
+ unless Capistrano::Configuration.respond_to?(:instance)
2
+ abort "capistrano requires Capistrano 2"
3
+ end
@@ -0,0 +1,12 @@
1
+ require 'capistrano/relevance/base'
2
+
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ set :user, 'deploy'
5
+ set :use_sudo, false
6
+
7
+ set :scm, :git
8
+ set :deploy_via, :copy
9
+ set(:deploy_to) { "/var/www/apps/#{application}" }
10
+
11
+ default_run_options[:pty] = true # needed for Git password prompts
12
+ end
@@ -0,0 +1,5 @@
1
+ require 'capistrano/relevance/base'
2
+
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ after 'deploy:update_code', 'deploy:migrate'
5
+ end
@@ -0,0 +1,11 @@
1
+ require 'capistrano/relevance/base'
2
+
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ namespace :deploy do
5
+ task :start do ; end
6
+ task :stop do ; end
7
+ task :restart, :roles => :app, :except => {:no_release => true} do
8
+ run "#{try_sudo} touch #{File.join(current_path, 'tmp', 'restart.txt')}"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ require 'capistrano/relevance/base'
2
+
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ # TODO As part of 'deploy:setup', automatically create "#{shared_path}/config"
5
+ # TODO As part of before 'deploy:symlink_configs', copy database.example.yml if database.yml does not exist
6
+
7
+ after 'deploy:finalize_update', 'deploy:symlink_configs'
8
+
9
+ namespace :deploy do
10
+ task :symlink_configs do
11
+ shared_configs = File.join(shared_path,'config')
12
+ release_configs = File.join(release_path,'config')
13
+ run("ln -nfs #{shared_configs}/database.yml #{release_configs}/database.yml")
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Capistrano
2
+ module Relevance
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano-relevance
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Yoko Harada and Jason Rudolph
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-05 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.13.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.13.4
30
+ description: A collection of default Capistrano recipes commonly used on Relevance
31
+ projects
32
+ email:
33
+ - opensource@thinkrelevance.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE.txt
41
+ - README.md
42
+ - Rakefile
43
+ - capistrano-relevance.gemspec
44
+ - lib/capistrano/relevance.rb
45
+ - lib/capistrano/relevance/all.rb
46
+ - lib/capistrano/relevance/base.rb
47
+ - lib/capistrano/relevance/common.rb
48
+ - lib/capistrano/relevance/migrate_after_update_code.rb
49
+ - lib/capistrano/relevance/passenger.rb
50
+ - lib/capistrano/relevance/symlink_configs.rb
51
+ - lib/capistrano/relevance/version.rb
52
+ homepage: https://github.com/relevance/capistrano-relevance
53
+ licenses: []
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project:
72
+ rubygems_version: 1.8.24
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: Relevance recipes for Capistrano
76
+ test_files: []