123456789_123456789_123456789_123456789_123456789_

Class: Rails::AppBuilder

Relationships & Source Files
Inherits: Object
Defined in: railties/lib/rails/generators/rails/app/app_generator.rb

Overview

The application builder allows you to override elements of the application generator without being forced to reverse the operations of the default generator.

This allows you to override entire operations, like the creation of the Gemfile, README, or JavaScript files, without needing to know exactly what those operations do so you can create another template action.

Instance Method Summary

Instance Method Details

#app

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 56

def app
  directory 'app'

  keep_file  'app/assets/images'
  keep_file  'app/mailers'
  keep_file  'app/models'

  keep_file  'app/controllers/concerns'
  keep_file  'app/models/concerns'
end

#bin

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 67

def bin
  directory "bin" do |content|
    "#{shebang}\n" + content
  end
  chmod "bin", 0755 & ~File.umask, verbose: false
end

#config

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 74

def config
  empty_directory "config"

  inside "config" do
    template "routes.rb"
    template "application.rb"
    template "environment.rb"
    template "secrets.yml"

    directory "environments"
    directory "initializers"
    directory "locales"
  end
end

#config_when_updating

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 89

def config_when_updating
  cookie_serializer_config_exist = File.exist?('config/initializers/cookies_serializer.rb')
  to_time_preserves_timezone_config_exist = File.exist?('config/initializers/to_time_preserves_timezone.rb')

  config

  unless cookie_serializer_config_exist
    gsub_file 'config/initializers/cookies_serializer.rb', /json/, 'marshal'
  end

  unless to_time_preserves_timezone_config_exist
    remove_file 'config/initializers/to_time_preserves_timezone.rb'
  end
end

#configru

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 48

def configru
  template "config.ru"
end

#database_yml

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 104

def database_yml
  template "config/databases/#{options[:database]}.yml", "config/database.yml"
end

#db

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 108

def db
  directory "db"
end

#gemfile

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 44

def gemfile
  template "Gemfile"
end

#gitignore

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 52

def gitignore
  template "gitignore", ".gitignore"
end

#lib

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 112

def lib
  empty_directory 'lib'
  empty_directory_with_keep_file 'lib/tasks'
  empty_directory_with_keep_file 'lib/assets'
end

#log

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 118

def log
  empty_directory_with_keep_file 'log'
end

#public_directory

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 122

def public_directory
  directory "public", "public", recursive: false
end

#rakefile

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 36

def rakefile
  template "Rakefile"
end

#readme

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 40

def readme
  copy_file "README.rdoc", "README.rdoc"
end

#test

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 126

def test
  empty_directory_with_keep_file 'test/fixtures'
  empty_directory_with_keep_file 'test/controllers'
  empty_directory_with_keep_file 'test/mailers'
  empty_directory_with_keep_file 'test/models'
  empty_directory_with_keep_file 'test/helpers'
  empty_directory_with_keep_file 'test/integration'

  template 'test/test_helper.rb'
end

#tmp

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 137

def tmp
  empty_directory "tmp/cache"
  empty_directory "tmp/cache/assets"
end

#vendor

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 142

def vendor
  vendor_javascripts
  vendor_stylesheets
end

#vendor_javascripts

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 147

def vendor_javascripts
  unless options[:skip_javascript]
    empty_directory_with_keep_file 'vendor/assets/javascripts'
  end
end

#vendor_stylesheets

[ GitHub ]

  
# File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 153

def vendor_stylesheets
  empty_directory_with_keep_file 'vendor/assets/stylesheets'
end