capun 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in capun.gemspec
4
+ gemspec
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
@@ -0,0 +1,4 @@
1
+ require "capun/version"
2
+
3
+ module Capun
4
+ end
@@ -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,3 @@
1
+ module Capun
2
+ VERSION = "0.0.1"
3
+ end
@@ -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,11 @@
1
+ module BasicAuthenticatable
2
+
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ <%% if fetch(:use_basic_auth) %>
7
+ http_basic_authenticate_with name: "<%= @username %>", password: "<%= @password %>"
8
+ <%% end %>
9
+ end
10
+
11
+ end
@@ -0,0 +1,5 @@
1
+ <%= fetch(:stage) %>:
2
+ adapter: sqlite3
3
+ database: /home/<%= fetch(:user) %>/apps/<%= fetch(:application) %>/shared/<%= fetch(:stage) %>.sqlite3
4
+ pool: 5
5
+ timeout: 5000
@@ -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,2 @@
1
+ set :application, "<%= @appname %>"
2
+ set :url, "<%= @url %>"
@@ -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: []