class DiscoApp::Generators::ReactGenerator

Public Instance Methods

bundle_install() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 19
def bundle_install
  Bundler.with_clean_env do
    run 'bundle install'
  end
end
configure_api() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 82
def configure_api
  directory 'app/controllers/embedded'
end
configure_api_response() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 95
def configure_api_response
  copy_file 'app/models/api_response.rb'
end
configure_application() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 25
def configure_application
  application 'config.middleware.use OliveBranch::Middleware'
  application '# Camel-case to underscore transformation for JSON requests.'

  copy_file 'config/initializers/mime_types.rb'
  copy_file 'config/initializers/omniauth.rb'
  template 'config/initializers/version.rb.tt', 'config/initializers/version.rb'

  %w[.env .env.local].each do |file|
    append_to_file file, 'BUGSNAG_API_KEY=00000000'
  end
end
configure_gemfile() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 11
def configure_gemfile
  gem 'fast_jsonapi'
  gem 'multi_json'
  gem 'oj'
  gem 'olive_branch'
  gem 'webpacker'
end
configure_react() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 99
def configure_react
  directory 'app/webpack/javascripts'
  directory 'app/webpack/stylesheets'
  copy_file 'app/webpack/packs/embedded.js'
  remove_file 'app/webpack/packs/application.js'
end
configure_serializers() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 91
def configure_serializers
  directory 'app/serializers'
end
configure_views() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 86
def configure_views
  directory 'app/views/embedded'
  copy_file 'app/views/layouts/embedded.html.erb'
end
configure_webpack() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 64
def configure_webpack
  %w[.eslintignore .eslintrc .prettierrc babel.config.js postcss.config.js].each do |file|
    copy_file "root/#{file}", file
  end

  template 'root/package.json.tt', 'package.json'

  copy_file 'config/webpacker.yml'
  copy_file 'config/webpack/staging.js'
  copy_file 'config/webpack/test.js'

  run "if [ -d 'app/javascript' ]; then mv -f app/javascript app/webpack; fi"
end
install_webpacker() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 60
def install_webpacker
  rake 'webpacker:install'
end
prepare_application() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 7
def prepare_application
  copy_file 'root/VERSION', 'VERSION'
end
update_routes() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 38
      def update_routes
        routes = <<-ROUTES.gsub(/^ {8}/, '')
          # Embedded React routes.
          root to: 'embedded/home#index'

          # Embedded API.
          namespace :embedded do
            namespace :api, constraints: { format: :json }, defaults: { format: :json } do
              resource :shop, only: [:show]

              resources :users, only: [] do
                get :current, on: :collection
              end
            end
          end
        ROUTES

        route routes

        comment_lines 'config/routes.rb', "root to: 'home#index'"
      end
yarn_install() click to toggle source
# File lib/generators/disco_app/react/react_generator.rb, line 78
def yarn_install
  run 'yarn install'
end