Class: Reina::Controller
- Inherits:
-
Object
- Object
- Reina::Controller
- Defined in:
- lib/reina/controller.rb
Constant Summary collapse
- APP_COOLDOWN =
seconds
7
Instance Method Summary collapse
- #apps ⇒ Object
- #create_netrc ⇒ Object
- #delete_existing_apps! ⇒ Object
- #deploy_non_parallel_apps! ⇒ Object
- #deploy_parallel_apps! ⇒ Object
- #existing_apps ⇒ Object
- #heroku? ⇒ Boolean
-
#initialize(params, strict = false) ⇒ Controller
constructor
A new instance of Controller.
Constructor Details
#initialize(params, strict = false) ⇒ Controller
Returns a new instance of Controller.
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/reina/controller.rb', line 5 def initialize(params, strict = false) @params = params @strict = strict abort 'Please provide $PLATFORM_API' if CONFIG[:platform_api].blank? abort 'Given PR number should be greater than 0' if issue_number <= 0 oversize = apps.select { |app| app.app_name.length >= 30 }.first abort "#{oversize.app_name} is too long" if oversize.present? end |
Instance Method Details
#apps ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/reina/controller.rb', line 72 def apps return @_apps if @_apps.present? # strict is when we only take in consideration the apps # that are in both `params` and `APPS` _apps = if strict app_names = branches.keys APPS.select { |name, _| app_names.include?(name) } else APPS end @_apps = _apps.map do |name, project| branch = branches[name.to_s].presence || 'master'.freeze App.new(heroku, name, project, issue_number, branch) end end |
#create_netrc ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/reina/controller.rb', line 16 def create_netrc return if ENV['GITHUB_AUTH'].blank? `git config --global user.name "#{ENV['GITHUB_NAME']}"` `git config --global user.email "#{ENV['GITHUB_EMAIL']}"` return if File.exists?('.netrc') File.write( '.netrc', "machine git.heroku.com login #{ENV['GITHUB_EMAIL']} password #{ENV['HEROKU_API_KEY']}" ) end |
#delete_existing_apps! ⇒ Object
56 57 58 59 60 61 |
# File 'lib/reina/controller.rb', line 56 def delete_existing_apps! existing_apps.each do |app| puts "Deleting #{app}" heroku.app.delete(app) end end |
#deploy_non_parallel_apps! ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/reina/controller.rb', line 43 def deploy_non_parallel_apps! apps.reject(&:parallel?).each do |app| begin deploy!(app) rescue Git::GitExecuteError => e puts "#{app.name}: #{e.}" rescue Exception => e msg = e.respond_to?(:response) ? e.response.body : e. puts "#{app.name}: #{msg}" end end end |
#deploy_parallel_apps! ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/reina/controller.rb', line 30 def deploy_parallel_apps! Parallel.each(apps.select(&:parallel?)) do |app| begin deploy!(app) rescue Git::GitExecuteError => e puts "#{app.name}: #{e.}" rescue Exception => e msg = e.respond_to?(:response) ? e.response.body : e. puts "#{app.name}: #{msg}" end end end |
#existing_apps ⇒ Object
63 64 65 66 |
# File 'lib/reina/controller.rb', line 63 def existing_apps # apps in common between heroku's list and ours @_existing_apps ||= heroku.app.list.map { |a| a['name'] } & apps.map(&:app_name) end |
#heroku? ⇒ Boolean
68 69 70 |
# File 'lib/reina/controller.rb', line 68 def heroku? ENV['DYNO'].present? end |