capun 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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +47 -0
- data/Rakefile +1 -0
- data/capun.gemspec +28 -0
- data/lib/capun.rb +4 -0
- data/lib/capun/setup.rb +96 -0
- data/lib/capun/version.rb +3 -0
- data/lib/generators/capun/install_generator.rb +42 -0
- data/lib/generators/capun/stage_generator.rb +45 -0
- data/lib/generators/capun/templates/Capfile +12 -0
- data/lib/generators/capun/templates/basic_authenticatable.rb.erb +11 -0
- data/lib/generators/capun/templates/database.yml.erb +5 -0
- data/lib/generators/capun/templates/deploy.rb.erb +14 -0
- data/lib/generators/capun/templates/nginx.conf.erb +32 -0
- data/lib/generators/capun/templates/stage.rb.erb +2 -0
- data/lib/generators/capun/templates/unicorn.config.rb.erb +10 -0
- metadata +160 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a2a2aa39992b1871940909998ca236757f1cd4f8
|
4
|
+
data.tar.gz: 021cd0fd56fbee637fe0a12b27e466fb2e4d031c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 74046b4766512b64e683d0afef02148c0bde3e061f467140807901ede5f1cc865798ae42794d530a4782ddd4a9acb74884c95223a17c403f66683f018bd8dbb4
|
7
|
+
data.tar.gz: 09c792840e76066441b7f50135b8e33b4c3281b2e17b5fad08f645899c10040d296cf167f31db1eec5cc1c89643ba9072069fec45898a12bf4b3623fd2570032
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Ivan Zamylin
|
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.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Capun
|
2
|
+
|
3
|
+
|
4
|
+
###Prerequisites
|
5
|
+
|
6
|
+
We expect you to have the following things setup before you run `cap staging|production|beta|etc deploy`:
|
7
|
+
* linux server with a ssh user who would own a project (see the wiki page for instuctions on how to configure a user)
|
8
|
+
* `nginx` installed in the `/etc/nginx` directory
|
9
|
+
* dedicated host (e.g. `beta.example.com`)
|
10
|
+
* `unicorn` gem added to a `Gemfile`
|
11
|
+
* rails project pushed to a git repo (you should also setup `ssh agent forwarding`, [see this article for instuctions](https://help.github.com/articles/using-ssh-agent-forwarding))
|
12
|
+
|
13
|
+
|
14
|
+
### Getting started
|
15
|
+
|
16
|
+
Deployer works with Rails 4.0 onwards. You can add it to your Gemfile with:
|
17
|
+
|
18
|
+
<pre><code>gem 'devise', group: :development
|
19
|
+
\#add unicorn as well, as we use it as application server
|
20
|
+
gem 'unicorn', group: :production
|
21
|
+
</pre></code>
|
22
|
+
|
23
|
+
Run the bundle command to install it.
|
24
|
+
After you install `Capun`, you need to run the generator:
|
25
|
+
|
26
|
+
<pre><code>rails generate capun:install
|
27
|
+
</pre></code>
|
28
|
+
|
29
|
+
It will ask you about user, server and repo you'd like to use.
|
30
|
+
Add stage to `capistrano` configurations:
|
31
|
+
|
32
|
+
<pre><code>rails generate capun:stage beta
|
33
|
+
</pre></code>
|
34
|
+
|
35
|
+
It will ask you about application name for stage selected and application url you'd like to use. Optionally, you can add basic authentication.
|
36
|
+
Now you are ready to make a deploy:
|
37
|
+
|
38
|
+
<pre><code>cap beta deploy
|
39
|
+
</pre></code>
|
40
|
+
|
41
|
+
### Contributing
|
42
|
+
|
43
|
+
1. Fork it ( http://github.com/zamylin/capun/fork )
|
44
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
45
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
46
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
47
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/capun.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'capun/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "capun"
|
8
|
+
spec.version = Capun::VERSION
|
9
|
+
spec.authors = ["Ivan Zamylin"]
|
10
|
+
spec.email = ["zamylin@yandex.ru"]
|
11
|
+
spec.summary = %q{Opinionated Rails deployment solution with CAPistrano, Unicorn and Nginx.}
|
12
|
+
spec.description = %q{Opinionated Rails deployment solution with CAPistrano, Unicorn and Nginx.}
|
13
|
+
spec.homepage = "http://oblakogroup.ru"
|
14
|
+
spec.license = "MIT"
|
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_development_dependency "bundler", "~> 1.5"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_dependency "capistrano"
|
24
|
+
spec.add_dependency "capistrano-rails"
|
25
|
+
spec.add_dependency "rvm1-capistrano3"
|
26
|
+
spec.add_dependency "capistrano-bundler"
|
27
|
+
spec.add_dependency "capistrano3-unicorn"
|
28
|
+
end
|
data/lib/capun.rb
ADDED
data/lib/capun/setup.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
|
2
|
+
set :deploy_to, -> {"/home/#{fetch(:user)}/apps/#{fetch(:application)}"}
|
3
|
+
set :rvm1_ruby_version, "2.0.0"
|
4
|
+
set :branch, 'master'
|
5
|
+
# Remote caching will keep a local git repository on the server you're deploying to
|
6
|
+
# and simply run a fetch from that rather than an entire clone
|
7
|
+
set :deploy_via, :remote_cache
|
8
|
+
# Capistrano would use local ssh keys to get access to git repo
|
9
|
+
set :ssh_options, { :forward_agent => true }
|
10
|
+
set :pty, true
|
11
|
+
|
12
|
+
set :keep_releases, 2
|
13
|
+
set :bundle_flags, "--quiet"
|
14
|
+
|
15
|
+
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets public/system}
|
16
|
+
set :unicorn_config_path, -> { "#{shared_path}/config/unicorn.config.rb" }
|
17
|
+
|
18
|
+
set :uploads, []
|
19
|
+
set :std_uploads, [
|
20
|
+
#basic_authenticatable.rb
|
21
|
+
{what: "config/deploy/basic_authenticatable.rb.erb", where: '#{release_path}/app/controllers/concerns/basic_authenticatable.rb'},
|
22
|
+
#nginx.conf
|
23
|
+
{what: "config/deploy/nginx.conf.erb", where: '#{shared_path}/config/nginx.conf'},
|
24
|
+
#unicorn.config.rb
|
25
|
+
{what: "config/deploy/unicorn.config.rb.erb", where: '#{shared_path}/config/unicorn.config.rb'},
|
26
|
+
#secret_token.rb
|
27
|
+
{what: "config/initializers/secret_token.rb", where: '#{release_path}/config/initializers/secret_token.rb'},
|
28
|
+
#database.yml
|
29
|
+
{what: "config/deploy/database.yml.erb", where: '#{shared_path}/config/database.yml'}
|
30
|
+
]
|
31
|
+
|
32
|
+
set :symlinks, []
|
33
|
+
set :std_symlinks, [
|
34
|
+
{what: "nginx.conf", where: '/etc/nginx/sites-enabled/#{fetch(:application)}'},
|
35
|
+
{what: "database.yml", where: '#{release_path}/config/database.yml'}
|
36
|
+
]
|
37
|
+
|
38
|
+
before 'deploy', 'rvm1:install:rvm' # install/update RVM
|
39
|
+
before 'deploy', 'rvm1:install:ruby' # install Ruby and create gemset
|
40
|
+
|
41
|
+
namespace :deploy do
|
42
|
+
|
43
|
+
desc 'Uploads files to app based on stage'
|
44
|
+
task :upload do
|
45
|
+
on roles(:app) do
|
46
|
+
#create /home/[user]/apps/[app]/shared/config directory, if it doesn't exist yet
|
47
|
+
execute :mkdir, "-p", "#{shared_path}/config"
|
48
|
+
uploads = fetch(:uploads).concat(fetch(:std_uploads))
|
49
|
+
uploads.each do |file_hash|
|
50
|
+
what = file_hash[:what]
|
51
|
+
next if !File.exists?(what)
|
52
|
+
where = eval "\"" + file_hash[:where] + "\""
|
53
|
+
#compile temlate if it ends with .erb before upload
|
54
|
+
upload! (what.end_with?(".erb") ? StringIO.new(ERB.new(File.read(what)).result(binding)) : what), where
|
55
|
+
info "copying: #{what} to: #{where}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Makes files executable and creates symlinks according to rules specified in symlinks array"
|
61
|
+
task :add_symlinks do
|
62
|
+
on roles(:app) do
|
63
|
+
symlinks = fetch(:symlinks).concat(fetch(:std_symlinks))
|
64
|
+
fetch(:symlinks).each do |file_hash|
|
65
|
+
if test("[ -f #{shared_path}/config/#{file_hash[:what]} ]")
|
66
|
+
where = eval "\"" + file_hash[:where] + "\""
|
67
|
+
execute :chmod, "+x #{shared_path}/config/#{file_hash[:what]}"
|
68
|
+
info "making #{file_hash[:what]} executable"
|
69
|
+
execute :sudo, :ln, "-nfs", "#{shared_path}/config/#{file_hash[:what]} #{where}"
|
70
|
+
info "creating symlink for #{file_hash[:what]} to #{where}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "Creates necessary directory structury for application"
|
77
|
+
task :make_dirs do
|
78
|
+
on roles(:app) do
|
79
|
+
execute :mkdir, "-p", "/home/#{fetch(:user)}/apps/#{fetch(:application)}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
desc 'Restart nginx'
|
84
|
+
task :restart do
|
85
|
+
on roles(:app) do
|
86
|
+
execute :sudo, "service nginx restart"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
before "deploy:updating", "deploy:make_dirs"
|
93
|
+
after "deploy:symlink:linked_dirs", "deploy:upload"
|
94
|
+
after "deploy:symlink:linked_dirs", "deploy:add_symlinks"
|
95
|
+
after "deploy:publishing", "deploy:restart"
|
96
|
+
after "deploy:publishing", "unicorn:restart"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Capun
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
desc "Adds files and dependencies for complete Capistrano deployment mechanism"
|
9
|
+
|
10
|
+
def opts
|
11
|
+
@user = ask("The SSH username you are logging into the server(s) as [ex.: mike]:")
|
12
|
+
@server = ask("Server ip-address [ex.: 92.134.223.012]:")
|
13
|
+
@repo = ask("The URL of the repository that hosts the code [ex.: git@github.com/capistrano/capistrano.git]:")
|
14
|
+
end
|
15
|
+
|
16
|
+
def copy_files
|
17
|
+
empty_directory "config/deploy"
|
18
|
+
copy_file "database.yml.erb", "config/deploy/database.yml.erb"
|
19
|
+
copy_file "nginx.conf.erb", "config/deploy/nginx.conf.erb"
|
20
|
+
copy_file "unicorn.config.rb.erb", "config/deploy/unicorn.config.rb.erb"
|
21
|
+
copy_file "Capfile", "Capfile"
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_to_gitignore
|
25
|
+
gsub_file ".gitignore", "\nconfig/initializers/secret_token.rb", '' if File.exists?("./.gitignore")
|
26
|
+
gsub_file ".gitignore", "\nconfig/deploy/database.yml.erb", '' if File.exists?("./.gitignore")
|
27
|
+
append_to_file ".gitignore", "\nconfig/initializers/secret_token.rb" if File.exists?("./.gitignore")
|
28
|
+
append_to_file ".gitignore", "\nconfig/deploy/database.yml.erb" if File.exists?("./.gitignore")
|
29
|
+
end
|
30
|
+
|
31
|
+
def remove_production_from_database
|
32
|
+
text2remove = "production:\n adapter: sqlite3\n database: db/production.sqlite3\n pool: 5\n timeout: 5000"
|
33
|
+
gsub_file "config/database.yml", text2remove, '' if File.exists?("./config/database.yml")
|
34
|
+
end
|
35
|
+
|
36
|
+
def compile_and_add_deploy
|
37
|
+
template "deploy.rb.erb", "config/deploy.rb"
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Capun
|
4
|
+
module Generators
|
5
|
+
class StageGenerator < Rails::Generators::NamedBase
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
desc "Adds stage to capistrano configuration"
|
8
|
+
|
9
|
+
def opts
|
10
|
+
@appname = ask("Application name for stage \"#{singular_name}\" [ex.: beta.myapp]:")
|
11
|
+
@url = ask("Domain name where application for stage \"#{singular_name}\" would be deployed [ex.: beta.myapp.com]:")
|
12
|
+
@addauth = ask("Would you like to add basic authentication to stage? [Y/n]").capitalize == 'Y'
|
13
|
+
if @addauth
|
14
|
+
@username = ask("Basic authentication username [ex.: mike]:")
|
15
|
+
@password = ask("Basic authentication password [ex.: secret]:")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_stage
|
20
|
+
template "stage.rb.erb", "config/deploy/#{singular_name}.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
def copy_env_file
|
24
|
+
copy_file Rails.root.join('config', 'environments', 'production.rb'), "config/environments/#{singular_name}.rb"
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_authentication
|
28
|
+
if @addauth
|
29
|
+
template "basic_authenticatable.rb.erb", "config/deploy/basic_authenticatable.rb.erb"
|
30
|
+
# inject include directive
|
31
|
+
app_controller = "app/controllers/application_controller.rb"
|
32
|
+
this_text = " include BasicAuthenticatable if File.exists?( File.expand_path('../concerns/basic_authenticatable.rb', __FILE__) )\n"
|
33
|
+
this_line = "class ApplicationController < ActionController::Base\n"
|
34
|
+
gsub_file app_controller, this_text, ''
|
35
|
+
inject_into_file app_controller, this_text, after: this_line
|
36
|
+
#inject use auth flag into stage
|
37
|
+
gsub_file "config/deploy/#{singular_name}.rb", "\nset :use_basic_auth, true", '' if File.exists?("./config/deploy/#{singular_name}.rb")
|
38
|
+
append_to_file "config/deploy/#{singular_name}.rb", "\nset :use_basic_auth, true" if File.exists?("./config/deploy/#{singular_name}.rb")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Load DSL and Setup Up Stages
|
2
|
+
require 'capistrano/setup'
|
3
|
+
# Includes default deployment tasks
|
4
|
+
require 'capistrano/deploy'
|
5
|
+
|
6
|
+
#capistrano-rails tasks
|
7
|
+
require 'capistrano/rails'
|
8
|
+
require 'rvm1/capistrano3'
|
9
|
+
require 'capistrano3/unicorn'
|
10
|
+
|
11
|
+
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
|
12
|
+
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'capun/setup'
|
2
|
+
|
3
|
+
# name of the user at server who would own the project
|
4
|
+
set :user, '<%= @user %>'
|
5
|
+
# ip for the server where the project would be deployed
|
6
|
+
server '<%= @server %>', user: fetch(:user), roles: %w{web app db}
|
7
|
+
|
8
|
+
# path to the git repository
|
9
|
+
set :repo_url, '<%= @repo %>'
|
10
|
+
# set :branch, 'master'
|
11
|
+
|
12
|
+
# set :rvm1_ruby_version, "ruby-2.0.0-p353"
|
13
|
+
|
14
|
+
# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets public/system}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
upstream unicorn_<%= fetch(:application) %> {
|
2
|
+
server unix:/tmp/unicorn.<%= fetch(:application) %>.sock fail_timeout=0;
|
3
|
+
}
|
4
|
+
|
5
|
+
server {
|
6
|
+
server_name <%= fetch(:url) %> www.<%= fetch(:url) %>;
|
7
|
+
listen 91.228.154.188;
|
8
|
+
|
9
|
+
location / {
|
10
|
+
root /home/<%= fetch(:user) %>/apps/<%= fetch(:application) %>/current/public;
|
11
|
+
try_files $uri/index.html $uri @unicorn_<%= fetch(:application) %>;
|
12
|
+
}
|
13
|
+
|
14
|
+
location ^~ /assets/ {
|
15
|
+
root /home/<%= fetch(:user) %>/apps/<%= fetch(:application) %>/current/public;
|
16
|
+
gzip_static on;
|
17
|
+
expires max;
|
18
|
+
add_header Cache-Control public;
|
19
|
+
}
|
20
|
+
|
21
|
+
location @unicorn_<%= fetch(:application) %> {
|
22
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
23
|
+
proxy_set_header Host $http_host;
|
24
|
+
proxy_redirect off;
|
25
|
+
proxy_pass http://unicorn_<%= fetch(:application) %>;
|
26
|
+
}
|
27
|
+
|
28
|
+
error_page 500 502 503 504 /500.html;
|
29
|
+
client_max_body_size 4G;
|
30
|
+
keepalive_timeout 10;
|
31
|
+
|
32
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
root = "/home/<%= fetch(:user) %>/apps/<%= fetch(:application) %>/current"
|
2
|
+
working_directory root
|
3
|
+
pid "#{root}/tmp/pids/unicorn.pid"
|
4
|
+
stderr_path "#{root}/log/unicorn.log"
|
5
|
+
stdout_path "#{root}/log/unicorn.log"
|
6
|
+
|
7
|
+
listen "/tmp/unicorn.<%= fetch(:application) %>.sock"
|
8
|
+
worker_processes 2
|
9
|
+
timeout 30
|
10
|
+
preload_app true
|
metadata
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: capun
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ivan Zamylin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: capistrano
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: capistrano-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rvm1-capistrano3
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: capistrano-bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: capistrano3-unicorn
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Opinionated Rails deployment solution with CAPistrano, Unicorn and Nginx.
|
112
|
+
email:
|
113
|
+
- zamylin@yandex.ru
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- .gitignore
|
119
|
+
- Gemfile
|
120
|
+
- LICENSE.txt
|
121
|
+
- README.md
|
122
|
+
- Rakefile
|
123
|
+
- capun.gemspec
|
124
|
+
- lib/capun.rb
|
125
|
+
- lib/capun/setup.rb
|
126
|
+
- lib/capun/version.rb
|
127
|
+
- lib/generators/capun/install_generator.rb
|
128
|
+
- lib/generators/capun/stage_generator.rb
|
129
|
+
- lib/generators/capun/templates/Capfile
|
130
|
+
- lib/generators/capun/templates/basic_authenticatable.rb.erb
|
131
|
+
- lib/generators/capun/templates/database.yml.erb
|
132
|
+
- lib/generators/capun/templates/deploy.rb.erb
|
133
|
+
- lib/generators/capun/templates/nginx.conf.erb
|
134
|
+
- lib/generators/capun/templates/stage.rb.erb
|
135
|
+
- lib/generators/capun/templates/unicorn.config.rb.erb
|
136
|
+
homepage: http://oblakogroup.ru
|
137
|
+
licenses:
|
138
|
+
- MIT
|
139
|
+
metadata: {}
|
140
|
+
post_install_message:
|
141
|
+
rdoc_options: []
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
requirements: []
|
155
|
+
rubyforge_project:
|
156
|
+
rubygems_version: 2.2.1
|
157
|
+
signing_key:
|
158
|
+
specification_version: 4
|
159
|
+
summary: Opinionated Rails deployment solution with CAPistrano, Unicorn and Nginx.
|
160
|
+
test_files: []
|