buildable 1.3.4

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
+ N2ViNGI3Yjc5MTAyZjExZDBlODhjMzU5ZGQ1YzY2ODMxZTFlYTk0Yg==
5
+ data.tar.gz: !binary |-
6
+ YzU0YWE5ZTg4M2E5NDc4NGQ4MDU4MjBkZGNmOWIxYzk1Mjg0N2M2Mg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OGQ1ODJjZjI2MzgxMDhjZTA0ZjJkMjI1MTA4ZGJlMjQyOTE1MWYyNTI5MzEx
10
+ MmFmZDY3MmQzMGIxNTk0NjY2ZDRkMDBhZmMyYjg1MjM5NjQ1OWFjNWRiYWQ2
11
+ NzEyYjFjNGY2NGMxMTJiZWIwNzM3ZGMzZjUxZWZmN2Y1OTcxZmI=
12
+ data.tar.gz: !binary |-
13
+ OGZiN2Q3ZGYxOWY0NTNhMzkzNGM4NTM0OGU4NDlhZDQzOGRmNThiZTVkOTJj
14
+ ZjlhMjJmYTZiMWM0ZjliZGUwMTJkMTQwYmMxZTkyMjJkMDk0MDliYWRjZTFj
15
+ NWQ2NGIxNWEyN2YwNzZmMDIzMTRmYzlkM2UyMmVlMDQzYmMxNzk=
data/.gitignore ADDED
@@ -0,0 +1,22 @@
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
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.9.3-p448
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in buildable.gemspec
4
+ gemspec
5
+
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # Buildable
2
+
3
+ _O Buildable é um framework criação de pacotes Debian (deb)._
4
+
5
+ Sempre que preciso criar um pacote Debian para fazer a distribuição de meus projetos passava basicamente pelos mesmo problemas, criar scripts para gerar o pacote no build, fazer o script de init, e por ai vai. E isto me motivou a criar um framework para facilitar este processo e poder dedicar meu tempo ao ~~código~~ :beer:.
6
+
7
+ Sei que muitos de voces estão pensando: _Mas peraí, eu uso ruby! não seria muito mais fácil criar uma gem?_
8
+ Sim criar gem é muito mais simples, se você estiver fazendo algo para rubistas utilizarem, quando você tem uma aplicação que é direcionada ao público em geral ela é muito melhor aceita se possuir um instalador em um formato conhecido (como o Debian) :relieved:
9
+
10
+ ## Como usar
11
+
12
+ Primeiramente adicione o *Buildable* no seu Gemfile
13
+
14
+ ```
15
+ gem 'buildable'
16
+ ```
17
+
18
+ Execute o bunlder para instalar a gem
19
+
20
+ ```shell
21
+ $ bundle install
22
+ ```
23
+
24
+ Agora basta criar os arquivos de configuração do seu projeto (este passo é feito apenas uma vez)
25
+
26
+ ```bash
27
+ $ buildable init
28
+ ```
29
+
30
+ Este comando criará os seguintes arquivos:
31
+
32
+ #TO BE CONTINUED
33
+
34
+
35
+ O Buildable pode ser utilizado de duas formas seu executável ou via rake (ideal para automatização do build),
36
+
37
+ # Dicas sujestões e agradecimentos eternos
38
+
39
+ :email: [ajfprates@gmail.com](mailto:ajfprates@gmail.com)
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/buildable ADDED
@@ -0,0 +1,17 @@
1
+ #!/bin/env ruby
2
+ require 'buildable'
3
+
4
+ case ARGV.join(' ')
5
+ when 'init'
6
+ Buildable.init
7
+ when 'build'
8
+ Buildable.build
9
+ when 'version'
10
+ Buildable.VERSION
11
+ else
12
+ puts %Q{Usage: buildable [option]
13
+ init\t\tCreate buildable structure
14
+ build\t\tGenerate debian package in ./pkg
15
+ version\tDisplay version
16
+ }
17
+ end
data/buildable.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'buildable/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "buildable"
8
+ spec.version = Buildable::VERSION
9
+ spec.authors = ["Alexandre Prates"]
10
+ spec.email = ["ajfprates@gmail.com"]
11
+ spec.summary = %q{Gem para criar pacotes (debian) para deploy de projetos ruby.}
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(spec)/})
17
+ spec.require_paths = ["lib", "lib/tasks", "lib/buildable"]
18
+
19
+ spec.add_runtime_dependency "rake"
20
+ spec.add_runtime_dependency "fpm", ">= 1.3.3"
21
+ spec.add_runtime_dependency "foreman", ">= 0.78.0"
22
+ spec.add_runtime_dependency "foreman-export-initscript"
23
+ spec.add_runtime_dependency "configureasy", ">= 1.0.0"
24
+ end
data/lib/buildable.rb ADDED
@@ -0,0 +1,63 @@
1
+ require 'bundler'
2
+ Bundler.require(:default)
3
+
4
+ module Buildable
5
+ require_relative 'core_ext/hash'
6
+ require_relative 'buildable/version'
7
+ require_relative 'buildable/shell'
8
+ require_relative 'buildable/file_maker'
9
+ require_relative 'buildable/recipe'
10
+ require_relative 'buildable/rake_helper'
11
+
12
+ include Configureasy
13
+ load_config '.buildable', as: 'config', path: '.'
14
+
15
+ BUILD_DIR = './.build'
16
+ BUILD_ROOT_DIR = './.build/root'
17
+ PACKAGE_DIR = './pkg'
18
+
19
+ module_function
20
+
21
+ def init
22
+ Recipe[:init]
23
+ end
24
+
25
+ def build
26
+ STDOUT.sync = true
27
+ check_configs
28
+ Recipe[:create_path]
29
+ Recipe[:copy_source]
30
+ Recipe[:vendor_gems]
31
+ Recipe[:make_init_script]
32
+ Recipe[:make_package]
33
+ Recipe[:remove_path]
34
+ end
35
+
36
+ def build_app_dir
37
+ File.join(BUILD_ROOT_DIR, Buildable.config.root_dir)
38
+ end
39
+
40
+ def upstart_folder
41
+ File.join(BUILD_ROOT_DIR, 'etc/init')
42
+ end
43
+
44
+ def initd_folder
45
+ File.join(BUILD_ROOT_DIR, 'etc/init.d')
46
+ end
47
+
48
+ def check_configs
49
+ return if File.exist?('.buildable.yml') && File.exist?('production.env') && File.exist?('Procfile')
50
+ puts "Missing config please run buildable init to create it."
51
+ exit 1
52
+ end
53
+
54
+ def files_to_pack
55
+ files_to_ignore = self.config.files_to_ignore + %w{. .. .build .buildable.yml vendor}
56
+ Dir.entries('.') - files_to_ignore
57
+ end
58
+
59
+ def foreman_templates
60
+ File.expand_path('../../templates/foreman', __FILE__)
61
+ end
62
+
63
+ end
@@ -0,0 +1,34 @@
1
+ require 'erb'
2
+
3
+ module Buildable::FileMaker
4
+ class << self
5
+
6
+ # create plain_text file with content
7
+ #
8
+ # plain_text('test.txt') { |content| content << "hi" }
9
+ # # => create test.txt file with "hi" inside
10
+ def plain_text(filename, options = {})
11
+ # check if exist and be overwrite
12
+ content = yield('')
13
+ File.open(filename, 'w') { |file| file.write content }
14
+ end
15
+
16
+ def template(name, location = './', options = {})
17
+ destination = File.join(location, name)
18
+ # check if exist and can overwrite
19
+
20
+ template = load_template(name)
21
+ raise "Template #{name} not found" unless template
22
+
23
+ builder = ERB.new(template)
24
+ File.open(destination, 'w') { |f| f.write builder.result }
25
+ end
26
+
27
+ private
28
+
29
+ def load_template(name)
30
+ filename = File.expand_path("../../../templates/#{name}.erb", __FILE__)
31
+ File.read(filename) if File.exist? filename
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ require 'rake'
2
+
3
+ module Buildable::RakeHelper
4
+ include Rake::DSL if defined? Rake::DSL
5
+ extend self
6
+
7
+ def install_tasks
8
+ namespace :buildable do
9
+ set_init_task
10
+ set_build_task
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def set_init_task
17
+ desc "Create package buildable structure"
18
+ task :init do
19
+ Buildable.init
20
+ end
21
+ end
22
+
23
+ def set_build_task
24
+ desc "Make debian (deb) package"
25
+ task :build do
26
+ Buildable.build
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ require 'buildable'
2
+
3
+ Buildable::RakeHelper.install_tasks
@@ -0,0 +1,18 @@
1
+ require 'fileutils'
2
+
3
+ module Buildable::Recipe
4
+ class << self
5
+ @@recipes = {}
6
+
7
+ def [](name)
8
+ @@recipes[name].call if @@recipes.has_key?(name)
9
+ end
10
+
11
+ def recipe(name, &block)
12
+ @@recipes[name] = block
13
+ end
14
+ end
15
+ end
16
+
17
+ dir = File.expand_path('../recipes/*.rb', __FILE__)
18
+ Dir[dir].each { |source| require source }
@@ -0,0 +1,80 @@
1
+ module Buildable::Recipe
2
+
3
+ recipe :create_path do
4
+ puts "* Preparing structure to build"
5
+ Buildable::Recipe[:clean_pkg] if Dir.exist? Buildable::PACKAGE_DIR
6
+ Buildable::Recipe[:remove_path] if Dir.exist? Buildable::BUILD_DIR
7
+ FileUtils.mkdir_p(Buildable.build_app_dir)
8
+ FileUtils.mkdir_p('./pkg')
9
+ end
10
+
11
+ recipe :copy_source do
12
+ Buildable.files_to_pack.each do |file|
13
+ puts "\tCopying #{file}"
14
+ FileUtils.cp_r file, File.join(Buildable.build_app_dir, file)
15
+ end
16
+ end
17
+
18
+ recipe :vendor_gems do
19
+ puts '* Fetching gems'
20
+ Bundler.with_clean_env do
21
+ Dir.chdir Buildable.build_app_dir do
22
+ Buildable::Shell.do 'bundle install --deployment --without development test'
23
+ raise "Can't fetching gems" unless Buildable::Shell.success?
24
+ end
25
+ end
26
+ end
27
+
28
+ recipe :make_init_script do
29
+ puts "* Generating init scripts"
30
+ params = {
31
+ '--user' => Buildable.config.app_user,
32
+ '--env' => 'production.env',
33
+ '--app' => Buildable.config.project_name.downcase,
34
+ '--log' => '/tmp',
35
+ '--template' => Buildable.foreman_templates,
36
+ '-f' => 'Procfile',
37
+ '-d' => Buildable.config.root_dir
38
+ }
39
+ Buildable::Shell.do "foreman export initscript #{Buildable.initd_folder}", params
40
+
41
+ raise "Can't generate init scripts" unless Buildable::Shell.success?
42
+ initscript = File.join Buildable.initd_folder, Buildable.config.project_name
43
+ FileUtils.chmod "+x", initscript
44
+ end
45
+
46
+ recipe :make_package do
47
+ puts "* Creating package"
48
+ version = Buildable::Shell.do_quiet %Q{git describe --abbrev=0 --match="[0-9]*\.[0-9]*\.[0-9]*"}
49
+ raise "Can't define build version, please check git describe" unless Buildable::Shell.success?
50
+
51
+ params = {
52
+ '-s' => 'dir',
53
+ '-t' => 'deb',
54
+ '--name' => "r7-#{Buildable.config.project_name.downcase}",
55
+ '--version' => version,
56
+ '--architecture' => 'all',
57
+ '--package' => './pkg',
58
+ '--prefix' => '/',
59
+ '--description' => Buildable.config.description.inspect,
60
+ '--force' => nil,
61
+ '-C' => "#{Buildable::BUILD_ROOT_DIR} ."
62
+ }
63
+
64
+ result = Buildable::Shell.do_quiet 'bundle exec fpm', params
65
+ raise "Can't create package, error:\n#{result}" unless Buildable::Shell.success?
66
+ package_name = result.match(/:path=>"\.\/pkg\/([^"]*)/)[1]
67
+ puts "\tPackage created #{package_name}"
68
+ end
69
+
70
+ recipe :remove_path do
71
+ puts "* Clean up build folder"
72
+ FileUtils.rm_rf Buildable::BUILD_DIR
73
+ end
74
+
75
+ recipe :clean_pkg do
76
+ puts "* Clean up pkg folder"
77
+ FileUtils.rm_rf Buildable::PACKAGE_DIR
78
+ end
79
+
80
+ end
@@ -0,0 +1,12 @@
1
+ module Buildable::Recipe
2
+ recipe :init do
3
+ puts "Creating .buildable.yml"
4
+ Buildable::FileMaker.template '.buildable.yml'
5
+ puts "Creating production.env"
6
+ Buildable::FileMaker.template 'production.env'
7
+ puts "Creating Procfile"
8
+ Buildable::FileMaker.template 'Procfile'
9
+
10
+ puts "Please edit all files above to setup your application"
11
+ end
12
+ end
@@ -0,0 +1,29 @@
1
+ require 'pty'
2
+
3
+ module Buildable::Shell
4
+ extend self
5
+
6
+ def success?
7
+ !!($? && $?.success?)
8
+ end
9
+
10
+ def do(command, params = {})
11
+ PTY.spawn(command_line(command, params)) do |r,w,pid|
12
+ r.each { |line| puts "\t#{line}" } rescue nil # prevents error when process ending
13
+ Process.wait(pid)
14
+ end
15
+ rescue PTY::ChildExited
16
+ true
17
+ end
18
+
19
+ def do_quiet(command, params = {})
20
+ %x{#{command_line(command, params)}}.chomp
21
+ end
22
+
23
+ private
24
+
25
+ def command_line(command, params)
26
+ "#{command} #{params.to_params} 2>&1"
27
+ end
28
+
29
+ end
@@ -0,0 +1,3 @@
1
+ module Buildable
2
+ VERSION = "1.3.4"
3
+ end
@@ -0,0 +1,11 @@
1
+ class Hash
2
+
3
+ # Generate params string based on hash content
4
+ # {'--param': 'value', '-a': nil, '--config': 'path/to/config'}.to_params
5
+ # # "--param value -a --config path/to/config"
6
+ def to_params
7
+ return '' if self.empty?
8
+ self.flatten.compact.join(' ')
9
+ end
10
+
11
+ end
@@ -0,0 +1,21 @@
1
+ project_name: awesome_app
2
+ description: Most awesome project in the world
3
+ app_user: application_user
4
+ root_dir: application_root_path
5
+ files_to_ignore:
6
+ - .bundle
7
+ - .git
8
+ - .gitignore
9
+ - .rspec
10
+ - coverage
11
+ - doc
12
+ - features
13
+ - Guardfile
14
+ - Procfile
15
+ - log
16
+ - pkg
17
+ - README
18
+ - README.md
19
+ - README.rdoc
20
+ - spec
21
+ - test
@@ -0,0 +1 @@
1
+ server: ruby -e 'puts "Edit Procfile to setup your application"'
@@ -0,0 +1,97 @@
1
+ #! /bin/sh
2
+ ### BEGIN INIT INFO
3
+ # Provides: <%= app %>
4
+ # Required-Start: $remote_fs $syslog
5
+ # Required-Stop: $remote_fs $syslog
6
+ # Default-Start: 2 3 4 5
7
+ # Default-Stop: 0 1 6
8
+ # Short-Description: Generated initscript for <%= app %>
9
+ # Description: This file starts <%= app %>. It should be placed in /etc/init.d
10
+ ### END INIT INFO
11
+
12
+ # Auto generated by Buildable
13
+
14
+ PATH=/sbin:/usr/sbin:/bin:/usr/bin
15
+ DESC="Runs <%= app %>"
16
+ NAME=<%= app %>
17
+ PIDDIR=/var/run/$NAME
18
+ SCRIPTNAME=/etc/init.d/$NAME
19
+ USERNAME=<%= user %>
20
+ <% engine.environment.each_pair do |var,env| %>export <%= var.upcase %>=<%= env %>
21
+ <% end %>
22
+
23
+ [ -r /lib/lsb/init-functions ] &&. /lib/lsb/init-functions
24
+
25
+ #
26
+ # Function that starts the service
27
+ #
28
+ do_start()
29
+ {
30
+ mkdir -p $PIDDIR
31
+ # START APPLICATION: <%= app %><% engine.each_process do |name, process| %>
32
+ # START PROCESS: <%= name %><% 1.upto(engine.formation[name]) do |num| %>
33
+ # START CONCURRENT: <%= num %>
34
+ # Start: <%= app %>.<%= name %>.<%= num %>
35
+ # Create $PIDDIR/<%= name %>.<%= num %>.pid
36
+ su -m $USERNAME -c 'cd <%= engine.root %>; <%= process.command %> & echo $!' > $PIDDIR/<%= name %>.<%= num %>.pid
37
+ <% end %><% end %>
38
+ }
39
+
40
+ #
41
+ # Function that stops the service
42
+ #
43
+ do_stop()
44
+ {
45
+ # STOP APPLICATION: <%= app %><% engine.each_process do |name, process| %>
46
+ # STOP PROCESS: <%= name %><% 1.upto(engine.formation[name]) do |num| %>
47
+ # STOP CONCURRENT: <%= num %>
48
+ # Stop: <%= app %>.<%= name %>.<%= num %>
49
+ kill `cat $PIDDIR/<%= name %>.<%= num %>.pid`
50
+ rm $PIDDIR/<%= name %>.<%= num %>.pid
51
+ <% end %><% end %>
52
+ rmdir $PIDDIR
53
+ }
54
+
55
+ case "$1" in
56
+ start)
57
+ log_daemon_msg "Starting $DESC" "$NAME"
58
+ do_start
59
+ case "$?" in
60
+ 0|1) log_end_msg 0 ;;
61
+ 2) log_end_msg 1 ;;
62
+ esac
63
+ ;;
64
+ stop)
65
+ log_daemon_msg "Stopping $DESC" "$NAME"
66
+ do_stop
67
+ case "$?" in
68
+ 0|1) log_end_msg 0 ;;
69
+ 2) log_end_msg 1 ;;
70
+ esac
71
+ ;;
72
+ status)
73
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
74
+ ;;
75
+ restart)
76
+ log_daemon_msg "Restarting $DESC" "$NAME"
77
+ do_stop
78
+ case "$?" in
79
+ 0|1)
80
+ do_start
81
+ case "$?" in
82
+ 0) log_end_msg 0 ;;
83
+ 1) log_end_msg 1 ;; # Old process is still running
84
+ *) log_end_msg 1 ;; # Failed to start
85
+ esac
86
+ ;;
87
+ *)
88
+ # Failed to stop
89
+ log_end_msg 1
90
+ ;;
91
+ esac
92
+ ;;
93
+ *)
94
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
95
+ exit 3
96
+ ;;
97
+ esac
@@ -0,0 +1,3 @@
1
+ RUBY_ENV=production
2
+ PATH=/opt/rbenv/shims:/opt/rbenv/bin:$PATH
3
+ RBENV_ROOT=/opt/rbenv
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: buildable
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.4
5
+ platform: ruby
6
+ authors:
7
+ - Alexandre Prates
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fpm
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: foreman
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.78.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.78.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: foreman-export-initscript
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: configureasy
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.0
83
+ description:
84
+ email:
85
+ - ajfprates@gmail.com
86
+ executables:
87
+ - buildable
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - .ruby-version
93
+ - Gemfile
94
+ - README.md
95
+ - Rakefile
96
+ - bin/buildable
97
+ - buildable.gemspec
98
+ - lib/buildable.rb
99
+ - lib/buildable/file_maker.rb
100
+ - lib/buildable/rake_helper.rb
101
+ - lib/buildable/rake_task.rb
102
+ - lib/buildable/recipe.rb
103
+ - lib/buildable/recipes/build.rb
104
+ - lib/buildable/recipes/init.rb
105
+ - lib/buildable/shell.rb
106
+ - lib/buildable/version.rb
107
+ - lib/core_ext/hash.rb
108
+ - templates/.buildable.yml.erb
109
+ - templates/Procfile.erb
110
+ - templates/foreman/master.erb
111
+ - templates/production.env.erb
112
+ homepage:
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ - lib/tasks
121
+ - lib/buildable
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.4.8
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: Gem para criar pacotes (debian) para deploy de projetos ruby.
138
+ test_files: []