Thin_Upstart 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+
6
+ coverage
7
+ rdoc
8
+ .yardoc
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ source "http://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in Bob.gemspec
6
+ gemspec
data/README.md ADDED
@@ -0,0 +1,104 @@
1
+
2
+ Thin\_Upstart
3
+ ================
4
+
5
+ This is an alternative to [Foreman + Upstart](http://michaelvanrooijen.com/articles/2011/06/08-managing-and-monitoring-your-ruby-application-with-foreman-and-upstart/)
6
+ generating your Upstart conf files. It ignores your Procfile,
7
+ and insteads uses your Thin .yml config file. The following files
8
+ are generated (assuming you call your group of Thin apps 'web-app'):
9
+
10
+ # App dirs
11
+ |- app1
12
+ |- app2
13
+
14
+ # Template dir
15
+ |- {{name}}.conf
16
+ |- {{name}}-{{app}}.conf
17
+
18
+ # Files generated
19
+ |- output-dir
20
+ |- web-apps.conf
21
+ |- web-apps-app1.conf
22
+ |- web-apps-app2.conf
23
+ |- ...
24
+
25
+
26
+ Installation
27
+ ------------
28
+
29
+ gem install Thin_Upstart
30
+
31
+ Usage: Ruby
32
+ ------
33
+
34
+ require "Thin_Upstart"
35
+
36
+ Thin_Upstart { |o|
37
+ o.name "web-apps"
38
+ o.apps "./apps"
39
+ o.templates "./templates/*.conf" # file glob
40
+ o.output "./upstart"
41
+ o.yml "config/thin.yml"
42
+ }
43
+
44
+ If you want to delete files generated by Thin\_Upstart, use:
45
+
46
+ Thin_Upstart.trash "my/conf/dir"
47
+
48
+ All files that end in ".conf" are deleted if they contain the following string:
49
+
50
+ # Generated by Thin_Upstart
51
+
52
+ Usage: Shell
53
+ ------
54
+
55
+ Thin_Upstart
56
+ --name web-apps
57
+ --apps ./apps
58
+ --templates ./templates
59
+ --yml config/thin.yml
60
+ --output ./output
61
+ --trash my/conf/dir # When used, all other options are ignored.
62
+ --help
63
+
64
+ *Note:* Be sure to use quotation marks when using file globs:
65
+
66
+ Thin_Upstart --templates "template/*.conf"
67
+ Thin_Upstart --yml "config/*.yml"
68
+
69
+ Usage: Mustache Template
70
+ -----
71
+ In your Mustache templates, you have access to the following values:
72
+
73
+ * *name:* Name of app group: e.g. My-Web-Apps
74
+ * *apps\_dir:* Full path to directory of apps.
75
+ * *app:* Name of current app: e.g. Blog
76
+ * *app\_path:* Full path to app.
77
+ * *yml:* Relative path from current app directory to .yml file
78
+ * *yml\_path:* Full path to app directory.
79
+
80
+ You can use Mustache values in the file names of the templates.
81
+ For example:
82
+
83
+ * my/template/dir/*{{name}}*.conf
84
+ * my/template/dir/*{{name}}*-*{{app}}*.conf
85
+
86
+ The files are generated are:
87
+
88
+ * my/template/dir/My-Apps.conf
89
+ * my/template/dir/My-Apps-Hi.conf
90
+
91
+ Run Tests
92
+ ---------
93
+
94
+ git clone git@github.com:da99/Thin_Upstart.git
95
+ cd Thin_Upstart
96
+ bundle update
97
+ bundle exec bacon spec/main.rb
98
+
99
+ "I hate writing."
100
+ -----------------------------
101
+
102
+ If you know of existing software that makes the above redundant,
103
+ please tell me. The last thing I want to do is maintain code.
104
+
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/gem_tasks"
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $:.push File.expand_path("../lib", __FILE__)
4
+ require "Thin_Upstart/version"
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "Thin_Upstart"
8
+ s.version = Thin_Upstart::VERSION
9
+ s.authors = ["da99"]
10
+ s.email = ["i-hate-spam-45671204@mailinator.com"]
11
+ s.homepage = "https://github.com/da99/Thin_Upstart"
12
+ s.summary = %q{Generate Upstart conf files for your Thin apps.}
13
+ s.description = %q{
14
+ Generates Upstart conf files for your Thin apps.
15
+ Uses Mustache templates for customization.
16
+ }
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_development_dependency 'bacon'
24
+ s.add_development_dependency 'rake'
25
+ s.add_development_dependency 'Bacon_Colored'
26
+ s.add_development_dependency 'pry'
27
+
28
+ # Specify any dependencies here; for example:
29
+ s.add_runtime_dependency 'mustache'
30
+ s.add_runtime_dependency 'trollop'
31
+ s.add_runtime_dependency 'Exit_Zero'
32
+ end
data/bin/Thin_Upstart ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- ruby -*-
3
+ #
4
+
5
+
6
+ require "trollop"
7
+ require "Thin_Upstart"
8
+
9
+ h = Hash[
10
+ :name => "Name for Upstart service.",
11
+ :yml => ".yml config file path relative to app dir.: \"config/thin.yml\"",
12
+ :apps => "Path to dir containing apps.",
13
+ :templates => "File glob for templates: e.g. \"./templates/*.conf\"",
14
+ :output => "Output directory.",
15
+ :trash => "Dir to trash. All other arguments are ignored."
16
+ ]
17
+
18
+ opts = Trollop::options do
19
+ h.each { |k,v|
20
+ opt k, v, :type=>String
21
+ }
22
+ end
23
+
24
+ if opts[:trash_given]
25
+ files = Thin_Upstart.trash opts[:trash]
26
+ files.each { |f|
27
+ puts "deleted: #{f}"
28
+ }
29
+ else
30
+ files = Thin_Upstart { |o|
31
+ h.each { |k, desc|
32
+ o.send(k, opts[k]) if opts[k]
33
+ }
34
+ }
35
+ files.each { |f|
36
+ puts "created: #{f}"
37
+ }
38
+ end
@@ -0,0 +1,3 @@
1
+ class Thin_Upstart
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,127 @@
1
+ require 'Thin_Upstart/version'
2
+ require 'Exit_Zero'
3
+ require 'mustache'
4
+
5
+ def Thin_Upstart
6
+ o = Thin_Upstart.new
7
+ yield o
8
+ o.write
9
+ end
10
+
11
+ class Thin_Upstart
12
+
13
+ module Class_Methods
14
+
15
+ def trash dir
16
+ cmd = `which trash`.strip.empty? || File.directory?("/tmp/Thin_Upstart") ? "rm" : "trash"
17
+ files = []
18
+ Dir.glob(File.join(dir, "*.conf")).each { |file|
19
+ next unless File.read(file)["# Generated by Thin_Upstart"]
20
+ files << file
21
+ Exit_Zero "#{cmd} #{file}"
22
+ }
23
+
24
+ files.sort
25
+ end
26
+
27
+ end # === Class_Methods
28
+
29
+ extend Class_Methods
30
+
31
+ def initialize
32
+ name "My-Apps"
33
+ apps "./apps"
34
+ templates "./templates/*.conf"
35
+ output "./upstart"
36
+ yml "thin.yml"
37
+ yield(self) if block_given?
38
+ end
39
+
40
+ def remove_last_slash h
41
+ new_h = Hash[]
42
+ h.each { |k, v|
43
+ new_h[k] = v.sub(%r!\//Z!, '')
44
+ }
45
+ end
46
+
47
+ def write
48
+ app_list = []
49
+ dirs = Dir.glob(File.join apps, "/*")
50
+
51
+ final = []
52
+
53
+ tmpls = Dir.glob(templates)
54
+ raise ArgumentError, "No templates found in: #{templates}" if tmpls.empty?
55
+
56
+ dirs.each { |raw_app|
57
+ app = File.basename(raw_app)
58
+ app_path = File.expand_path(raw_app)
59
+
60
+
61
+ yml_path = Dir.glob(File.join app_path, yml).first
62
+ next unless yml_path
63
+ app_list << app
64
+
65
+ yml = yml_path.sub( File.join(app_path, '/'), '')
66
+
67
+ vals = remove_last_slash Hash[
68
+ :name => name,
69
+ :app => app,
70
+ :app_path => app_path,
71
+ :yml => yml,
72
+ :yml_path => yml_path,
73
+ :apps_dir => File.expand_path(apps)
74
+ ]
75
+
76
+ tmpls.each { |file|
77
+ temp_path = Mustache.render(file, vals)
78
+ file_name = File.basename(temp_path)
79
+ final_path= File.join(output, file_name)
80
+ tmpl_content = "# Generated by Thin_Upstart (Ruby gem)\n" + File.read(file)
81
+ content = Mustache.render(tmpl_content, vals)
82
+
83
+ File.write( final_path, content )
84
+ final << final_path
85
+ }
86
+
87
+ }
88
+
89
+ raise(ArgumentError, "No apps found in: #{apps}") if app_list.empty?
90
+
91
+ final.uniq.sort
92
+ end
93
+
94
+ def set_or_get attr, val = :RETURN
95
+ if val == :RETURN
96
+ instance_variable_get(:"@#{attr}")
97
+ else
98
+ instance_variable_set(:"@#{attr}", val)
99
+ end
100
+ end
101
+
102
+ %w{ name yml }.each { |attr|
103
+
104
+ eval %~
105
+ def #{attr} *args
106
+ set_or_get :#{attr}, *args
107
+ end
108
+ ~
109
+
110
+ }
111
+
112
+ %w{ apps templates output }.each { |attr|
113
+
114
+ eval %~
115
+ def #{attr} val = :RETURN
116
+ if val == :RETURN
117
+ set_or_get :#{attr}
118
+ else
119
+ set_or_get :#{attr}, File.expand_path(val)
120
+ end
121
+ end
122
+ ~
123
+
124
+ }
125
+
126
+
127
+ end # === class Thin_Upstart
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # sudo -u da01 bash -lc "cd ~ && pwd && source ~/MyLife/prefs/.bashrc && echo \$PATH"
4
+
5
+ echo $PATH
6
+ export PATH=$( sudo -u da01 bash -lc "echo \$PATH" )
7
+ echo $PATH
8
+
9
+
10
+ # source /home/da01/.bashrc
11
+ # echo $PATH
File without changes
data/spec/helper.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.print e.message, "\n"
7
+ $stderr.print "Run `bundle install` to install missing gems\n"
8
+ exit e.status_code
9
+ end
10
+ require 'bacon'
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+
15
+ Bacon.summary_on_exit
data/spec/main.rb ADDED
@@ -0,0 +1,96 @@
1
+
2
+ require File.expand_path('spec/helper')
3
+ require 'Thin_Upstart'
4
+ require 'Bacon_Colored'
5
+ require 'pry'
6
+ require 'Exit_Zero'
7
+
8
+ D = "/tmp/Thin_Upstart"
9
+
10
+ def Multi_0 str
11
+ str.strip.split("\n").each { |o|
12
+ next if o.strip.empty?
13
+ Exit_Zero o
14
+ }
15
+ end
16
+
17
+ def recreate
18
+ Multi_0 %@
19
+ rm -rf #{D}
20
+ mkdir #{D}
21
+
22
+ mkdir #{D}/upstart
23
+ mkdir #{D}/templates
24
+
25
+ mkdir -p #{D}/apps/Hi
26
+ mkdir -p #{D}/apps/Hi/config
27
+ touch #{D}/apps/Hi/thin.yml
28
+ touch #{D}/apps/Hi/config/my.yml
29
+
30
+
31
+ mkdir -p #{D}/apps/Hello
32
+ mkdir -p #{D}/apps/Hello/config
33
+ touch #{D}/apps/Hello/config/my.yml
34
+ touch #{D}/apps/Hello/thin.yml
35
+
36
+ mkdir -p #{D}/templates
37
+ cp -r spec/templates #{D}/
38
+ @
39
+ end
40
+
41
+ recreate
42
+
43
+ def reset
44
+ Multi_0 %!
45
+ rm -rf #{D}/upstart
46
+ mkdir #{D}/upstart
47
+ !
48
+ end
49
+
50
+ def chdir
51
+ Dir.chdir(D) { yield }
52
+ end
53
+
54
+ def bin args
55
+ chdir {
56
+ Exit_Zero "Thin_Upstart #{args}"
57
+ }
58
+ end
59
+
60
+ module Bacon
61
+ class Context
62
+
63
+ def should_mustache name, val, file = nil
64
+ file ||= "upstart/#{@name}-Hi.conf"
65
+ target = %r!#{name}: #{val}$!
66
+ File.read(file)[target].should.match target
67
+ end
68
+
69
+ def generate name
70
+ chdir {
71
+ @name = name
72
+ generate!(name) unless File.file?("upstart/#{@name}.conf")
73
+ }
74
+ end
75
+
76
+ def generate! name
77
+ @name = name
78
+ chdir {
79
+ reset
80
+ Thin_Upstart { |o| o.name @name }
81
+ }
82
+ end
83
+
84
+
85
+
86
+ end # === Context
87
+ end # === Bacon
88
+
89
+ # ======== Include the tests.
90
+ if ARGV.size > 1 && ARGV[1, ARGV.size - 1].detect { |a| File.exists?(a) }
91
+ # Do nothing. Bacon grabs the file.
92
+ else
93
+ Dir.glob('spec/tests/*.rb').each { |file|
94
+ require File.expand_path(file.sub('.rb', '')) if File.file?(file)
95
+ }
96
+ end
@@ -0,0 +1,8 @@
1
+ # FILE: {{name}}-{{app}}.conf
2
+
3
+ name: {{name}}
4
+ app: {{app}}
5
+ app_path: {{app_path}}
6
+ yml: {{yml}}
7
+ yml_path: {{yml_path}}
8
+ apps_dir: {{apps_dir}}
@@ -0,0 +1,10 @@
1
+ # FILE: {{name}}.conf
2
+
3
+ name: {{name}}
4
+ app: {{app}}
5
+ app_path: {{app_path}}
6
+ yml: {{yml}}
7
+ yml_path: {{yml_path}}
8
+ apps_dir: {{apps_dir}}
9
+
10
+
data/spec/tests/bin.rb ADDED
@@ -0,0 +1,84 @@
1
+
2
+ bins = Dir.glob("bin/*")
3
+
4
+ describe "permissions of bin/" do
5
+ bins.each { |file|
6
+ it "should chmod 755 for: #{file}" do
7
+ `stat -c %a #{file}`.strip
8
+ .should.be == "755"
9
+ end
10
+ }
11
+ end # === permissions of bin/
12
+
13
+ describe "bin: Thin_Upstart" do
14
+
15
+ before {
16
+ chdir {
17
+ reset
18
+ `rm -r new-apps 2>&1`
19
+ `rm -r new-templates 2>&1`
20
+ `rm -r new-upstart 2>&1`
21
+ }
22
+ }
23
+
24
+ it "accepts --name" do
25
+ chdir {
26
+ bin "--name MINE"
27
+ should_mustache "name", "MINE", "upstart/MINE.conf"
28
+ }
29
+ end
30
+
31
+ it "accepts --yml" do
32
+ chdir {
33
+ bin "--yml config/my.yml"
34
+ should_mustache "yml", "config/my.yml", "upstart/My-Apps-Hi.conf"
35
+ }
36
+ end
37
+
38
+ it "accepts --apps" do
39
+ chdir {
40
+ Exit_Zero "cp -r apps new-apps"
41
+ bin "--apps new-apps"
42
+ should_mustache "apps_dir", File.expand_path("new-apps"), "upstart/My-Apps-Hi.conf"
43
+ }
44
+ end
45
+
46
+ it "accepts --templates" do
47
+ chdir {
48
+ Exit_Zero "cp -r templates new-templates"
49
+ bin "--templates \"new-templates/*.conf\""
50
+ should_mustache "app", "Hi", "upstart/My-Apps-Hi.conf"
51
+ }
52
+ end
53
+
54
+ it "accepts --output" do
55
+ chdir {
56
+ Exit_Zero "mkdir new-upstart"
57
+ bin "--output new-upstart"
58
+ should_mustache "name", "My-Apps", "new-upstart/My-Apps-Hi.conf"
59
+ }
60
+ end
61
+
62
+ end # === bin: Thin_Upstart
63
+
64
+ describe "Thin_Upstart --trash dir" do
65
+
66
+ it "it removes file from dir" do
67
+ chdir {
68
+ Multi_0 %@
69
+ mkdir bin_trash
70
+ echo "# Generated by Thin_Upstart (Ruby gem)" >> bin_trash/a.conf
71
+ echo "# Generated by Thin_Upstart " >> bin_trash/b.conf
72
+ echo "# Generated by Thin" >> bin_trash/c.conf
73
+ @
74
+
75
+ bin "--trash bin_trash"
76
+ File.file?("bin_trash/a.conf").should == false
77
+ File.file?("bin_trash/b.conf").should == false
78
+ File.file?("bin_trash/c.conf").should == true
79
+ }
80
+ end
81
+
82
+ end # === Thin_Upstart --trash dir
83
+
84
+
@@ -0,0 +1,65 @@
1
+
2
+ describe "Thin_Upstart create" do
3
+
4
+ before { reset }
5
+
6
+ it "creates main app file: upstart/{{name}}.conf" do
7
+ chdir {
8
+ Thin_Upstart { |o| o.name "My-Apps" }
9
+ should_mustache "name", "My-Apps", "upstart/My-Apps.conf"
10
+ }
11
+ end
12
+
13
+ it "creates app file for each file: upstart/{{name}}-{{app}}.conf" do
14
+ chdir {
15
+ Thin_Upstart { |o| o.name "My" }
16
+ %w{ Hi Hello }.each { |n|
17
+ should_mustache "app", n, "upstart/My-#{n}.conf"
18
+ }
19
+ }
20
+ end
21
+
22
+ it "prepends to each file: '# Generated by Thin_Upstart'" do
23
+ target = "# Generated by Thin_Upstart (Ruby gem)"
24
+ chdir {
25
+ Thin_Upstart { |o| o.name "My" }
26
+ File.read("upstart/My.conf")[target].should == target
27
+ File.read("upstart/My-Hi.conf")[target].should == target
28
+ File.read("upstart/My-Hello.conf")[target].should == target
29
+ }
30
+ end
31
+
32
+ it "raise ArgumentError if no templates are found." do
33
+ chdir {
34
+ lambda {
35
+ Thin_Upstart { |o| o.templates "ignored" }
36
+ }.should.raise(ArgumentError)
37
+ .message.should.match %r!No templates found in: #{`pwd`.strip}/ignored!
38
+ }
39
+ end
40
+
41
+ it "raises ArgumentError if no apps are found." do
42
+ target = File.expand_path("#{D}/..")
43
+ chdir {
44
+ lambda {
45
+ Thin_Upstart { |o|
46
+ o.apps target
47
+ }
48
+ }.should.raise(ArgumentError)
49
+ .message.should.match %r!No apps found in: #{target}!
50
+ }
51
+ end
52
+
53
+ it "ignores app with no .yml file" do
54
+ name = "Ignored"
55
+ chdir {
56
+ `mkdir apps/#{name}`
57
+ Thin_Upstart
58
+ Dir.glob("upstart/*").detect { |f| f[name] }
59
+ .should == nil
60
+ }
61
+ end
62
+
63
+ end # === Thin_Upstart create
64
+
65
+
@@ -0,0 +1,32 @@
1
+
2
+ describe "Thin_Upstart Mustache values" do
3
+
4
+ before { generate 'my-apps' }
5
+
6
+ it "sets: {{name}}" do
7
+ chdir { should_mustache 'name', "my-apps" }
8
+ end
9
+
10
+ it "sets: {{app}}" do
11
+ chdir { should_mustache 'app', 'Hi' }
12
+ end
13
+
14
+ it "sets: {{app_path}}" do
15
+ chdir { should_mustache 'app_path', File.expand_path("apps/Hi") }
16
+ end
17
+
18
+ it "sets: {{yml}}" do
19
+ chdir { should_mustache 'yml', "thin.yml" }
20
+ end
21
+
22
+ it "sets: {{yml_path}}" do
23
+ chdir { should_mustache 'yml_path', File.expand_path("apps/Hi/thin.yml") }
24
+ end
25
+
26
+ it "sets: {{apps_dir}}" do
27
+ chdir { should_mustache 'apps_dir', File.expand_path("./apps") }
28
+ end
29
+
30
+ end # === Thin_Upstart Mustache values
31
+
32
+
@@ -0,0 +1,13 @@
1
+
2
+ describe "Thin_Upstart settings" do
3
+
4
+ %w{ apps output }.each { |dir|
5
+ it "removes ending slash of :#{dir}" do
6
+ target = File.expand_path('.')
7
+ o = Thin_Upstart.new
8
+ o.apps "./#{dir}/"
9
+ o.apps.should == "#{target}/#{dir}"
10
+ end
11
+ }
12
+
13
+ end # === Thin_Upstart settings
@@ -0,0 +1,21 @@
1
+
2
+ describe "Thin_Upstart.trash" do
3
+
4
+ it "removes all files with string: # Generated by Thin_Upstart" do
5
+ chdir {
6
+ Multi_0 %@
7
+ mkdir trash
8
+ echo "# Generated by Thin_Upstart (Ruby gem)" >> trash/1.conf
9
+ echo "# Generated by Thin_Upstart " >> trash/2.conf
10
+ echo "# Generated by Thin" >> trash/3.conf
11
+ @
12
+
13
+ Thin_Upstart.trash "trash"
14
+ File.file?("trash/1.conf").should == false
15
+ File.file?("trash/2.conf").should == false
16
+ File.file?("trash/3.conf").should == true
17
+ }
18
+ end
19
+
20
+ end # === Thin_Upstart.trash
21
+
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Thin_Upstart
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - da99
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bacon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: Bacon_Colored
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
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: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '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: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: mustache
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: trollop
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: Exit_Zero
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: ! "\n Generates Upstart conf files for your Thin apps.\n Uses Mustache
127
+ templates for customization.\n "
128
+ email:
129
+ - i-hate-spam-45671204@mailinator.com
130
+ executables:
131
+ - Thin_Upstart
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - .gitignore
136
+ - Gemfile
137
+ - README.md
138
+ - Rakefile
139
+ - Thin_Upstart.gemspec
140
+ - bin/Thin_Upstart
141
+ - lib/Thin_Upstart.rb
142
+ - lib/Thin_Upstart/version.rb
143
+ - lib/templates/{{name}}-{{app}}.conf
144
+ - lib/templates/{{name}}.conf
145
+ - spec/helper.rb
146
+ - spec/main.rb
147
+ - spec/templates/{{name}}-{{app}}.conf
148
+ - spec/templates/{{name}}.conf
149
+ - spec/tests/bin.rb
150
+ - spec/tests/create.rb
151
+ - spec/tests/mustache.rb
152
+ - spec/tests/settings.rb
153
+ - spec/tests/trash.rb
154
+ homepage: https://github.com/da99/Thin_Upstart
155
+ licenses: []
156
+ post_install_message:
157
+ rdoc_options: []
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubyforge_project:
174
+ rubygems_version: 1.8.19
175
+ signing_key:
176
+ specification_version: 3
177
+ summary: Generate Upstart conf files for your Thin apps.
178
+ test_files: []