coalla-deploy 0.1.11.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ .idea
2
+ .bundle
3
+ db/*.sqlite3
4
+ log/*.log
5
+ tmp/
6
+ public/uploads/
7
+ Gemfile.lock
8
+ *.swp
9
+ .DS_Store
10
+ *.gem
11
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in coalla-deploy.gemspec
4
+ gemspec
@@ -0,0 +1,5 @@
1
+ require "bundler/gem_tasks"
2
+ require 'net/ssh'
3
+ require 'net/scp'
4
+ require 'fileutils'
5
+
@@ -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,3 @@
1
+ require "coalla-deploy/version"
2
+ require "coalla-deploy/engine"
3
+
@@ -0,0 +1,10 @@
1
+ module Coalla
2
+
3
+ module Rails
4
+
5
+ class Engine < ::Rails::Engine
6
+
7
+ end
8
+ end
9
+ end
10
+
@@ -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,5 @@
1
+ module Coalla
2
+ module Deploy
3
+ VERSION = '0.1.11.3'
4
+ end
5
+ 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
@@ -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
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ source /etc/profile.d/rvm.sh
3
+ rvm 1.9.3
4
+ sprinkle -c -v -t -s server_setup.rb
@@ -0,0 +1,4 @@
1
+ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
+ Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
+
4
+ load 'config/deploy' # remove this line to skip loading any of the default tasks
@@ -0,0 +1,4 @@
1
+ #do not remove this comment!
2
+ group :production, :staging do
3
+ gem 'unicorn', '4.8.3'
4
+ end
@@ -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
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ source "/usr/local/rvm/scripts/rvm"
3
+ rvm use 1.9.3
4
+ cap production deploy rails_env=production
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ source "/usr/local/rvm/scripts/rvm"
3
+ rvm use 1.9.3
4
+ cap staging deploy RAILS_ENV=staging
@@ -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,4 @@
1
+ server '5.9.118.111', :app, :web, :db, primary: true
2
+ set :application, 'coalla.ru'
3
+ set :rails_env, :production
4
+ set :branch, 'master'
@@ -0,0 +1 @@
1
+ Allow: /
@@ -0,0 +1,4 @@
1
+ server '5.9.118.111', :app, :web, :db, primary: true
2
+ set :application, 'test.coalla.ru'
3
+ set :rails_env, :staging
4
+ set :branch, 'development'
@@ -0,0 +1 @@
1
+ Disallow: /
@@ -0,0 +1,5 @@
1
+ require "coalla-deploy/unicorn"
2
+ application_name = (ENV['RAILS_ENV'] == 'production') ? 'coalla.ru' : 'test.coalla.ru'
3
+ Coalla::Unicorn.init(self, deploy_to: "/var/www/virtual-hosts/#{application_name}",
4
+ timeout: 30,
5
+ worker_processes: 1)
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: []