Class: Suspenders::Adapters::Heroku
- Inherits:
-
Object
- Object
- Suspenders::Adapters::Heroku
- Defined in:
- lib/suspenders/adapters/heroku.rb
Instance Method Summary collapse
- #create_heroku_pipeline ⇒ Object
- #create_production_heroku_app(flags) ⇒ Object
- #create_staging_heroku_app(flags) ⇒ Object
-
#initialize(app_builder) ⇒ Heroku
constructor
A new instance of Heroku.
- #set_heroku_application_host ⇒ Object
- #set_heroku_auto_migrate ⇒ Object
- #set_heroku_backup_schedule ⇒ Object
- #set_heroku_buildpacks ⇒ Object
- #set_heroku_rails_secrets ⇒ Object
- #set_heroku_remotes ⇒ Object
- #set_heroku_sentry_configuration ⇒ Object
- #set_heroku_smtp_settings ⇒ Object
Constructor Details
#initialize(app_builder) ⇒ Heroku
Returns a new instance of Heroku.
4 5 6 |
# File 'lib/suspenders/adapters/heroku.rb', line 4 def initialize(app_builder) @app_builder = app_builder end |
Instance Method Details
#create_heroku_pipeline ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/suspenders/adapters/heroku.rb', line 68 def create_heroku_pipeline pipelines_plugin = `heroku help | grep pipelines` if pipelines_plugin.empty? puts "You need heroku pipelines plugin. Run: brew upgrade heroku-toolbelt" exit 1 end run_toolbelt_command( "pipelines:create #{heroku_app_name} \ -a #{heroku_app_name}-staging --stage staging", "staging", ) run_toolbelt_command( "pipelines:add #{heroku_app_name} \ -a #{heroku_app_name}-production --stage production", "production", ) end |
#create_production_heroku_app(flags) ⇒ Object
27 28 29 30 31 |
# File 'lib/suspenders/adapters/heroku.rb', line 27 def create_production_heroku_app(flags) app_name = heroku_app_name_for("production") run_toolbelt_command "create #{app_name} #{flags}", "production" end |
#create_staging_heroku_app(flags) ⇒ Object
21 22 23 24 25 |
# File 'lib/suspenders/adapters/heroku.rb', line 21 def create_staging_heroku_app(flags) app_name = heroku_app_name_for("staging") run_toolbelt_command "create #{app_name} #{flags}", "staging" end |
#set_heroku_application_host ⇒ Object
88 89 90 91 92 93 94 95 |
# File 'lib/suspenders/adapters/heroku.rb', line 88 def set_heroku_application_host %w(staging production).each do |environment| run_toolbelt_command( "config:add APPLICATION_HOST=#{heroku_app_name}-#{environment}.herokuapp.com", environment, ) end end |
#set_heroku_auto_migrate ⇒ Object
97 98 99 100 101 102 103 104 |
# File 'lib/suspenders/adapters/heroku.rb', line 97 def set_heroku_auto_migrate %w(staging production).each do |environment| run_toolbelt_command( "config:add AUTO_MIGRATE_DB=true", environment, ) end end |
#set_heroku_backup_schedule ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/suspenders/adapters/heroku.rb', line 59 def set_heroku_backup_schedule %w(staging production).each do |environment| run_toolbelt_command( "pg:backups:schedule DATABASE_URL --at '2:00 UTC'", environment, ) end end |
#set_heroku_buildpacks ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/suspenders/adapters/heroku.rb', line 106 def set_heroku_buildpacks %w(staging production).each do |environment| run_toolbelt_command( "buildpacks:add --index 1 heroku/nodejs", environment ) run_toolbelt_command( "buildpacks:add --index 2 heroku/ruby", environment ) end end |
#set_heroku_rails_secrets ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/suspenders/adapters/heroku.rb', line 33 def set_heroku_rails_secrets %w(staging production).each do |environment| run_toolbelt_command( "config:add SECRET_KEY_BASE=#{generate_secret}", environment, ) end end |
#set_heroku_remotes ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/suspenders/adapters/heroku.rb', line 8 def set_heroku_remotes remotes = <<~SHELL echo "\n== Adding Heroku remotes ==" #{command_to_join_heroku_app('staging')} #{command_to_join_heroku_app('production')} echo "\n== Setting default heroku remote to 'staging' ==" git config heroku.remote staging SHELL app_builder.append_file "bin/setup", remotes end |
#set_heroku_sentry_configuration ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/suspenders/adapters/heroku.rb', line 51 def set_heroku_sentry_configuration %w(staging production).each do |environment| run_toolbelt_command("config:add SENTRY_ENV=#{environment}", environment) run_toolbelt_command("config:add SENTRY_DSN='https://[email protected]/changeme'", environment) run_toolbelt_command("labs:enable runtime-dyno-metadata", environment) end end |
#set_heroku_smtp_settings ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/suspenders/adapters/heroku.rb', line 42 def set_heroku_smtp_settings %w(staging production).each do |environment| run_toolbelt_command("config:add SMTP_ADDRESS=smtp.example.com", environment) run_toolbelt_command("config:add SMTP_DOMAIN=example.com", environment) run_toolbelt_command("config:add SMTP_USERNAME=username", environment) run_toolbelt_command("config:add SMTP_PASSWORD=password", environment) end end |