class Gimbal::AppBuilder

Public Instance Methods

add_bullet_gem_configuration() click to toggle source
# File lib/gimbal/app_builder.rb, line 42
    def add_bullet_gem_configuration
      config = <<-RUBY

  config.after_initialize do
    Bullet.enable = true
    Bullet.bullet_logger = true
    Bullet.rails_logger = true
  end

      RUBY

      inject_into_file(
          "config/environments/development.rb",
          config,
          after: "config.action_mailer.delivery_method = :letter_opener\n",
      )
    end
configure_action_mailer_in_specs() click to toggle source
# File lib/gimbal/app_builder.rb, line 115
def configure_action_mailer_in_specs
  copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
end
configure_devise() click to toggle source
# File lib/gimbal/app_builder.rb, line 171
def configure_devise
  inject_into_file 'app/models/user.rb',
                   "\n         :confirmable, :lockable, :timeoutable,",
                   after: 'devise :database_authenticatable, :registerable,'

  devise_migration = Dir['db/migrate/*devise_create*.rb'].first

  uncomment_lines(devise_migration, 't.string   :confirmation_token')
  uncomment_lines(devise_migration, 't.datetime :confirmed_at')
  uncomment_lines(devise_migration, 't.datetime :confirmation_sent_at')
  uncomment_lines(devise_migration, 't.string   :unconfirmed_email')

  uncomment_lines(devise_migration, 't.integer  :failed_attempts')
  uncomment_lines(devise_migration, 't.string   :unlock_token')
  uncomment_lines(devise_migration, 't.datetime :locked_at')

  uncomment_lines(devise_migration, 'add_index :users, :confirmation_token')
  uncomment_lines(devise_migration, 'add_index :users, :unlock_token')

  inject_into_file(
    "config/environments/development.rb",
    "config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }\n",
    after: "config.action_mailer.delivery_method = :letter_opener\n",
  )
end
configure_generators() click to toggle source
# File lib/gimbal/app_builder.rb, line 68
    def configure_generators
      config = <<-RUBY

    config.generators do |generate|
      generate.helper false
      generate.javascript_engine false
      generate.request_specs false
      generate.routing_specs false
      generate.skip_routes true
      generate.stylesheets false
      generate.test_framework :rspec
      generate.view_specs false
    end

      RUBY

      inject_into_class 'config/application.rb', 'Application', config
    end
configure_i18n_for_missing_translations() click to toggle source
# File lib/gimbal/app_builder.rb, line 91
def configure_i18n_for_missing_translations
  raise_on_missing_translations_in("development")
  raise_on_missing_translations_in("test")
end
configure_i18n_for_test_environment() click to toggle source
# File lib/gimbal/app_builder.rb, line 96
def configure_i18n_for_test_environment
  copy_file "i18n.rb", "spec/support/i18n.rb"
end
configure_i18n_tasks() click to toggle source
# File lib/gimbal/app_builder.rb, line 100
def configure_i18n_tasks
  run "cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/"
  copy_file "config_i18n_tasks.yml", "config/i18n-tasks.yml"
end
configure_rspec() click to toggle source
# File lib/gimbal/app_builder.rb, line 155
def configure_rspec
  remove_file "spec/rails_helper.rb"
  remove_file "spec/spec_helper.rb"
  copy_file "rails_helper.rb", "spec/rails_helper.rb"
  copy_file "spec_helper.rb", "spec/spec_helper.rb"
end
configure_spec_support_features() click to toggle source
# File lib/gimbal/app_builder.rb, line 109
def configure_spec_support_features
  empty_directory_with_keep_file 'spec/features'
  empty_directory_with_keep_file 'spec/factories'
  empty_directory_with_keep_file 'spec/support/features'
end
configure_time_formats() click to toggle source
# File lib/gimbal/app_builder.rb, line 239
def configure_time_formats
  remove_file "config/locales/en.yml"
  template "config_locales_en.yml.erb", "config/locales/en.yml"
end
create_analytics_partial() click to toggle source
# File lib/gimbal/app_builder.rb, line 210
def create_analytics_partial
  copy_file '_analytics.html.haml',
            'app/views/application/_analytics.html.haml'
end
create_application_layout() click to toggle source
# File lib/gimbal/app_builder.rb, line 215
def create_application_layout
  remove_file 'app/views/layouts/application.html.erb'
  template 'gimbal_layout.html.haml.erb',
           'app/views/layouts/application.html.haml'
end
create_database() click to toggle source
# File lib/gimbal/app_builder.rb, line 221
def create_database
  bundle_command 'exec rake db:create db:migrate'
end
create_github_repo(repo_name) click to toggle source
# File lib/gimbal/app_builder.rb, line 244
def create_github_repo(repo_name)
  run "hub create #{repo_name}"
end
create_partials_directory() click to toggle source
# File lib/gimbal/app_builder.rb, line 197
def create_partials_directory
  empty_directory 'app/views/application'
end
create_shared_flashes() click to toggle source
# File lib/gimbal/app_builder.rb, line 201
def create_shared_flashes
  copy_file "_flashes.html.haml", "app/views/application/_flashes.html.haml"
  copy_file "flashes_helper.rb", "app/helpers/flashes_helper.rb"
end
create_shared_javascripts() click to toggle source
# File lib/gimbal/app_builder.rb, line 206
def create_shared_javascripts
  copy_file '_javascript.html.haml', 'app/views/application/_javascript.html.haml'
end
enable_database_cleaner() click to toggle source
# File lib/gimbal/app_builder.rb, line 136
def enable_database_cleaner
  copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
end
enable_devise_gem() click to toggle source
# File lib/gimbal/app_builder.rb, line 87
def enable_devise_gem
  enable_gem 'devise'
end
generate_devise_model() click to toggle source
# File lib/gimbal/app_builder.rb, line 166
def generate_devise_model
  bundle_command 'exec rails generate devise User'
  bundle_command 'exec rails generate devise:views'
end
generate_factories_file() click to toggle source
# File lib/gimbal/app_builder.rb, line 144
def generate_factories_file
  copy_file "factories.rb", "spec/factories.rb"
end
generate_homepage() click to toggle source
# File lib/gimbal/app_builder.rb, line 229
def generate_homepage
  bundle_command 'exec rails generate controller pages homepage'

  inject_into_file(
    'config/routes.rb',
    "\n  root to: 'pages#homepage'",
    after: 'devise_for :users'
  )
end
generate_rspec() click to toggle source
# File lib/gimbal/app_builder.rb, line 128
def generate_rspec
  bundle_command 'exec rails generate rspec:install'
end
gitignore_files() click to toggle source
# File lib/gimbal/app_builder.rb, line 119
def gitignore_files
  remove_file '.gitignore'
  copy_file 'gimbal_gitignore', '.gitignore'
  %w(app/views/pages spec/lib spec/controllers spec/helpers spec/support/matchers spec/support/mixins spec/support/shared_examples).each do |dir|
    run "mkdir #{dir}"
    run "touch #{dir}/.keep"
  end
end
init_git() click to toggle source
# File lib/gimbal/app_builder.rb, line 17
def init_git
  run 'git init'
end
install_devise() click to toggle source
# File lib/gimbal/app_builder.rb, line 162
def install_devise
  bundle_command 'exec rails generate devise:install'
end
migrate_database() click to toggle source
# File lib/gimbal/app_builder.rb, line 225
def migrate_database
  bundle_command 'exec rake db:migrate'
end
provide_shoulda_matchers_config() click to toggle source
# File lib/gimbal/app_builder.rb, line 148
def provide_shoulda_matchers_config
  copy_file(
      "shoulda_matchers_config_rspec.rb",
      "spec/support/shoulda_matchers.rb"
  )
end
raise_on_delivery_errors() click to toggle source
# File lib/gimbal/app_builder.rb, line 29
def raise_on_delivery_errors
  replace_in_file 'config/environments/development.rb',
                  'raise_delivery_errors = false', 'raise_delivery_errors = true'
end
raise_on_missing_assets_in_test() click to toggle source
# File lib/gimbal/app_builder.rb, line 21
def raise_on_missing_assets_in_test
  inject_into_file(
      "config/environments/test.rb",
      "\n  config.assets.raise_runtime_errors = true",
      after: "Rails.application.configure do",
  )
end
raise_on_unpermitted_parameters() click to toggle source
# File lib/gimbal/app_builder.rb, line 60
    def raise_on_unpermitted_parameters
      config = <<-RUBY
    config.action_controller.action_on_unpermitted_parameters = :raise
      RUBY

      inject_into_class "config/application.rb", "Application", config
    end
replace_default_puma_configuration() click to toggle source
# File lib/gimbal/app_builder.rb, line 132
def replace_default_puma_configuration
  copy_file 'puma.rb', 'config/puma.rb', force: true
end
replace_gemfile() click to toggle source
# File lib/gimbal/app_builder.rb, line 8
def replace_gemfile
  remove_file 'Gemfile'
  template 'Gemfile.erb', 'Gemfile'
end
set_dev_mail_delivery_method() click to toggle source
# File lib/gimbal/app_builder.rb, line 34
def set_dev_mail_delivery_method
  inject_into_file(
      "config/environments/development.rb",
      "\n  config.action_mailer.delivery_method = :letter_opener",
      after: "config.action_mailer.raise_delivery_errors = true",
  )
end
set_ruby_to_version_being_used() click to toggle source
# File lib/gimbal/app_builder.rb, line 13
def set_ruby_to_version_being_used
  create_file '.ruby-version', "#{Gimbal::RUBY_VERSION}\n"
end
set_up_factory_girl_for_rspec() click to toggle source
# File lib/gimbal/app_builder.rb, line 140
def set_up_factory_girl_for_rspec
  copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
end
setup_bundler_audit() click to toggle source
# File lib/gimbal/app_builder.rb, line 267
def setup_bundler_audit
  copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
  append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
end
setup_default_rake_task() click to toggle source
# File lib/gimbal/app_builder.rb, line 252
    def setup_default_rake_task
      append_file 'Rakefile' do
        <<-EOS
task(:default).clear
task default: [:spec]
if defined? RSpec
  task(:spec).clear
  RSpec::Core::RakeTask.new(:spec) do |t|
    t.verbose = false
  end
end
        EOS
      end
    end
setup_spring() click to toggle source
# File lib/gimbal/app_builder.rb, line 248
def setup_spring
  bundle_command "exec spring binstub --all"
end
use_mysql_config_template() click to toggle source
# File lib/gimbal/app_builder.rb, line 105
def use_mysql_config_template
  template 'mysql_database.yml.erb', 'config/database.yml', force: true
end

Private Instance Methods

enable_gem(gem_name) click to toggle source
# File lib/gimbal/app_builder.rb, line 274
def enable_gem(gem_name)
  uncomment_lines('Gemfile', "gem \"#{gem_name}\"")
end
raise_on_missing_translations_in(environment) click to toggle source
# File lib/gimbal/app_builder.rb, line 278
def raise_on_missing_translations_in(environment)
  config = 'config.action_view.raise_on_missing_translations = true'

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