coalla-deploy 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +11 -0
- data/Gemfile +4 -0
- data/Rakefile +31 -0
- data/app/views/metric/_yandex_metrica.html.haml +15 -0
- data/coalla-deploy.gemspec +27 -0
- data/lib/coalla-deploy/engine.rb +10 -0
- data/lib/coalla-deploy/unicorn.rb +56 -0
- data/lib/coalla-deploy/version.rb +5 -0
- data/lib/coalla-deploy.rb +3 -0
- data/lib/generators/coalla/deploy/init/init_generator.rb +30 -0
- data/server_setup.rb +19 -0
- data/setup-server.sh +4 -0
- data/templates/Capfile +4 -0
- data/templates/Gemfile.linux +4 -0
- data/templates/assets.rake +16 -0
- data/templates/build-production.sh +4 -0
- data/templates/build-staging.sh +4 -0
- data/templates/deploy.rb +132 -0
- data/templates/http_auth.rb +18 -0
- data/templates/production.rb +4 -0
- data/templates/staging.rb +4 -0
- data/templates/unicorn.rb +5 -0
- metadata +149 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjliYzkxNThjM2JlNDBmYTc3MjgwYjU3MmRlYTI1OWQwNjYxOWEzZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Y2Y5ZTg0NGEzMDAyN2QyMDNjYWFiYTU3YTliN2IyMWIxOGRmODM3Mg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
M2JlOGQyOWFkZTIzOTNmZDFjMTc5NGVlNDg2MjgzZDBlYTU4ZmYyYzM0Njgz
|
10
|
+
YzEzZjQ5YjM5OTI4OWE4ZTg2ODc5NzRhNTA2NmRmOTdjOTYzOTU4YTZjNjA1
|
11
|
+
NTc3ZDkzMjNiMzQ5MGI2OTY5ZWZjZGQ2YTUxYjg0YjdjNWEyZmM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
M2JhZDQ1N2FiNzEzNWMwYzY5MGM5NjhiNmZiYThlZjdkODFlM2MwNDZjZmFk
|
14
|
+
YWE1YmU5ZDg2MWQ4NjRlZTExNDY3NThhNWRhNzcyZWJmYmFhZDU3NzE3NGE4
|
15
|
+
ZjgwMmQzMTY5NjRiZGY3OTJlMWM4YjRhOTRmNjY1YzM0YTA3OTg=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'net/ssh'
|
3
|
+
require 'net/scp'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
task 'build:gem' do
|
7
|
+
host = '5.9.118.111'
|
8
|
+
user = 'deployer'
|
9
|
+
Net::SSH.start(host, user, port: 60000) do |ssh|
|
10
|
+
base_dir = "/home/#{user}/temp/coalla-gems"
|
11
|
+
project_name = 'coalla-deploy'
|
12
|
+
git_url = "http://git.coalla.ru/#{project_name}.git"
|
13
|
+
gems_dir = '/var/www/virtual-hosts/gems.coalla.ru'
|
14
|
+
output = ssh.exec! <<-SH
|
15
|
+
mkdir --parents #{base_dir}
|
16
|
+
cd #{base_dir}
|
17
|
+
git clone #{git_url}
|
18
|
+
cd #{project_name}
|
19
|
+
source /etc/profile.d/rvm.sh
|
20
|
+
rvm 1.9.3
|
21
|
+
gem build coalla-deploy.gemspec
|
22
|
+
cp -rf *.gem #{gems_dir}/gems
|
23
|
+
cd #{gems_dir}
|
24
|
+
source /etc/profile.d/rvm.sh
|
25
|
+
rvm 1.9.3
|
26
|
+
gem generate_index
|
27
|
+
rm -R #{base_dir}
|
28
|
+
SH
|
29
|
+
puts output
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-# counter_id - ID счетчика в системе Yandex
|
2
|
+
- if Rails.env.production?
|
3
|
+
%div{style: 'display:none;'}
|
4
|
+
:javascript
|
5
|
+
(function(w, c) {
|
6
|
+
(w[c] = w[c] || []).push(function() {
|
7
|
+
try {
|
8
|
+
w.yaCounter#{counter_id} = new Ya.Metrika({id:#{counter_id}, enableAll: true, webvisor:true});
|
9
|
+
} catch(e) { }
|
10
|
+
});
|
11
|
+
})(window, 'yandex_metrika_callbacks');
|
12
|
+
%script{src: '//mc.yandex.ru/metrika/watch.js', type: 'text/javascript', defer: 'defer'}
|
13
|
+
%noscript
|
14
|
+
%div
|
15
|
+
%img{src: "//mc.yandex.ru/watch/#{counter_id}", style: 'position:absolute; left:-9999px;', alt: ''}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "coalla-deploy/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "coalla-deploy"
|
7
|
+
s.version = Coalla::Deploy::VERSION
|
8
|
+
s.authors = ["coalla"]
|
9
|
+
s.email = ["dev@coalla.ru"]
|
10
|
+
s.homepage = "http://coalla.ru"
|
11
|
+
s.summary = "Coalla deploy gem"
|
12
|
+
s.description = "Coalla deploy gem"
|
13
|
+
|
14
|
+
s.rubyforge_project = "coalla-deploy"
|
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_dependency 'railties', '~> 4.0'
|
22
|
+
s.add_dependency 'thor', '~> 0.18'
|
23
|
+
s.add_development_dependency 'bundler', '~> 1.3.5'
|
24
|
+
s.add_development_dependency 'rails', '~> 4.0'
|
25
|
+
s.add_development_dependency 'net-ssh', '~> 2.7'
|
26
|
+
s.add_development_dependency 'net-scp', '~> 1.1'
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
module Coalla
|
3
|
+
|
4
|
+
class Unicorn
|
5
|
+
|
6
|
+
def self.init(configurator, options = {})
|
7
|
+
configurator.instance_eval do
|
8
|
+
deploy_to = options.delete(:deploy_to)
|
9
|
+
rails_root = "#{deploy_to}/current"
|
10
|
+
pid_file = "#{deploy_to}/shared/pids/unicorn.pid"
|
11
|
+
socket_file= "#{deploy_to}/shared/unicorn.sock"
|
12
|
+
log_file = "#{rails_root}/log/unicorn.log"
|
13
|
+
err_log = "#{rails_root}/log/unicorn_error.log"
|
14
|
+
old_pid = pid_file + '.oldbin'
|
15
|
+
|
16
|
+
working_directory rails_root
|
17
|
+
|
18
|
+
timeout options.delete(:timeout) || 30
|
19
|
+
worker_processes options.delete(:worker_processes) || 1
|
20
|
+
listen socket_file, :backlog => 1024
|
21
|
+
pid pid_file
|
22
|
+
stderr_path err_log
|
23
|
+
stdout_path log_file
|
24
|
+
|
25
|
+
preload_app true # Мастер процесс загружает приложение, перед тем, как плодить рабочие процессы.
|
26
|
+
|
27
|
+
GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
|
28
|
+
|
29
|
+
before_exec do |server|
|
30
|
+
ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile"
|
31
|
+
end
|
32
|
+
|
33
|
+
before_fork do |server, worker|
|
34
|
+
# Перед тем, как создать первый рабочий процесс, мастер отсоединяется от базы.
|
35
|
+
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
|
36
|
+
|
37
|
+
# Ниже идет магия, связанная с 0 downtime deploy.
|
38
|
+
if File.exists?(old_pid) && server.pid != old_pid
|
39
|
+
begin
|
40
|
+
Process.kill("QUIT", File.read(old_pid).to_i)
|
41
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
42
|
+
# someone else did our job for us
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
after_fork do |server, worker|
|
48
|
+
# После того как рабочий процесс создан, он устанавливает соединение с базой.
|
49
|
+
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module Coalla
|
4
|
+
|
5
|
+
module Deploy
|
6
|
+
|
7
|
+
module Generators
|
8
|
+
|
9
|
+
class InitGenerator < ::Rails::Generators::Base
|
10
|
+
|
11
|
+
source_root File.expand_path('../../../../../../templates', __FILE__)
|
12
|
+
|
13
|
+
def copy_build_scripts
|
14
|
+
copy_file 'build-production.sh', 'build-production.sh'
|
15
|
+
copy_file 'build-staging.sh', 'build-staging.sh'
|
16
|
+
copy_file 'Capfile', 'Capfile'
|
17
|
+
copy_file 'Gemfile.linux', 'Gemfile.linux'
|
18
|
+
copy_file 'unicorn.rb', 'config/unicorn.rb'
|
19
|
+
copy_file 'deploy.rb', 'config/deploy.rb'
|
20
|
+
copy_file 'assets.rake', 'lib/tasks/assets.rake'
|
21
|
+
copy_file 'staging.rb', 'config/deploy/staging.rb'
|
22
|
+
copy_file 'production.rb', 'config/deploy/production.rb'
|
23
|
+
copy_file 'http_auth.rb', 'config/initializers/http_auth.rb'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/server_setup.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
package :setup do
|
2
|
+
apt 'python-software-properties'
|
3
|
+
end
|
4
|
+
|
5
|
+
deployment do
|
6
|
+
|
7
|
+
# mechanism for deployment
|
8
|
+
delivery :capistrano do
|
9
|
+
recipes 'deploy'
|
10
|
+
end
|
11
|
+
|
12
|
+
# source based package installer defaults
|
13
|
+
source do
|
14
|
+
prefix '/usr/local' # where all source packages will be configured to install
|
15
|
+
archives '/usr/local/sources' # where all source packages will be downloaded to
|
16
|
+
builds '/usr/local/build' # where all source packages will be built
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/setup-server.sh
ADDED
data/templates/Capfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
namespace :assets do
|
2
|
+
desc 'copy assets without digest in their names, use it after assets:precompile'
|
3
|
+
task non_digested: :environment do
|
4
|
+
assets = Dir.glob(File.join(Rails.root, 'public/assets/**/*'))
|
5
|
+
regex = /(-{1}[a-z0-9]{32}*\.{1}){1}/
|
6
|
+
assets.each do |file|
|
7
|
+
next if File.directory?(file) || file !~ regex || File.basename(file).starts_with?('manifest')
|
8
|
+
|
9
|
+
source = file.split('/')
|
10
|
+
source.push(source.pop.gsub(regex, '.'))
|
11
|
+
|
12
|
+
non_digested = File.join(source)
|
13
|
+
FileUtils.cp(file, non_digested)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/templates/deploy.rb
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
# Rails assets pipeline
|
2
|
+
load 'deploy/assets'
|
3
|
+
|
4
|
+
set :stages, %w(staging production)
|
5
|
+
require 'capistrano/ext/multistage'
|
6
|
+
|
7
|
+
set :repository, 'http://git.coalla.ru/coalla.git'
|
8
|
+
ssh_options[:port] = 60000
|
9
|
+
set :user, 'deployer'
|
10
|
+
set(:deploy_to) { "/var/www/virtual-hosts/#{application}" }
|
11
|
+
set(:unicorn_service) { "/etc/init.d/unicorn-#{application}" }
|
12
|
+
set :use_whenever, File.exists?(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'schedule.rb'))
|
13
|
+
set :use_sphinx, File.exists?(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'thinking_sphinx.yml'))
|
14
|
+
set :use_delayed_job, File.exists?(File.join(File.expand_path('..', File.dirname(__FILE__)), 'bin', 'delayed_job'))
|
15
|
+
|
16
|
+
# RVM configuration
|
17
|
+
require 'rvm/capistrano'
|
18
|
+
set :rvm_type, :system
|
19
|
+
set :rvm_ruby_string, '2.0.0'
|
20
|
+
|
21
|
+
default_run_options[:pty] = true
|
22
|
+
set :scm, :git
|
23
|
+
set :deploy_via, :copy
|
24
|
+
set :keep_releases, 3
|
25
|
+
|
26
|
+
desc 'Make symlink'
|
27
|
+
task :make_symlink, :roles => :app do
|
28
|
+
run "ln -nfs #{shared_path}/system/uploads #{release_path}/public/uploads"
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'Make a symlink to robots.txt according to rails_env'
|
32
|
+
task :symlink_robots_txt, :roles => :app do
|
33
|
+
run "ln -nfs #{release_path}/config/deploy/#{rails_env}/robots.txt #{release_path}/public/robots.txt"
|
34
|
+
end
|
35
|
+
|
36
|
+
after 'deploy:create_symlink', :make_symlink
|
37
|
+
|
38
|
+
# Removed 'deployment' flag, cause it needs Gemfile.lock exists in repository
|
39
|
+
# This can't be done due to Windows problems with nokogiri, ImageMagick etc
|
40
|
+
set :bundle_flags, '--quiet'
|
41
|
+
require 'bundler/capistrano'
|
42
|
+
|
43
|
+
# Unicorn recipe
|
44
|
+
namespace :deploy do
|
45
|
+
task :restart, roles: :app, except: {no_release: true} do
|
46
|
+
run "sudo #{unicorn_service} upgrade"
|
47
|
+
end
|
48
|
+
|
49
|
+
task :sudo_migrate do
|
50
|
+
run("cd #{deploy_to}/current && rvmsudo -u www-data bundle exec rake db:migrate RAILS_ENV=#{rails_env}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Sitemap copy
|
55
|
+
after 'deploy:update_code', 'deploy:copy_old_sitemap'
|
56
|
+
after 'deploy:update_code', :symlink_robots_txt
|
57
|
+
namespace :deploy do
|
58
|
+
task :copy_old_sitemap do
|
59
|
+
run "if [ -e #{previous_release}/public/sitemap.xml.gz ]; then cp #{previous_release}/public/sitemap* #{current_release}/public/; fi"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Backup database
|
64
|
+
require 'yaml'
|
65
|
+
task :backup_database, :roles => :db do
|
66
|
+
if previous_release
|
67
|
+
db = YAML::load(ERB.new(IO.read(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'database.yml'))).result)["#{rails_env}"]
|
68
|
+
run "export PGPASSWORD='#{db['password']}' && pg_dump --username=#{db['username']} --format=custom --file=#{File.join(previous_release, 'db.backup')} #{db['database']} --host=#{db['host']}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
task :update_gemfile, :roles => :app do
|
73
|
+
run "cat #{current_release}/Gemfile.linux >> #{current_release}/Gemfile"
|
74
|
+
end
|
75
|
+
|
76
|
+
set :use_sudo, false
|
77
|
+
after :deploy, 'deploy:cleanup'
|
78
|
+
before 'deploy:restart', 'deploy:sudo_migrate'
|
79
|
+
after 'deploy:update_code', :backup_database
|
80
|
+
before 'bundle:install', :update_gemfile
|
81
|
+
|
82
|
+
after 'deploy:assets:precompile' do
|
83
|
+
run "cd #{release_path} && bundle exec rake tmp:cache:clear RAILS_ENV=#{rails_env}"
|
84
|
+
run "cd #{release_path} && bundle exec rake assets:non_digested RAILS_ENV=#{rails_env}"
|
85
|
+
end
|
86
|
+
|
87
|
+
if use_whenever
|
88
|
+
set :whenever_command, "rvm use #{rvm_ruby_string} && bundle exec whenever"
|
89
|
+
set :whenever_environment, defer { stage }
|
90
|
+
require 'whenever/capistrano'
|
91
|
+
end
|
92
|
+
|
93
|
+
if use_sphinx
|
94
|
+
|
95
|
+
require 'thinking_sphinx/capistrano'
|
96
|
+
|
97
|
+
# Sphinx Recipes
|
98
|
+
namespace :thinking_sphinx do
|
99
|
+
|
100
|
+
def rake(*tasks)
|
101
|
+
rake = fetch(:rake, 'rake')
|
102
|
+
tasks.each do |t|
|
103
|
+
run "if [ -d #{release_path} ]; then cd #{release_path}; else cd #{current_path}; fi; rvmsudo -u www-data #{rake} RAILS_ENV=#{rails_env} #{t}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
desc 'Symlink Sphinx indexes'
|
108
|
+
task :symlink_indexes, roles: [:app] do
|
109
|
+
run "ln -nfs #{shared_path}/db/sphinx #{release_path}/db/sphinx"
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
# Sphinx Steps
|
115
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:stop'
|
116
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:index'
|
117
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:start'
|
118
|
+
after 'deploy:finalize_update', 'thinking_sphinx:symlink_indexes'
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
# Delayed job
|
123
|
+
if use_delayed_job
|
124
|
+
|
125
|
+
require 'delayed/recipes'
|
126
|
+
|
127
|
+
set(:delayed_job_command) { "rvmsudo -u www-data RAILS_ENV=#{fetch(:rails_env)} bundle exec bin/delayed_job" }
|
128
|
+
after 'deploy:stop', 'delayed_job:stop'
|
129
|
+
after 'deploy:start', 'delayed_job:start'
|
130
|
+
after 'deploy:restart', 'delayed_job:restart'
|
131
|
+
|
132
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Coalla
|
2
|
+
module HttpAuth
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
before_action do
|
7
|
+
if ::Rails.env.staging?
|
8
|
+
authenticate_or_request_with_http_basic do |username, password|
|
9
|
+
username == 'demo' && password == '1qaz3edc'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
ApplicationController.send(:include, Coalla::HttpAuth)
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: coalla-deploy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.10
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- coalla
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.18'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.18'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.3.5
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.5
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: net-ssh
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.7'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: net-scp
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.1'
|
97
|
+
description: Coalla deploy gem
|
98
|
+
email:
|
99
|
+
- dev@coalla.ru
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- .gitignore
|
105
|
+
- Gemfile
|
106
|
+
- Rakefile
|
107
|
+
- app/views/metric/_yandex_metrica.html.haml
|
108
|
+
- coalla-deploy.gemspec
|
109
|
+
- lib/coalla-deploy.rb
|
110
|
+
- lib/coalla-deploy/engine.rb
|
111
|
+
- lib/coalla-deploy/unicorn.rb
|
112
|
+
- lib/coalla-deploy/version.rb
|
113
|
+
- lib/generators/coalla/deploy/init/init_generator.rb
|
114
|
+
- server_setup.rb
|
115
|
+
- setup-server.sh
|
116
|
+
- templates/Capfile
|
117
|
+
- templates/Gemfile.linux
|
118
|
+
- templates/assets.rake
|
119
|
+
- templates/build-production.sh
|
120
|
+
- templates/build-staging.sh
|
121
|
+
- templates/deploy.rb
|
122
|
+
- templates/http_auth.rb
|
123
|
+
- templates/production.rb
|
124
|
+
- templates/staging.rb
|
125
|
+
- templates/unicorn.rb
|
126
|
+
homepage: http://coalla.ru
|
127
|
+
licenses: []
|
128
|
+
metadata: {}
|
129
|
+
post_install_message:
|
130
|
+
rdoc_options: []
|
131
|
+
require_paths:
|
132
|
+
- lib
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
requirements: []
|
144
|
+
rubyforge_project: coalla-deploy
|
145
|
+
rubygems_version: 2.4.3
|
146
|
+
signing_key:
|
147
|
+
specification_version: 4
|
148
|
+
summary: Coalla deploy gem
|
149
|
+
test_files: []
|