coalla-deploy 0.1.11.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +11 -0
- data/Gemfile +4 -0
- data/Rakefile +5 -0
- data/app/views/metric/_yandex_metrica.html.haml +15 -0
- data/coalla-deploy.gemspec +27 -0
- data/lib/coalla-deploy.rb +3 -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/generators/coalla/deploy/init/init_generator.rb +52 -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 +133 -0
- data/templates/environments/staging.rb +84 -0
- data/templates/http_auth.rb +20 -0
- data/templates/production.rb +4 -0
- data/templates/production/robots.txt +1 -0
- data/templates/staging.rb +4 -0
- data/templates/staging/robots.txt +1 -0
- data/templates/unicorn.rb +5 -0
- metadata +166 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -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,52 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module Coalla
|
4
|
+
|
5
|
+
module Deploy
|
6
|
+
|
7
|
+
module Generators
|
8
|
+
|
9
|
+
class InitGenerator < ::Rails::Generators::NamedBase
|
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
|
+
copy_file 'environments/staging.rb', 'config/environments/staging.rb'
|
25
|
+
copy_file 'production/robots.txt', 'config/deploy/production/robots.txt'
|
26
|
+
copy_file 'staging/robots.txt', 'config/deploy/staging/robots.txt'
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure_staging
|
30
|
+
app_name = name.underscore
|
31
|
+
|
32
|
+
gsub_file 'config/environments/staging.rb', '# Configure mailer' do |match|
|
33
|
+
c = <<-CONFIG
|
34
|
+
|
35
|
+
config.action_mailer.default_url_options = {host: '#{app_name}.coalla.ru'}
|
36
|
+
Rails.application.config.middleware.use ExceptionNotification::Rack,
|
37
|
+
:email => {
|
38
|
+
:email_prefix => "ERROR: ",
|
39
|
+
:sender_address => %Q{"#{app_name} notifier [staging]" <no-reply@#{app_name}.coalla.ru>},
|
40
|
+
:exception_recipients => %w{dev@coalla.ru}
|
41
|
+
}
|
42
|
+
CONFIG
|
43
|
+
|
44
|
+
match << c
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
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,133 @@
|
|
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
|
+
set :shared_children, fetch(:shared_children) + ['tmp/cache']
|
17
|
+
|
18
|
+
# RVM configuration
|
19
|
+
require 'rvm/capistrano'
|
20
|
+
set :rvm_type, :system
|
21
|
+
set :rvm_ruby_string, '2.0.0'
|
22
|
+
|
23
|
+
default_run_options[:pty] = true
|
24
|
+
set :scm, :git
|
25
|
+
set :deploy_via, :copy
|
26
|
+
set :keep_releases, 3
|
27
|
+
|
28
|
+
desc 'Make symlink'
|
29
|
+
task :make_symlink, :roles => :app do
|
30
|
+
run "ln -nfs #{shared_path}/system/uploads #{release_path}/public/uploads"
|
31
|
+
end
|
32
|
+
|
33
|
+
desc 'Make a symlink to robots.txt according to rails_env'
|
34
|
+
task :symlink_robots_txt, :roles => :app do
|
35
|
+
run "ln -nfs #{release_path}/config/deploy/#{rails_env}/robots.txt #{release_path}/public/robots.txt"
|
36
|
+
end
|
37
|
+
|
38
|
+
after 'deploy:create_symlink', :make_symlink
|
39
|
+
|
40
|
+
# Removed 'deployment' flag, cause it needs Gemfile.lock exists in repository
|
41
|
+
# This can't be done due to Windows problems with nokogiri, ImageMagick etc
|
42
|
+
set :bundle_flags, '--quiet'
|
43
|
+
require 'bundler/capistrano'
|
44
|
+
|
45
|
+
# Unicorn recipe
|
46
|
+
namespace :deploy do
|
47
|
+
task :restart, roles: :app, except: {no_release: true} do
|
48
|
+
run "sudo #{unicorn_service} upgrade"
|
49
|
+
end
|
50
|
+
|
51
|
+
task :sudo_migrate do
|
52
|
+
run("cd #{deploy_to}/current && rvmsudo -u www-data bundle exec rake db:migrate RAILS_ENV=#{rails_env}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Sitemap copy
|
57
|
+
after 'deploy:update_code', 'deploy:copy_old_sitemap'
|
58
|
+
after 'deploy:update_code', :symlink_robots_txt
|
59
|
+
namespace :deploy do
|
60
|
+
task :copy_old_sitemap do
|
61
|
+
run "if [ -e #{previous_release}/public/sitemap.xml.gz ]; then cp #{previous_release}/public/sitemap* #{current_release}/public/; fi"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Backup database
|
66
|
+
require 'yaml'
|
67
|
+
task :backup_database, :roles => :db do
|
68
|
+
if previous_release
|
69
|
+
db = YAML::load(ERB.new(IO.read(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'database.yml'))).result)["#{rails_env}"]
|
70
|
+
run "export PGPASSWORD='#{db['password']}' && pg_dump --username=#{db['username']} --format=custom --file=#{File.join(previous_release, 'db.backup')} #{db['database']} --host=#{db['host']}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
task :update_gemfile, :roles => :app do
|
75
|
+
run "cat #{current_release}/Gemfile.linux >> #{current_release}/Gemfile"
|
76
|
+
end
|
77
|
+
|
78
|
+
set :use_sudo, false
|
79
|
+
after :deploy, 'deploy:cleanup'
|
80
|
+
before 'deploy:restart', 'deploy:sudo_migrate'
|
81
|
+
after 'deploy:update_code', :backup_database
|
82
|
+
before 'bundle:install', :update_gemfile
|
83
|
+
|
84
|
+
after 'deploy:assets:precompile' do
|
85
|
+
run "cd #{release_path} && bundle exec rake assets:non_digested RAILS_ENV=#{rails_env}"
|
86
|
+
end
|
87
|
+
|
88
|
+
if use_whenever
|
89
|
+
set :whenever_command, "rvm use #{rvm_ruby_string} && bundle exec whenever"
|
90
|
+
set :whenever_environment, defer { stage }
|
91
|
+
require 'whenever/capistrano'
|
92
|
+
end
|
93
|
+
|
94
|
+
if use_sphinx
|
95
|
+
|
96
|
+
require 'thinking_sphinx/capistrano'
|
97
|
+
|
98
|
+
# Sphinx Recipes
|
99
|
+
namespace :thinking_sphinx do
|
100
|
+
|
101
|
+
def rake(*tasks)
|
102
|
+
rake = fetch(:rake, 'rake')
|
103
|
+
tasks.each do |t|
|
104
|
+
run "if [ -d #{release_path} ]; then cd #{release_path}; else cd #{current_path}; fi; rvmsudo -u www-data #{rake} RAILS_ENV=#{rails_env} #{t}"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
desc 'Symlink Sphinx indexes'
|
109
|
+
task :symlink_indexes, roles: [:app] do
|
110
|
+
run "ln -nfs #{shared_path}/db/sphinx #{release_path}/db/sphinx"
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
# Sphinx Steps
|
116
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:stop'
|
117
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:index'
|
118
|
+
after 'deploy:sudo_migrate', 'thinking_sphinx:start'
|
119
|
+
after 'deploy:finalize_update', 'thinking_sphinx:symlink_indexes'
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
# Delayed job
|
124
|
+
if use_delayed_job
|
125
|
+
|
126
|
+
require 'delayed/recipes'
|
127
|
+
|
128
|
+
set(:delayed_job_command) { "rvmsudo -u www-data RAILS_ENV=#{fetch(:rails_env)} bundle exec bin/delayed_job" }
|
129
|
+
after 'deploy:stop', 'delayed_job:stop'
|
130
|
+
after 'deploy:start', 'delayed_job:start'
|
131
|
+
after 'deploy:restart', 'delayed_job:restart'
|
132
|
+
|
133
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# Code is not reloaded between requests.
|
5
|
+
config.cache_classes = true
|
6
|
+
|
7
|
+
# Eager load code on boot. This eager loads most of Rails and
|
8
|
+
# your application in memory, allowing both threaded web servers
|
9
|
+
# and those relying on copy on write to perform better.
|
10
|
+
# Rake tasks automatically ignore this option for performance.
|
11
|
+
config.eager_load = true
|
12
|
+
|
13
|
+
# Full error reports are disabled and caching is turned on.
|
14
|
+
config.consider_all_requests_local = false
|
15
|
+
config.action_controller.perform_caching = true
|
16
|
+
|
17
|
+
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
18
|
+
# Add `rack-cache` to your Gemfile before enabling this.
|
19
|
+
# For large-scale production use, consider using a caching reverse proxy like
|
20
|
+
# NGINX, varnish or squid.
|
21
|
+
# config.action_dispatch.rack_cache = true
|
22
|
+
|
23
|
+
# Disable serving static files from the `/public` folder by default since
|
24
|
+
# Apache or NGINX already handles this.
|
25
|
+
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
26
|
+
|
27
|
+
# Compress JavaScripts and CSS.
|
28
|
+
config.assets.js_compressor = :uglifier
|
29
|
+
# config.assets.css_compressor = :sass
|
30
|
+
|
31
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
32
|
+
config.assets.compile = false
|
33
|
+
|
34
|
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
35
|
+
# yet still be able to expire them through the digest params.
|
36
|
+
config.assets.digest = true
|
37
|
+
|
38
|
+
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
39
|
+
|
40
|
+
# Specifies the header that your server uses for sending files.
|
41
|
+
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
42
|
+
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
43
|
+
|
44
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
45
|
+
# config.force_ssl = true
|
46
|
+
|
47
|
+
# Use the lowest log level to ensure availability of diagnostic information
|
48
|
+
# when problems arise.
|
49
|
+
config.log_level = :debug
|
50
|
+
|
51
|
+
# Prepend all log lines with the following tags.
|
52
|
+
# config.log_tags = [ :subdomain, :uuid ]
|
53
|
+
|
54
|
+
# Use a different logger for distributed setups.
|
55
|
+
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
56
|
+
|
57
|
+
# Use a different cache store in production.
|
58
|
+
# config.cache_store = :mem_cache_store
|
59
|
+
|
60
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
61
|
+
config.action_mailer.delivery_method = :sendmail
|
62
|
+
config.action_mailer.sendmail_settings = {
|
63
|
+
:location => '/usr/sbin/sendmail',
|
64
|
+
:arguments => '-i'
|
65
|
+
}
|
66
|
+
|
67
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
68
|
+
# the I18n.default_locale when a translation cannot be found).
|
69
|
+
config.i18n.fallbacks = true
|
70
|
+
|
71
|
+
# Send deprecation notices to registered listeners.
|
72
|
+
config.active_support.deprecation = :notify
|
73
|
+
|
74
|
+
# Use default logging formatter so that PID and timestamp are not suppressed.
|
75
|
+
config.log_formatter = ::Logger::Formatter.new
|
76
|
+
|
77
|
+
# Do not dump schema after migrations.
|
78
|
+
config.active_record.dump_schema_after_migration = false
|
79
|
+
|
80
|
+
config.action_mailer.perform_deliveries = true
|
81
|
+
config.action_mailer.raise_delivery_errors = true
|
82
|
+
|
83
|
+
# Configure mailer
|
84
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Coalla
|
2
|
+
module HttpAuth
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
before_action :http_authenticate
|
7
|
+
|
8
|
+
def http_authenticate
|
9
|
+
if ::Rails.env.staging?
|
10
|
+
authenticate_or_request_with_http_basic do |username, password|
|
11
|
+
username == 'demo' && password == '1qaz3edc'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
ApplicationController.send(:include, Coalla::HttpAuth)
|
@@ -0,0 +1 @@
|
|
1
|
+
Allow: /
|
@@ -0,0 +1 @@
|
|
1
|
+
Disallow: /
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: coalla-deploy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.11.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- coalla
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-03-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: railties
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '4.0'
|
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: '4.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: thor
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.18'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.18'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.3.5
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.3.5
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '4.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '4.0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: net-ssh
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.7'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.7'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: net-scp
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '1.1'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.1'
|
110
|
+
description: Coalla deploy gem
|
111
|
+
email:
|
112
|
+
- dev@coalla.ru
|
113
|
+
executables: []
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- .gitignore
|
118
|
+
- Gemfile
|
119
|
+
- Rakefile
|
120
|
+
- app/views/metric/_yandex_metrica.html.haml
|
121
|
+
- coalla-deploy.gemspec
|
122
|
+
- lib/coalla-deploy.rb
|
123
|
+
- lib/coalla-deploy/engine.rb
|
124
|
+
- lib/coalla-deploy/unicorn.rb
|
125
|
+
- lib/coalla-deploy/version.rb
|
126
|
+
- lib/generators/coalla/deploy/init/init_generator.rb
|
127
|
+
- server_setup.rb
|
128
|
+
- setup-server.sh
|
129
|
+
- templates/Capfile
|
130
|
+
- templates/Gemfile.linux
|
131
|
+
- templates/assets.rake
|
132
|
+
- templates/build-production.sh
|
133
|
+
- templates/build-staging.sh
|
134
|
+
- templates/deploy.rb
|
135
|
+
- templates/environments/staging.rb
|
136
|
+
- templates/http_auth.rb
|
137
|
+
- templates/production.rb
|
138
|
+
- templates/production/robots.txt
|
139
|
+
- templates/staging.rb
|
140
|
+
- templates/staging/robots.txt
|
141
|
+
- templates/unicorn.rb
|
142
|
+
homepage: http://coalla.ru
|
143
|
+
licenses: []
|
144
|
+
post_install_message:
|
145
|
+
rdoc_options: []
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
requirements: []
|
161
|
+
rubyforge_project: coalla-deploy
|
162
|
+
rubygems_version: 1.8.25
|
163
|
+
signing_key:
|
164
|
+
specification_version: 3
|
165
|
+
summary: Coalla deploy gem
|
166
|
+
test_files: []
|