Class: Slining::Adapters::Heroku
- Inherits:
-
Object
- Object
- Slining::Adapters::Heroku
- Defined in:
- lib/slining/adapters/heroku.rb
Instance Method Summary collapse
- #create_heroku_application_manifest_file ⇒ Object
- #create_heroku_pipeline ⇒ Object
- #create_production_heroku_app(flags) ⇒ Object
- #create_review_apps_setup_script ⇒ Object
- #create_staging_heroku_app(flags) ⇒ Object
-
#initialize(app_builder) ⇒ Heroku
constructor
A new instance of Heroku.
- #set_heroku_rails_secrets ⇒ Object
- #set_heroku_remotes ⇒ Object
- #set_up_heroku_specific_gems ⇒ Object
Constructor Details
#initialize(app_builder) ⇒ Heroku
Returns a new instance of Heroku.
4 5 6 |
# File 'lib/slining/adapters/heroku.rb', line 4 def initialize(app_builder) @app_builder = app_builder end |
Instance Method Details
#create_heroku_application_manifest_file ⇒ Object
58 59 60 |
# File 'lib/slining/adapters/heroku.rb', line 58 def create_heroku_application_manifest_file app_builder.template "app.json.erb", "app.json" end |
#create_heroku_pipeline ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/slining/adapters/heroku.rb', line 62 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 heroku_app_name = app_builder.app_name.dasherize 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
34 35 36 37 38 |
# File 'lib/slining/adapters/heroku.rb', line 34 def create_production_heroku_app(flags) app_name = heroku_app_name_for("production") run_toolbelt_command "create #{app_name} #{flags}", "production" end |
#create_review_apps_setup_script ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/slining/adapters/heroku.rb', line 49 def create_review_apps_setup_script app_builder.template( "bin_setup_review_app.erb", "bin/setup_review_app", force: true, ) app_builder.run "chmod a+x bin/setup_review_app" end |
#create_staging_heroku_app(flags) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/slining/adapters/heroku.rb', line 26 def create_staging_heroku_app(flags) rack_env = "RACK_ENV=staging" app_name = heroku_app_name_for("staging") run_toolbelt_command "create #{app_name} #{flags}", "staging" run_toolbelt_command "config:add #{rack_env}", "staging" end |
#set_heroku_rails_secrets ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/slining/adapters/heroku.rb', line 40 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 |
# File 'lib/slining/adapters/heroku.rb', line 8 def set_heroku_remotes remotes = <<-SHELL.strip_heredoc #{command_to_join_heroku_app('staging')} #{command_to_join_heroku_app('production')} git config heroku.remote staging SHELL app_builder.append_file "bin/setup", remotes end |
#set_up_heroku_specific_gems ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/slining/adapters/heroku.rb', line 18 def set_up_heroku_specific_gems app_builder.inject_into_file( "Gemfile", %{\n\s\sgem "rails_stdout_logging"}, after: /group :staging, :production do/, ) end |