negroku 2.0.0.pre2 → 2.0.0.pre3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ad1fba31167094369325cf2980996a35237559f
4
- data.tar.gz: 0623e3ffd944c40f4a2de602acbd9f8021381d62
3
+ metadata.gz: d2304543c710a4d86a60f368a026e53ae593f8d5
4
+ data.tar.gz: e9046a6bfcffe5db9bfc4c55262b9d030b08537e
5
5
  SHA512:
6
- metadata.gz: 891b5c5f10131ce652b7a6fc9520f72f5db7a9f87a054240b518dcdcd555b156e48c44cf9088bb8254c5d2364499c027e19e2b19f138f6a5c073113475cbe003
7
- data.tar.gz: abcaa6b4e7f80dba7c389a1479440bfc2ffd1283b571e600bb65fe204a044400f793fd3b87994de4ed106523b9565c73603141a8710cfc2789cc03cf6c3c7fce
6
+ metadata.gz: 26513388eb619bcb04ee854a1a24831e1ee90f6cca7ce9a4264d6fb4af35eff5bd37f27a4a8c1adc79d4ff0b0711cfed4a8f4f80ae01e29af95532071ccc4cf6
7
+ data.tar.gz: 502dbf0589cbc762fd46ab1c1b1bf02455665cb2edc1ffe8c6f6dbb7a46668e8c2c4a578fa3c44450e3dec558dbd59751d48a4666819cda82a7b150ccd62f6ef
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format=doc
data/Rakefile CHANGED
@@ -1,44 +1 @@
1
- require 'rake/clean'
2
- require 'rubygems'
3
- require 'rubygems/package_task'
4
- require 'rdoc/task'
5
- require 'cucumber'
6
- require 'cucumber/rake/task'
7
- Rake::RDocTask.new do |rd|
8
- rd.main = "README.rdoc"
9
- rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
10
- rd.title = 'Negroku'
11
- end
12
-
13
- spec = eval(File.read('negroku.gemspec'))
14
-
15
- Gem::PackageTask.new(spec) do |pkg|
16
- end
17
- CUKE_RESULTS = 'results.html'
18
- CLEAN << CUKE_RESULTS
19
- desc 'Run features'
20
- Cucumber::Rake::Task.new(:features) do |t|
21
- opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
22
- opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
23
- t.cucumber_opts = opts
24
- t.fork = false
25
- end
26
-
27
- desc 'Run features tagged as work-in-progress (@wip)'
28
- Cucumber::Rake::Task.new('features:wip') do |t|
29
- tag_opts = ' --tags ~@pending'
30
- tag_opts = ' --tags @wip'
31
- t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
32
- t.fork = false
33
- end
34
-
35
- task :cucumber => :features
36
- task 'cucumber:wip' => 'features:wip'
37
- task :wip => 'features:wip'
38
- require 'rake/testtask'
39
- Rake::TestTask.new do |t|
40
- t.libs << "test"
41
- t.test_files = FileList['test/*_test.rb']
42
- end
43
-
44
- task :default => [:test,:features]
1
+ require "bundler/gem_tasks"
@@ -1,6 +1,3 @@
1
- require 'erb'
2
- require 'pathname'
3
-
4
1
  module Negroku::Bootstrap
5
2
  extend self
6
3
 
@@ -10,103 +7,40 @@ module Negroku::Bootstrap
10
7
  data[:application_name] = ask_name
11
8
  data[:repo_url] = select_repo
12
9
 
13
- custom_capify select_stages, data
14
-
15
- end
16
-
17
- def add_stage(stage=nil)
18
-
19
- if stage.nil?
20
- name = ask_stage
21
- end
22
-
23
- custom_stage(name)
10
+ custom_capify data
24
11
 
25
12
  end
26
13
 
27
- def remove_stage(stage=nil)
28
-
29
- current_stages = Dir[File.join(@deploy_dir, '*.rb')].map(){|f| File.basename(f)}
30
-
31
- if stage.nil?
32
- selections = Ask.checkbox "What stages you want to remove", current_stages
33
- stages_to_delete = selections.map.with_index { |v, i| current_stages[i] if v}.compact
34
- else
35
- stages_to_delete = ["#{stage}.rb"]
36
- end
37
-
38
- if stages_to_delete.count > 0
39
- stages_to_delete.each do |s|
40
- path_to_delete = File.join(@deploy_dir, s)
41
- begin
42
- FileUtils.rm(path_to_delete)
43
- rescue
44
- puts "The stage '#{s}' doesn't exist"
45
- end
46
- end
47
- else
48
- puts "Nothing to do"
49
- end
50
-
51
- end
52
14
 
53
15
  private
54
16
 
55
- @tasks_dir = Pathname.new('lib/capistrano/tasks')
56
- @config_dir = Pathname.new('config')
57
- @deploy_dir = @config_dir.join('deploy')
58
-
59
- @deploy_rb = File.expand_path("../../templates/negroku/deploy.rb.erb", __FILE__)
60
- @stage_rb = File.expand_path("../../templates/negroku/stage.rb.erb", __FILE__)
61
- @capfile = File.expand_path("../../templates/negroku/Capfile.erb", __FILE__)
62
-
63
17
  # This code was exatracted from capistrano to be used with our own templates
64
18
  # https://github.com/capistrano/capistrano/blob/68e7632c5f16823a09c324d556a208e096abee62/lib/capistrano/tasks/install.rake
65
- def custom_capify(stages, data={})
66
-
67
- FileUtils.mkdir_p @deploy_dir
19
+ def custom_capify(data={})
20
+ # defaults
21
+ data[:server_url] = ""
22
+ data[:branch] = "master"
68
23
 
69
- template = File.read(@deploy_rb)
70
- file = @config_dir.join('deploy.rb')
71
- File.open(file, 'w+') do |f|
72
- f.write(ERB.new(template).result(binding))
73
- puts I18n.t(:written_file, scope: :negroku, file: file)
74
- end
24
+ FileUtils.mkdir_p AppDirectory.deploy
75
25
 
76
- template = File.read(@stage_rb)
77
- stages.each do |stage|
78
- file = @deploy_dir.join("#{stage}.rb")
79
- File.open(file, 'w+') do |f|
80
- f.write(ERB.new(template).result(binding))
81
- puts I18n.t(:written_file, scope: :negroku, file: file)
82
- end
83
- end
26
+ deploy_rb = AppDirectory.config.join('deploy.rb')
27
+ capfile = AppDirectory.root.join('Capfile')
28
+ build_template("negroku/deploy.rb.erb", deploy_rb, binding)
29
+ build_template('negroku/Capfile.erb', capfile, binding)
84
30
 
85
- FileUtils.mkdir_p @tasks_dir
86
-
87
- FileUtils.cp(@capfile, 'Capfile')
31
+ FileUtils.mkdir_p AppDirectory.tasks
88
32
 
89
33
 
90
34
  puts I18n.t :capified, scope: :negroku
91
35
 
92
36
  end
93
37
 
94
- def custom_stage(stage, data={})
95
-
96
- end
97
-
98
38
  # Ask the application name
99
39
  def ask_name
100
40
  question = I18n.t :application_name, scope: :negroku
101
41
  Ask.input question, default: File.basename(Dir.getwd)
102
42
  end
103
43
 
104
- # Ask the stage name
105
- def ask_stage
106
- question = I18n.t :ask_stage_name, scope: :negroku
107
- Ask.input question
108
- end
109
-
110
44
  # Get git remotes from current git and ask to select one
111
45
  def select_repo
112
46
  remote_urls = %x(git remote -v 2> /dev/null | awk '{print $2}' | uniq).split("\n")
@@ -121,19 +55,4 @@ module Negroku::Bootstrap
121
55
  else remote_urls[selected_idx] end
122
56
  end
123
57
 
124
- # Ask which stages to setup
125
- def select_stages
126
- default_stages = %w(staging production other)
127
-
128
- question = I18n.t :choose_stages, scope: :negroku
129
- selected_idx = Ask.checkbox question, default_stages
130
-
131
- stages = selected_idx.map.with_index { |v, i| default_stages[i] if v}.compact
132
-
133
- if selected_idx.last
134
- question = "List the extra stages (comma separated)"
135
- stages[0...-1].concat (Ask.input question).split(",").map(&:strip)
136
- else stages end
137
- end
138
-
139
58
  end
@@ -12,28 +12,5 @@ module Negroku::CLI
12
12
  end
13
13
  end
14
14
 
15
- app.desc 'Bootstrap your application with capistrano and negroku'
16
- app.command :stage do |stage|
17
-
18
- stage.desc 'Bootstrap your application with capistrano and negroku'
19
- stage.command :add do |add|
20
- add.action do |global_options,options,args|
21
-
22
- Negroku::Bootstrap.add_stage
23
-
24
- end
25
- end
26
-
27
- stage.desc 'Bootstrap your application with capistrano and negroku'
28
- stage.command :remove do |remove|
29
- remove.action do |global_options,options,args|
30
-
31
- Negroku::Bootstrap.remove_stage args.first
32
-
33
- end
34
- end
35
-
36
- end
37
-
38
15
  end
39
16
  end
@@ -0,0 +1,14 @@
1
+ module Negroku::CLI
2
+
3
+ desc 'Manage your apps env variables'
4
+ command :env do |app|
5
+
6
+ app.desc 'Adds multiple variables from rbenv-vars to a server'
7
+ app.command :bulk do |bulk|
8
+ bulk.action do |global_options,options,args|
9
+ Negroku::Env.bulk
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module Negroku::CLI
2
+
3
+ desc 'Create and manage stages'
4
+ command :stage do |stage|
5
+
6
+ stage.desc 'Adds a new stage'
7
+ stage.command :add do |add|
8
+ add.action do |global_options,options,args|
9
+
10
+ Negroku::Stage.add
11
+
12
+ end
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,57 @@
1
+ module Negroku::Env
2
+ extend self
3
+
4
+ ENV_FILE = ".rbenv-vars"
5
+
6
+ def bulk(selected_stage = nil)
7
+ if stage = selected_stage || select_stage
8
+ variables = select_variables
9
+ if variables.empty?
10
+ puts I18n.t(:no_variables_added, scope: :negroku)
11
+ else
12
+ add_vars_to_stage(stage, variables)
13
+ end
14
+ end
15
+ end
16
+
17
+ # Adds the variables to the selected stage using cap rbenv add
18
+ def add_vars_to_stage(stage, variables)
19
+ # convert to array using VAR=value
20
+ vars_array = variables.map{|k,v| "#{k}=#{v}" }
21
+ Capistrano::Application.invoke(stage)
22
+ Capistrano::Application.invoke("rbenv:vars:add", *vars_array)
23
+ end
24
+
25
+ # build a list of variables from ENV_FILE and yeilds it
26
+ def get_variables
27
+ return unless File.exists?(ENV_FILE)
28
+
29
+ File.open(ENV_FILE).each do |line|
30
+ var_name = line.split("=").first
31
+ yield var_name unless line =~ /^\#/
32
+ end
33
+ end
34
+
35
+ # Returns a hash of selected variables and values
36
+ def select_variables
37
+ selection = {}
38
+ puts I18n.t(:ask_variables_message, scope: :negroku)
39
+ get_variables do |var_name|
40
+ selection[var_name] = Ask.input(var_name)
41
+ end
42
+ selection.reject {|key, value| value.empty? }
43
+ end
44
+
45
+ def select_stage
46
+ if current_stages.empty?
47
+ puts I18n.t(:no_stages_found, scope: :negroku)
48
+ else
49
+ selection = Ask.list I18n.t(:select_stages_question, scope: :negroku), current_stages
50
+ current_stages[selection]
51
+ end
52
+ end
53
+
54
+ def current_stages
55
+ @current_stages ||= Capistrano::Application.stages
56
+ end
57
+ end
@@ -0,0 +1,88 @@
1
+ module Negroku::Stage
2
+ extend self
3
+
4
+ def add
5
+ config = {
6
+ stage_name: ask_stage,
7
+ branch: select_branch,
8
+ domains: ask_domains,
9
+ server_url: ask_server_url
10
+ }
11
+
12
+ add_stage_file config
13
+ Negroku::Env.bulk(config[:stage_name]) if ask_add_vars
14
+ end
15
+
16
+ def ask_add_vars
17
+ question = I18n.t :ask_add_vars, scope: :negroku
18
+ Ask.confirm question, default: false
19
+ end
20
+
21
+ def add_stage_file(data)
22
+ destination = AppDirectory.deploy.join("#{data[:stage_name]}.rb")
23
+
24
+ build_template("negroku/stage.rb.erb", destination, binding)
25
+ end
26
+
27
+ def ask_server_url
28
+ question = I18n.t :ask_server_url, scope: :negroku
29
+ Ask.input question
30
+ end
31
+
32
+ def ask_domains
33
+ question = I18n.t :ask_domains, scope: :negroku
34
+ Ask.input question
35
+ end
36
+
37
+ def select_branch
38
+ question = I18n.t :select_branch, scope: :negroku
39
+ branches = get_remote_branches
40
+ answer = Ask.list question, branches
41
+ return branches[answer] unless branches.empty?
42
+ end
43
+
44
+ def get_remote_branches(fetch: false)
45
+ %x(git fetch) if fetch
46
+
47
+ branches = []
48
+ %x(git branch -r).split.each do |branch|
49
+ next unless branch.start_with? 'origin'
50
+ branches << branch.split('/', 2)[1] unless branch =~ /HEAD/
51
+ end
52
+ branches.uniq
53
+ end
54
+
55
+ # Ask the stage name
56
+ def ask_stage
57
+ question = I18n.t :ask_stage_name, scope: :negroku
58
+ stage_name = Ask.input question
59
+ raise "Stage name required" if stage_name.empty?
60
+ stage_name
61
+ end
62
+
63
+ def remove_stage(stage=nil)
64
+
65
+ current_stages = Dir[File.join(@deploy_dir, '*.rb')].map(){|f| File.basename(f)}
66
+
67
+ if stage.nil?
68
+ selections = Ask.checkbox "What stages you want to remove", current_stages
69
+ stages_to_delete = selections.map.with_index { |v, i| current_stages[i] if v}.compact
70
+ else
71
+ stages_to_delete = ["#{stage}.rb"]
72
+ end
73
+
74
+ if stages_to_delete.count > 0
75
+ stages_to_delete.each do |s|
76
+ path_to_delete = File.join(@deploy_dir, s)
77
+ begin
78
+ FileUtils.rm(path_to_delete)
79
+ rescue
80
+ puts "The stage '#{s}' doesn't exist"
81
+ end
82
+ end
83
+ else
84
+ puts "Nothing to do"
85
+ end
86
+
87
+ end
88
+ end
data/lib/negroku/cli.rb CHANGED
@@ -1,8 +1,23 @@
1
+ require 'capistrano/all'
2
+ require 'capistrano/setup'
3
+ require 'capistrano/deploy'
4
+
5
+ # Load applications deploy config if it exists
6
+ require './config/deploy' if File.exists? "./config/deploy"
7
+
1
8
  require 'gli'
2
9
  require 'inquirer'
3
10
  require 'negroku/i18n'
4
11
  require 'negroku/version'
5
12
  require 'negroku/cli/bootstrap'
13
+ require 'negroku/cli/stage'
14
+ require 'negroku/cli/env'
15
+ require 'negroku/helpers/app_directory'
16
+ require 'negroku/helpers/templates'
17
+
18
+ require 'capistrano/rbenv'
19
+ require 'negroku/deploy'
20
+
6
21
 
7
22
  module Negroku::CLI
8
23
 
@@ -1,4 +1,3 @@
1
- require 'pry'
2
1
  module SSHKit
3
2
 
4
3
  module Formatter
@@ -6,7 +5,6 @@ module SSHKit
6
5
  class Simple < Abstract
7
6
 
8
7
  def write(obj)
9
- binding.pry
10
8
  original_output << "Deploying..."
11
9
  return if obj.verbosity < SSHKit.config.output_verbosity
12
10
  case obj
@@ -0,0 +1,22 @@
1
+ require 'pathname'
2
+
3
+ module AppDirectory
4
+ extend self
5
+
6
+ def config
7
+ @config ||= Pathname.new('config')
8
+ end
9
+
10
+ def root
11
+ @root ||= Pathname.new('')
12
+ end
13
+
14
+ def deploy
15
+ config.join('deploy')
16
+ end
17
+
18
+ def tasks
19
+ @tasks ||= Pathname.new('lib/capistrano/tasks')
20
+ end
21
+
22
+ end
@@ -0,0 +1,10 @@
1
+ # helper to build the add VAR cmd
2
+ def build_add_var_cmd(vars_file, key, value)
3
+ puts "#{vars_file} #{key} #{value}"
4
+ cmd = "if awk < #{vars_file} -F= '{print $1}' | grep --quiet -w #{key}; then "
5
+ cmd += "sed -i 's/^#{key}=.*/#{key}=#{value.gsub("\/", "\\/")}/g' #{vars_file};"
6
+ cmd += "else echo '#{key}=#{value}' >> #{vars_file};"
7
+ cmd += "fi"
8
+ cmd
9
+ end
10
+
@@ -0,0 +1,9 @@
1
+ # Define los
2
+ #
3
+ def define_logs(namespace, hash)
4
+ logs = fetch(:negroku_logs, {})
5
+
6
+ logs[namespace] = hash
7
+
8
+ set :negroku_logs, logs
9
+ end
@@ -0,0 +1,35 @@
1
+ require "erb"
2
+
3
+ # Build the template
4
+ def build_template(template, destination, binding)
5
+ template_file = get_template_file(template)
6
+
7
+ result = ERB.new(template_file, nil, '-').result(binding)
8
+
9
+ if destination
10
+ File.open(destination.to_s, 'w+') do |f|
11
+ f.write(result)
12
+ end
13
+
14
+ puts I18n.t(:written_file, scope: :negroku, file: destination)
15
+ else
16
+ return StringIO.new(result)
17
+ end
18
+ end
19
+
20
+ # Render one nested error partial
21
+ def partial(filename, binding)
22
+ template_file = get_template_file(filename)
23
+ ERB.new(template_file, nil, '-', '_erbout2').result(binding)
24
+ end
25
+
26
+ # Get the template file from the project and fallback to the gem
27
+ def get_template_file(filename)
28
+ if File.exists?(filename)
29
+ templateFile = filename
30
+ else
31
+ templateFile = File.expand_path("../../templates/#{filename}", __FILE__)
32
+ end
33
+
34
+ File.read(templateFile)
35
+ end
@@ -1,3 +1,7 @@
1
+ require 'negroku/helpers/templates'
2
+ require 'negroku/helpers/logs'
3
+ require 'negroku/helpers/env'
4
+
1
5
  # Find out if a specific library file was already required
2
6
  def was_required?(file)
3
7
  rex = Regexp.new("/#{Regexp.quote(file)}\.(so|o|sl|rb)?")
@@ -7,12 +11,3 @@ end
7
11
  def load_task(name)
8
12
  load File.join(File.dirname(__FILE__), 'tasks', "#{name}.rake")
9
13
  end
10
-
11
- # Define los
12
- def define_logs(namespace, hash)
13
- logs = fetch(:negroku_logs, {})
14
-
15
- logs[namespace] = hash
16
-
17
- set :negroku_logs, logs
18
- end
data/lib/negroku/i18n.rb CHANGED
@@ -1,17 +1,9 @@
1
1
  require 'i18n'
2
2
  require 'set'
3
3
 
4
- en = {
5
- capified: 'Capified',
6
- written_file: 'create %{file}',
7
- application_name: 'Give your application a name',
8
- other: 'Other',
9
- choose_repo_url: 'Choose the repository url',
10
- type_repo_url: 'Type the url and username e.g. git@github.com:username/app-name.git',
11
- choose_stages: 'Select the stages you are going to use'
12
- }
13
-
14
- I18n.backend.store_translations(:en, { negroku: en })
4
+ locale_path = File.join(File.dirname(__FILE__), 'locales')
5
+ I18n.load_path = Dir[File.join(locale_path, '*.yml')]
6
+ I18n.backend.load_translations
15
7
 
16
8
  if I18n.respond_to?(:enforce_available_locales=)
17
9
  I18n.enforce_available_locales = true
@@ -0,0 +1,19 @@
1
+ en:
2
+ negroku:
3
+ capified: "Capified"
4
+ written_file: 'create %{file}'
5
+ application_name: 'Give your application a name'
6
+ other: 'Other'
7
+ choose_repo_url: 'Choose the repository url'
8
+ type_repo_url: 'Type the url and username e.g. git@github.com:username/app-name.git'
9
+ choose_stages: 'Select the stages you are going to use'
10
+ select_stages_question: 'Select stages you want to add variables to'
11
+ no_variables_added: 'No variables added'
12
+ ask_variables_message: "Give the variables values, if empty, it will be ignored"
13
+ rbenv_vars_not_found: ".rbenv-vars does not exists"
14
+ no_stages_found: "There are no stages available"
15
+ ask_stage_name: "Stage name"
16
+ select_branch: "Select the branch to use"
17
+ ask_domains: "Type the domains to use"
18
+ ask_server_url: "Type the server url to deploy to"
19
+ ask_add_vars: "Do you want to add rbenv-vars to the server now?"
@@ -9,6 +9,28 @@ namespace :load do
9
9
  end
10
10
  end
11
11
 
12
+ namespace :rails do
13
+ desc "Open the rails console on the primary remote app server"
14
+ task :console do
15
+ on roles(:app), :primary => true do |host|
16
+ execute_interactively host, "console #{fetch(:rails_env)}"
17
+ end
18
+ end
19
+
20
+ desc "Open the rails dbconsole on the primary remote app server"
21
+ task :dbconsole do
22
+ on roles(:app), :primary => true do |host|
23
+ execute_interactively host, "dbconsole #{fetch(:rails_env)}"
24
+ end
25
+ end
26
+
27
+ def execute_interactively(host, command)
28
+ command = "cd #{fetch(:deploy_to)}/current && #{SSHKit.config.command_map[:bundle]} exec rails #{command}"
29
+ puts command if fetch(:log_level) == :debug
30
+ exec "ssh -l #{host.user} #{host.hostname} -p #{host.port || 22} -t '#{command}'"
31
+ end
32
+ end
33
+
12
34
  namespace :negroku do
13
35
 
14
36
  namespace :rails do
@@ -25,22 +25,24 @@ namespace :rbenv do
25
25
  end
26
26
  end
27
27
 
28
- desc "Add environmental variable"
29
- task :add, [:key, :value] do |t, args|
30
- key = args[:key]
31
- value = args[:value]
28
+ desc "Add environmental variables in the form VAR=value"
29
+ task :add, :variable do |t, args|
30
+
31
+ vars = [args.variable] + args.extras
32
+
32
33
  on release_roles :app do
33
34
  within shared_path do
34
35
  unless test "[ ! -f .rbenv-vars ]"
35
36
  execute :touch, ".rbenv-vars"
36
37
  end
37
- cmd = "if awk < #{shared_path}/.rbenv-vars -F= '{print $1}' | grep --quiet -w #{key}; then "
38
- cmd += "sed -i 's/^#{key}=.*/#{key}=#{value.gsub("\/", "\\/")}/g' #{shared_path}/.rbenv-vars;"
39
- cmd += "else echo '#{key}=#{value}' >> #{shared_path}/.rbenv-vars;"
40
- cmd += "fi"
41
- execute cmd
38
+ vars.compact.each do |var|
39
+ key, value = var.split('=')
40
+ cmd = build_add_var_cmd("#{shared_path}/.rbenv-vars", key, value)
41
+ execute cmd
42
+ end
42
43
  end
43
44
  end
45
+
44
46
  end
45
47
 
46
48
  desc "Remove environmental variable"
@@ -60,12 +60,15 @@ namespace :negroku do
60
60
  task :setup do
61
61
  on release_roles fetch(:unicorn_roles) do
62
62
  within "#{shared_path}/config" do
63
- config_file = fetch(:unicorn_template)
64
- unless File.exists?(config_file)
65
- config_file = File.expand_path("../../templates/tasks/unicorn_#{fetch(:unicorn_template_type)}.rb.erb", __FILE__)
63
+ template_path = fetch(:unicorn_template)
64
+
65
+ # user a build in template if the template doesn't exists in the project
66
+ unless File.exists?(template_path)
67
+ template_path = "tasks/unicorn_#{fetch(:unicorn_template_type)}.rb.erb"
66
68
  end
67
- config = ERB.new(File.read(config_file)).result(binding)
68
- upload! StringIO.new(config), '/tmp/unicorn.rb'
69
+
70
+ config = build_template(template_path, nil, binding)
71
+ upload! config, '/tmp/unicorn.rb'
69
72
 
70
73
  execute :mv, '/tmp/unicorn.rb', 'unicorn.rb'
71
74
  end