class TractorBeam::AppBuilder
Public Instance Methods
add_scripts_to_package_json()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 101 def add_scripts_to_package_json scripts = <<-SCRIPTS "scripts": { "lint-staged": "$(yarn bin)/lint-staged" }, "lint-staged": { "config/webpack/**/*.js": [ "prettier --write", "eslint", "git add" ], "frontend/**/*.js": [ "prettier --write", "eslint", "git add" ], "frontend/**/*.css": [ "prettier --write", "stylelint --fix", "git add" ] }, "pre-commit": [ "lint-staged" ], SCRIPTS insert_into_file "package.json", scripts, after: "},\n" end
boot_file()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 29 def boot_file template "boot_rb", "config/boot.rb", force: true end
component_generator()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 152 def component_generator empty_directory "lib/generators" template "component_generator", "lib/generators/component_generator.rb" end
configure_generators()
click to toggle source
Generators
# File lib/tractor_beam/app_builder.rb, line 135 def configure_generators config = <<-RUBY config.generators do |g| g.helper false g.javascripts false g.request_specs false g.routing_specs false g.stylesheets false g.test_framework :rspec g.view_specs false g.channel assets: false end RUBY inject_into_class "config/application.rb", "Application", config end
create_application_layout()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 56 def create_application_layout template "tractor_beam_layout.html.erb.erb", "app/views/layouts/application.html.erb", force: true end
customize_rakefile()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 78 def customize_rakefile insert_into_file "Rakefile", %{\nRake::Task.define_task("assets:precompile" => ["yarn:install", "webpacker:compile"])\n}, after: "require_relative 'config/application'\n" end
customize_webpacker_yml()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 66 def customize_webpacker_yml say "Customizing webpacker.yml" gsub_file "config/webpacker.yml", "source_path: app/javascript", "source_path: frontend" end
gemfile()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 13 def gemfile template "Gemfile.erb", "Gemfile" end
gitignore()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 9 def gitignore copy_file "tractor_beam_gitignore", ".gitignore" end
prepend_view_path_to_application_controller()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 72 def prepend_view_path_to_application_controller insert_into_file "app/controllers/application_controller.rb", " prepend_view_path Rails.root.join(\"frontend\")\n", after: "protect_from_forgery with: :exception\n" end
procfile()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 25 def procfile template "Procfile", "Procfile" end
procfile_dev()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 21 def procfile_dev template "Procfile.dev", "Procfile.dev" end
provide_setup_script()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 33 def provide_setup_script template "bin_setup", "bin/setup", force: true run "chmod a+x bin/setup" end
readme()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 5 def readme template "README.md.erb", "README.md" end
remove_legacy_assets_folder()
click to toggle source
Component Based frontend
# File lib/tractor_beam/app_builder.rb, line 40 def remove_legacy_assets_folder remove_dir "app/assets" end
set_ruby_version()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 17 def set_ruby_version create_file ".ruby-version", "#{TractorBeam::RUBY_VERSION}\n", force: true end
setup_actioncable()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 166 def setup_actioncable return if options[:skip_action_cable] say "Installing actioncable" run "yarn add actioncable" empty_directory "frontend/client" template "cable_js", "frontend/client/cable.js", force: true end
setup_browserlist_rc()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 62 def setup_browserlist_rc template "browserlistrc", ".browserlistrc" end
setup_js_linter()
click to toggle source
Linting
# File lib/tractor_beam/app_builder.rb, line 86 def setup_js_linter run "yarn add --dev babel-eslint eslint eslint-config-airbnb-base " \ "eslint-config-prettier eslint-import-resolver-webpack " \ "eslint-plugin-import eslint-plugin-prettier " \ "lint-staged pre-commit prettier" template "eslintrc", ".eslintrc" end
setup_rails_ujs()
click to toggle source
Default Rails Features
# File lib/tractor_beam/app_builder.rb, line 160 def setup_rails_ujs say "Installing rails-ujs" run "yarn add rails-ujs" end
setup_root_frontend_folder()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 44 def setup_root_frontend_folder empty_directory "frontend" inside "frontend" do directory "packs" empty_directory "init" end template "frontend/init/index.css", "frontend/init/index.css", force: true template "frontend/init/index.js.erb", "frontend/init/index.js", force: true end
setup_rspec()
click to toggle source
Test environment
# File lib/tractor_beam/app_builder.rb, line 184 def setup_rspec run "bin/rails g rspec:install" template "rails_helper", "spec/rails_helper.rb", force: true end
setup_style_linter()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 95 def setup_style_linter run "yarn add --dev stylelint stylelint-config-standard" template "stylelintrc", ".stylelintrc" end
setup_turbolinks()
click to toggle source
# File lib/tractor_beam/app_builder.rb, line 176 def setup_turbolinks return if options[:skip_turbolinks] run "yarn add turbolinks" end