class Kazan::AppBuilder

Public Instance Methods

assets_config() click to toggle source
# File lib/kazan/app_builder.rb, line 67
def assets_config
  copy_file 'errors.rb', 'config/initializers/errors.rb'
  copy_file 'json_encoding.rb', 'config/initializers/json_encoding.rb'
end
bullet_config() click to toggle source
# File lib/kazan/app_builder.rb, line 109
def bullet_config
  template 'bullet.rb', 'config/initializers/bullet.rb'
end
bundler_audit_config() click to toggle source
# File lib/kazan/app_builder.rb, line 186
def bundler_audit_config
  copy_file 'bundler_audit.rake', 'lib/tasks/bundler_audit.rake'
  append_file 'Rakefile', %{\ntask default: 'bundler:audit'\n}
end
database_tables() click to toggle source
# File lib/kazan/app_builder.rb, line 42
def database_tables
  bundle_command 'exec rake db:create db:migrate'
end
dotenvs() click to toggle source
# File lib/kazan/app_builder.rb, line 72
def dotenvs
  directory 'envs', '.'
end
empty_directories() click to toggle source
# File lib/kazan/app_builder.rb, line 270
def empty_directories
  [
    'app/assets/fonts',
    'app/controllers/api',
    'app/controllers/web',
    'app/services',
    'app/policies',
    'app/validations',
    'app/views/shared',
    'spec/controllers',
    'spec/factories',
    'spec/helpers',
    'spec/models',
    'spec/mailers',
    'spec/requests',
    'spec/routing',
  ].each do |dir|
    empty_directory_with_keep_file dir
  end
end
exception_on_delivery_errors() click to toggle source
# File lib/kazan/app_builder.rb, line 80
def exception_on_delivery_errors
 replace_in_file 'config/environments/development.rb',
   'raise_delivery_errors = false', 'raise_delivery_errors = true'
end
exception_on_missing_assets_in_test() click to toggle source
# File lib/kazan/app_builder.rb, line 191
def exception_on_missing_assets_in_test
  configure_environment 'test', 'config.assets.raise_runtime_errors = true'
end
exception_on_missing_translations() click to toggle source
# File lib/kazan/app_builder.rb, line 94
def exception_on_missing_translations
  exception_on_missing_translations_in 'development'
  exception_on_missing_translations_in 'test'
end
exception_on_unpermitted_parameters() click to toggle source
# File lib/kazan/app_builder.rb, line 85
    def exception_on_unpermitted_parameters
      config = <<-RUBY
    config.action_controller.action_on_unpermitted_parameters = :raise

      RUBY

      inject_into_class 'config/application.rb', 'Application', config
    end
foreman_config() click to toggle source
# File lib/kazan/app_builder.rb, line 122
def foreman_config
  template 'Procfile.erb', 'Procfile'
end
gemfile() click to toggle source
# File lib/kazan/app_builder.rb, line 13
def gemfile
  template 'Gemfile.erb', 'Gemfile'
end
gemfile_api() click to toggle source
# File lib/kazan/app_builder.rb, line 17
def gemfile_api
  template 'Gemfile.api.erb', 'Gemfile', force: true
end
gitignore() click to toggle source
# File lib/kazan/app_builder.rb, line 9
def gitignore
  copy_file 'project_gitignore', '.gitignore', force: true
end
init_commit() click to toggle source
# File lib/kazan/app_builder.rb, line 291
def init_commit
  run 'git init'
  run 'git add .'
  run 'git commit -m "Init commit"'
end
letter_opener_config() click to toggle source
# File lib/kazan/app_builder.rb, line 99
    def letter_opener_config
      letter_opener_settings = <<-RUBY
  # Letter opener settings
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :letter_opener
      RUBY

      configure_environment 'development', letter_opener_settings
    end
postgres_config() click to toggle source
# File lib/kazan/app_builder.rb, line 37
def postgres_config
  template 'database.yml.erb', 'config/database.yml', force: true
  template 'database.yml.erb', 'config/database.yml.example'
end
puma_config() click to toggle source
# File lib/kazan/app_builder.rb, line 33
def puma_config
  copy_file 'puma.rb', 'config/puma.rb', force: true
end
quiet_assets_config() click to toggle source
# File lib/kazan/app_builder.rb, line 113
    def quiet_assets_config
      config = <<-RUBY
    config.assets.quiet = true

      RUBY

      inject_into_class 'config/application.rb', 'Application', config
    end
rack_canonical_host_config() click to toggle source
# File lib/kazan/app_builder.rb, line 249
    def rack_canonical_host_config
      config = <<-RUBY
  config.middleware.use Rack::CanonicalHost, ENV.fetch("APPLICATION_HOST")
      RUBY

      inject_into_file "config/environments/production.rb", config,
        after: "Rails.application.configure do"
    end
rack_deflater_config() click to toggle source
# File lib/kazan/app_builder.rb, line 258
def rack_deflater_config
  configure_environment "production", "config.middleware.use Rack::Deflater"
end
rack_mini_profiler_config() click to toggle source
# File lib/kazan/app_builder.rb, line 29
def rack_mini_profiler_config
  copy_file 'rack_mini_profiler.rb', 'config/initializers/rack_mini_profiler.rb'
end
rack_timeout_config() click to toggle source
# File lib/kazan/app_builder.rb, line 240
    def rack_timeout_config
      rack_timeout_config = <<-RUBY
  Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i

      RUBY

      append_file 'config/environments/production.rb', rack_timeout_config
    end
rails_generators_config() click to toggle source
# File lib/kazan/app_builder.rb, line 126
    def rails_generators_config
      config = <<-RUBY
    config.generators do |generate|
      generate.helper false
      generate.javascript_engine false
      generate.request_specs false
      generate.routing_specs false
      generate.stylesheets false
      generate.test_framework :rspec
      generate.view_specs false
    end

      RUBY

      inject_into_class 'config/application.rb', 'Application', config
    end
readme() click to toggle source
# File lib/kazan/app_builder.rb, line 5
def readme
  template 'README.md.erb', 'README.md'
end
rollbar_config() click to toggle source
# File lib/kazan/app_builder.rb, line 262
def rollbar_config
  copy_file 'rollbar.rb', 'config/initializers/rollbar.rb'
end
rspec_config() click to toggle source
# File lib/kazan/app_builder.rb, line 215
def rspec_config
  generate 'rspec:install'
end
rspec_replace_config() click to toggle source
# File lib/kazan/app_builder.rb, line 219
def rspec_replace_config
  copy_file 'rails_helper.rb', 'spec/rails_helper.rb', force: true
  copy_file 'spec_helper.rb', 'spec/spec_helper.rb', force: true
end
ruby_version() click to toggle source
# File lib/kazan/app_builder.rb, line 21
def ruby_version
  create_file '.ruby-version', "#{Kazan::RUBY_PROJECT_VERSION}\n"
end
settings() click to toggle source
# File lib/kazan/app_builder.rb, line 76
def settings
  template 'settings.yml.erb', 'config/settings.yml'
end
setup_locales() click to toggle source
# File lib/kazan/app_builder.rb, line 181
def setup_locales
  copy_file 'i18n-tasks.yml', 'config/i18n-tasks.yml'
  copy_file 'i18n_spec.rb', 'spec/i18n_spec.rb'
end
shared_flash() click to toggle source
# File lib/kazan/app_builder.rb, line 50
def shared_flash
  copy_file '_flashes.html.erb', 'app/views/layouts/shared/_flashes.html.erb'
  copy_file 'flashes_helper.rb', 'app/helpers/flashes_helper.rb'
end
shared_javascript() click to toggle source
# File lib/kazan/app_builder.rb, line 55
def shared_javascript
  copy_file '_javascript.html.erb', 'app/views/layouts/shared/_javascript.html.erb'
end
shared_layout() click to toggle source
# File lib/kazan/app_builder.rb, line 63
def shared_layout
  copy_file '_application.html.erb', 'app/views/layouts/application.html.erb', force: true
end
shared_styles() click to toggle source
# File lib/kazan/app_builder.rb, line 59
def shared_styles
  copy_file '_styles.html.erb', 'app/views/layouts/shared/_styles.html.erb'
end
shared_views_directory() click to toggle source
# File lib/kazan/app_builder.rb, line 46
def shared_views_directory
  empty_directory 'app/views/layouts/shared'
end
simple_form_config() click to toggle source
# File lib/kazan/app_builder.rb, line 25
def simple_form_config
  bundle_command 'exec rails generate simple_form:install'
end
smtp_config() click to toggle source
# File lib/kazan/app_builder.rb, line 224
    def smtp_config
      copy_file 'smtp.rb', 'config/smtp.rb'

      prepend_file 'config/environments/production.rb',
        %{require Rails.root.join("config/smtp")\n}

      config = <<-RUBY
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = SMTP_SETTINGS

      RUBY

      inject_into_file 'config/environments/production.rb', config,
        after: "config.action_mailer.raise_delivery_errors = false"
    end
spec_action_mailer_config() click to toggle source
# File lib/kazan/app_builder.rb, line 199
def spec_action_mailer_config
  copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
end
spec_database_cleaner_config() click to toggle source
# File lib/kazan/app_builder.rb, line 203
def spec_database_cleaner_config
  copy_file 'database_cleaner.rb', 'spec/support/database_cleaner.rb'
end
spec_factory_bot_config() click to toggle source
# File lib/kazan/app_builder.rb, line 211
def spec_factory_bot_config
  copy_file 'factory_bot.rb', 'spec/support/factory_bot.rb'
end
spec_shoulda_matchers_config() click to toggle source
# File lib/kazan/app_builder.rb, line 207
def spec_shoulda_matchers_config
  copy_file 'shoulda_matchers.rb', 'spec/support/shoulda_matchers.rb'
end
spec_translations_config() click to toggle source
# File lib/kazan/app_builder.rb, line 195
def spec_translations_config
  copy_file 'i18n.rb', 'spec/support/i18n.rb'
end
spring() click to toggle source
# File lib/kazan/app_builder.rb, line 266
def spring
  bundle_command 'exec spring binstub --all'
end
static_pages() click to toggle source
# File lib/kazan/app_builder.rb, line 168
    def static_pages
      meta_tags = <<-EOS
    <meta charset="utf-8" />
    <meta name="ROBOTS" content="NOODP" />
    <meta name="viewport" content="initial-scale=1" />
      EOS

      %w(500 404 422).each do |page|
        inject_into_file "public/#{page}.html", meta_tags, after: "<head>\n"
        replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
      end
    end
stylesheets_gems() click to toggle source
# File lib/kazan/app_builder.rb, line 150
    def stylesheets_gems
      gems = <<-RUBY
      RUBY

      inject_into_file 'Gemfile', gems,
        after: "gem 'sass-rails', '~> 5.0'\n"

      Bundler.with_clean_env { run 'bundle install' }
    end
stylesheets_manifest() click to toggle source
# File lib/kazan/app_builder.rb, line 160
def stylesheets_manifest
  remove_file 'app/assets/stylesheets/application.css'
  copy_file(
    'application.scss',
    'app/assets/stylesheets/application.scss',
    force: true)
end

Private Instance Methods

exception_on_missing_translations_in(environment) click to toggle source
# File lib/kazan/app_builder.rb, line 299
def exception_on_missing_translations_in(environment)
  config = 'config.action_view.raise_on_missing_translations = true'

  uncomment_lines("config/environments/#{environment}.rb", config)
end