negroku 2.0.0.pre2 → 2.0.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
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