class Bluebase_api::AppBuilder
Public Instance Methods
add_application_yml()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 209 def add_application_yml template "config/application.yml.sample.erb", "config/application.yml.sample" template "config/application.yml.sample.erb", "config/application.yml" replace_in_file "config/application.yml", "# Copy this file into application.yml and change env variables as necessary.", "# Change env variables as necessary." end
add_base_controller()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 57 def add_base_controller template "app/controllers/api/base_controller.rb", "app/controllers/api/base_controller.rb" end
add_database_yml()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 218 def add_database_yml template "config/database.yml.sample.erb", "config/database.yml.sample" remove_file "config/database.yml" template "config/database.yml.sample.erb", "config/database.yml" replace_in_file "config/database.yml", "# and then copy the file into database.yml", "" end
add_devise_config()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 195 def add_devise_config copy_file "config/devise.rb", "config/initializers/devise.rb" end
add_dot_rspec()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 40 def add_dot_rspec copy_file ".rspec", ".rspec" end
add_envrc()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 17 def add_envrc copy_file ".envrc", ".envrc" end
add_figaro_config()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 199 def add_figaro_config copy_file "config/figaro.rb", "config/initializers/figaro.rb" end
add_guardfile()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 36 def add_guardfile copy_file "Guardfile", "Guardfile" end
add_heroku_addons()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 319 def add_heroku_addons config = <<-SHELL # Heroku addons for production heroku addons:add mandrill --app #{heroku_app_name :production} heroku addons:add newrelic:stark --app #{heroku_app_name :production} heroku addons:add rollbar --app #{heroku_app_name :production} SHELL append_file "bin/setup", config end
add_i18n_tasks_yml()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 227 def add_i18n_tasks_yml file = "config/i18n-tasks.yml" copy_file file, file end
add_rubocop_and_hound_config()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 26 def add_rubocop_and_hound_config copy_file ".hound.yml", ".hound.yml" copy_file ".rubocop.yml", ".rubocop.yml" end
add_rvm_config()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 31 def add_rvm_config create_file ".ruby-gemset", "#{app_path}\n" create_file ".ruby-version", "#{Bluebase_api::RUBY_VERSION}\n" end
add_serializers_directory()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 67 def add_serializers_directory empty_directory_with_keep_file "app/serializers" end
add_setup_to_bin()
click to toggle source
bin/ directory files
# File lib/bluebase_api/app_builder.rb, line 99 def add_setup_to_bin copy_file "bin/setup", "bin/setup" run "chmod a+x bin/setup" end
add_smtp_settings()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 238 def add_smtp_settings file = "config/smtp.rb" copy_file file, file end
add_spec_dirs()
click to toggle source
spec/ directory files
# File lib/bluebase_api/app_builder.rb, line 252 def add_spec_dirs empty_directory "spec" empty_directory_with_keep_file "spec/features" empty_directory_with_keep_file "spec/factories" end
add_staging_environment()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 191 def add_staging_environment template "config/staging.rb.erb", "config/environments/staging.rb" end
configure_actionmailer()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 268 def configure_actionmailer copy_file "spec/action_mailer.rb", "spec/support/action_mailer.rb" end
configure_api_directory()
click to toggle source
Only front-end changes were contained here, so removed for API app.
# File lib/bluebase_api/app_builder.rb, line 49 def configure_api_directory empty_directory "app/controllers/api" end
configure_application_environment()
click to toggle source
config/ directory files
# File lib/bluebase_api/app_builder.rb, line 121 def configure_application_environment 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 config = <<-RUBY config.active_record.default_timezone = :utc RUBY inject_into_class "config/application.rb", "Application", config config = <<-RUBY config.i18n.enforce_available_locales = true RUBY inject_into_class "config/application.rb", "Application", config config = <<-RUBY config.action_controller.action_on_unpermitted_parameters = :raise RUBY inject_into_class "config/application.rb", "Application", config end
configure_database_cleaner()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 276 def configure_database_cleaner copy_file "spec/database_cleaner_and_factory_girl_lint.rb", "spec/support/database_cleaner_and_factory_girl_lint.rb" end
configure_development_environment()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 154 def configure_development_environment replace_in_file "config/environments/development.rb", "raise_delivery_errors = false", "raise_delivery_errors = true" inject_into_file "config/environments/development.rb", " # Don't send emails in development\n config.action_mailer.perform_deliveries = false", after: "raise_delivery_errors = true\n" raise_on_missing_translations_in "development" action_mailer_host "development", "localhost:3000" end
configure_factorygirl()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 264 def configure_factorygirl copy_file "spec/factory_girl.rb", "spec/support/factory_girl.rb" end
configure_i18n()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 272 def configure_i18n copy_file "spec/i18n.rb", "spec/support/i18n.rb" end
configure_production_environment()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 168 def configure_production_environment 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" config = <<-RUBY # Enable deflate / gzip compression of controller-generated responses config.middleware.use Rack::Deflater RUBY inject_into_file "config/environments/production.rb", config, after: "config.serve_static_assets = false\n" action_mailer_host "production", "please-change-me.com" end
configure_rspec()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 258 def configure_rspec %w(spec/rails_helper.rb spec/spec_helper.rb).each do |file| copy_file file, file end end
configure_test_environment()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 164 def configure_test_environment raise_on_missing_translations_in "test" end
configure_v1_directory()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 53 def configure_v1_directory empty_directory_with_keep_file "app/controllers/api/v1" end
create_github_repo(repo_name)
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 288 def create_github_repo(repo_name) path_addition = override_path_for_tests run "#{path_addition} hub create #{repo_name}" end
create_heroku_apps()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 293 def create_heroku_apps run_heroku "create #{heroku_app_name :production}", "production" run_heroku "create #{heroku_app_name :staging}", "staging" run_heroku "config:add RACK_ENV=staging RAILS_ENV=staging", "staging" end
git_init()
click to toggle source
git/heroku setup
# File lib/bluebase_api/app_builder.rb, line 284 def git_init run 'git init' end
readme()
click to toggle source
Root directory files
# File lib/bluebase_api/app_builder.rb, line 8 def readme template "README.md.erb", "README.md" end
remove_app_assets_directory()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 71 def remove_app_assets_directory run "rm -rf app/assets" end
remove_app_views_directory()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 75 def remove_app_views_directory run "rm -rf app/views" end
remove_html_files()
click to toggle source
public/ directory files
# File lib/bluebase_api/app_builder.rb, line 89 def remove_html_files remove_file "public/404.html" remove_file "public/422.html" remove_file "public/500.html" run "rm -rf public/favicon.ico" end
remove_lib_assets_directory()
click to toggle source
lib/ directory files
# File lib/bluebase_api/app_builder.rb, line 107 def remove_lib_assets_directory run "rm -rf lib/assets" end
remove_tmp_assets_directory()
click to toggle source
tmp/ directory files
# File lib/bluebase_api/app_builder.rb, line 114 def remove_tmp_assets_directory run "rm -rf tmp/cache" empty_directory_with_keep_file "tmp/cache" end
remove_vendor_assets_directories()
click to toggle source
vendor directory files
# File lib/bluebase_api/app_builder.rb, line 82 def remove_vendor_assets_directories run "rm -rf vendor" empty_directory_with_keep_file "vendor" end
replace_application_controller()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 61 def replace_application_controller file = "app/controllers/application_controller.rb" remove_file file template "app/controllers/bluebase_api_application_controller.rb", file end
replace_en_yml()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 203 def replace_en_yml file = "config/locales/en.yml" remove_file file template "config/en.yml.erb", file end
replace_gemfile()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 12 def replace_gemfile remove_file "Gemfile" template "Gemfile.erb", "Gemfile" end
replace_gitignore()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 21 def replace_gitignore remove_file ".gitignore" copy_file "bluebase_api_gitignore", ".gitignore" end
replace_routes_rb()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 243 def replace_routes_rb file = "config/routes.rb" remove_file file template "config/bluebase_api_routes.rb", file end
replace_secrets_yml()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 232 def replace_secrets_yml file = "config/secrets.yml" remove_file file copy_file "config/bluebase_api_secrets.yml", file end
set_heroku_env_variables()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 310 def set_heroku_env_variables config = <<-SHELL # Sets Heroku env variables figaro heroku:set -a #{heroku_app_name :production} -e production figaro heroku:set -a #{heroku_app_name :staging} -e production SHELL append_file "bin/setup", config end
set_heroku_remotes()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 299 def set_heroku_remotes remotes = <<-SHELL # Set up the staging and production apps. #{join_heroku_app :staging} #{join_heroku_app :production} SHELL append_file "bin/setup", remotes end
set_memory_management_variable()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 330 def set_memory_management_variable %w(staging production).each do |environment| run_heroku "config:add NEW_RELIC_AGGRESSIVE_KEEPALIVE=1", environment end end
Private Instance Methods
generate_secret()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 368 def generate_secret SecureRandom.hex(64) end
heroku_app_name(environment)
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 352 def heroku_app_name(environment) "#{app_name.gsub '_', '-'}-#{environment}" end
join_heroku_app(environment)
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 356 def join_heroku_app(environment) name = heroku_app_name environment <<-SHELL if heroku join --app #{name} &> /dev/null; then git remote add #{environment} git@heroku.com:#{name}.git || true printf 'You are a collaborator on the "#{name}" Heroku app\n' else printf 'Ask for access to the "#{name}" Heroku app\n' fi SHELL end
override_path_for_tests()
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 372 def override_path_for_tests if ENV['TESTING'] support_bin = File.expand_path(File.join('..', '..', 'spec', 'fakes', 'bin')) "PATH=#{support_bin}:$PATH" end end
raise_on_missing_translations_in(environment)
click to toggle source
Helper methods
# File lib/bluebase_api/app_builder.rb, line 341 def raise_on_missing_translations_in(environment) config = "config.action_view.raise_on_missing_translations = true" uncomment_lines("config/environments/#{environment}.rb", config) end
run_heroku(command, environment)
click to toggle source
# File lib/bluebase_api/app_builder.rb, line 347 def run_heroku(command, environment) path_addition = override_path_for_tests run "#{path_addition} heroku #{command} --remote #{environment}" end