coalla-deploy 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -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
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,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.10'
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ require "coalla-deploy/version"
2
+ require "coalla-deploy/engine"
3
+
@@ -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
@@ -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
data/templates/Capfile ADDED
@@ -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,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)
@@ -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,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,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,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: []