class MobileWorkflow::Cli::AppBuilder

Public Instance Methods

ability_generator() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 51
def ability_generator
  copy_file 'ability.rb', 'app/models/ability.rb'
end
active_storage() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 55
def active_storage
  rails_command 'active_storage:install'
  copy_file 'storage.s3.yml', 'config/storage.yml'
  gsub_file 'config/environments/production.rb', 'config.active_storage.service = :local', 'config.active_storage.service = :amazon'  
end
administrate_generator() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 32
    def administrate_generator
      generate 'administrate:install'
      
      file 'app/assets/config/manifest.js', <<-CODE
//= link administrate/application.css
//= link administrate/application.js
    CODE
  
      file 'app/controllers/admin/application_controller.rb', <<-CODE
module Admin
  class ApplicationController < Administrate::ApplicationController
    http_basic_authenticate_with(name: ENV["ADMIN_USER"], password: ENV["ADMIN_PASSWORD"])
  end
end
CODE

      generate 'administrate:routes'
    end
dokku(dokku_host) click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 111
def dokku(dokku_host)
  @dokku_host = dokku_host
  dokku_backend.create
  dokku_backend.configure_activestorage if options[:s3_storage]
  dokku_backend.deploy
  dokku_backend.sync_dotenv
end
factory_bot() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 20
def factory_bot
  inject_into_file 'spec/rails_helper.rb', after: "RSpec.configure do |config|\n" do
    "\tconfig.include FactoryBot::Syntax::Methods\n"
  end
end
format_source() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 68
def format_source
  `rufo .`
end
gemfile() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 7
def gemfile
  template 'Gemfile.erb', 'Gemfile'
end
generate_dot_env() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 72
    def generate_dot_env
      admin_user = 'admin'
      admin_password = SecureRandom.base64(12)
      
      file '.env', <<-CODE
ADMIN_USER=#{admin_user}
ADMIN_PASSWORD=#{admin_password}
CODE
    end
git_commit(message = 'Initial commit') click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 82
def git_commit(message = 'Initial commit')
  git add: "."
  git commit: %Q{ -m '#{message}'}
end
heroku() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 103
def heroku
  heroku_backend.create
  heroku_backend.configure_activestorage if options[:s3_storage]
  heroku_backend.deploy
  heroku_backend.seed_db
  heroku_backend.sync_dotenv
end
migrate_db() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 26
def migrate_db 
  rails_command("db:drop")
  rails_command("db:create")
  rails_command("db:migrate")
end
mobile_workflow_generator(open_api_spec_path) click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 61
def mobile_workflow_generator(open_api_spec_path)
  copy_file open_api_spec_path, 'config/open_api_spec.json'
  gen_opts = ""
  gen_opts += "--doorkeeper_oauth" if options[:doorkeeper_oauth]
  generate "mobile_workflow:install #{gen_opts}"
end
procfiles() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 11
def procfiles
  copy_file 'Procfile', 'Procfile'
  copy_file 'Procfile.dev', 'Procfile.dev'
end
readme() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 3
def readme
  template 'README.md.erb', 'README.md'
end
rspec_generator() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 16
def rspec_generator
  generate 'rspec:install'
end
s3_backend(region) click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 87
def s3_backend(region)
  @region = region
  aws_backend.create
  aws_backend.write_env
  
  if options[:heroku]
    heroku_backend.sync_dotenv
    sleep 10 # Wait for the server to restart
    aws_backend.create_topic_subscription(heroku_backend.notifications_endpoint)
  elsif options[:dokku]
    dokku_backend.sync_dotenv 
    aws_backend.create_topic_subscription(dokku_backend.notifications_endpoint)      
  end
  
end

Private Instance Methods

aws_backend() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 120
def aws_backend
  @aws_backend ||= AwsBackend.new(app_name: app_name, region: @region)
end
dokku_backend() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 124
def dokku_backend
  @dokku_backend ||= DokkuBackend.new(app_name: app_name, dokku_host: @dokku_host)
end
heroku_backend() click to toggle source
# File lib/mobile_workflow/cli/app_builder.rb, line 128
def heroku_backend
  @heroku_backend ||= HerokuBackend.new(app_name: app_name)
end