Merge pull request #30219 from yhirano55/fix_app_generator_api_options

Refactor `--api` option of the app generator
This commit is contained in:
Rafael França 2017-08-14 18:11:46 -04:00 committed by GitHub
commit bef68862ae
7 changed files with 48 additions and 29 deletions

@ -1,2 +1,2 @@
class ApplicationController < ActionController::<%= options[:api] ? "API" : "Base" %>
class ApplicationController < ActionController::<%= options.api? ? "API" : "Base" %>
end

@ -15,12 +15,12 @@ chdir APP_ROOT do
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
<% unless options[:skip_yarn] -%>
<% unless options.skip_yarn? -%>
# Install JavaScript dependencies if using Yarn
# system('bin/yarn')
<% end -%>
<% unless options.skip_active_record -%>
<% unless options.skip_active_record? -%>
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')

@ -15,7 +15,7 @@ chdir APP_ROOT do
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
<% unless options.skip_active_record -%>
<% unless options.skip_active_record? -%>
puts "\n== Updating database =="
system! 'bin/rails db:migrate'

@ -31,7 +31,7 @@ class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
<%- if options[:api] -%>
<%- if options.api? -%>
# Only loads a smaller set of middleware suitable for API only apps.
# Middleware like session, flash, cookies can be added back manually.

@ -24,13 +24,13 @@
# Ignore uploaded files in development
/storage/*
<% unless options[:skip_yarn] -%>
<% unless options.skip_yarn? -%>
/node_modules
/yarn-error.log
<% end -%>
<% unless options[:api] -%>
<% unless options.api? -%>
/public/assets
<% end -%>
.byebug_history

@ -35,26 +35,26 @@ def test_skeleton_is_created
def test_api_modified_files
run_generator
assert_file ".gitignore" do |content|
assert_no_match(/\/public\/asserts/, content)
end
assert_file "Gemfile" do |content|
assert_no_match(/gem 'coffee-rails'/, content)
assert_no_match(/gem 'sass-rails'/, content)
assert_no_match(/gem 'web-console'/, content)
assert_no_match(/gem 'capybara'/, content)
assert_no_match(/gem 'selenium-webdriver'/, content)
assert_match(/# gem 'jbuilder'/, content)
assert_match(/# gem 'rack-cors'/, content)
end
assert_file "config/application.rb" do |content|
assert_match(/config.api_only = true/, content)
end
assert_file "config/initializers/cors.rb"
assert_file "config/initializers/wrap_parameters.rb"
assert_file "config/application.rb", /config\.api_only = true/
assert_file "app/controllers/application_controller.rb", /ActionController::API/
end
def test_generator_if_skip_action_cable_is_given
run_generator [destination_root, "--skip-action-cable"]
run_generator [destination_root, "--api", "--skip-action-cable"]
assert_file "config/application.rb", /#\s+require\s+["']action_cable\/engine["']/
assert_no_file "config/cable.yml"
assert_no_file "app/channels"
@ -87,20 +87,49 @@ def test_app_update_does_not_generate_unnecessary_bin_files
private
def default_files
files = %W(
.gitignore
%w(.gitignore
.ruby-version
README.md
Gemfile
Rakefile
config.ru
app/channels
app/controllers
app/mailers
app/models
app/views/layouts
app/views/layouts/mailer.html.erb
app/views/layouts/mailer.text.erb
bin/bundle
bin/rails
bin/rake
bin/setup
bin/update
config/application.rb
config/boot.rb
config/cable.yml
config/environment.rb
config/environments
config/environments/development.rb
config/environments/production.rb
config/environments/test.rb
config/initializers
config/initializers/application_controller_renderer.rb
config/initializers/backtrace_silencers.rb
config/initializers/cors.rb
config/initializers/filter_parameter_logging.rb
config/initializers/inflections.rb
config/initializers/mime_types.rb
config/initializers/wrap_parameters.rb
config/locales
config/locales/en.yml
config/puma.rb
config/routes.rb
config/secrets.yml
config/spring.rb
config/storage.yml
db
db/seeds.rb
lib
lib/tasks
log
@ -111,8 +140,6 @@ def default_files
tmp
vendor
)
files.concat %w(bin/bundle bin/rails bin/rake)
files
end
def skipped_files
@ -130,7 +157,7 @@ def skipped_files
public/500.html
public/apple-touch-icon-precomposed.png
public/apple-touch-icon.png
public/favicon.icon
public/favicon.ico
package.json
)
end

@ -537,14 +537,6 @@ def test_does_not_generate_system_test_files_if_skip_system_test_is_given
end
end
def test_generator_if_api_is_given
run_generator [destination_root, "--api"]
assert_file "Gemfile" do |content|
assert_no_match(/capybara/, content)
assert_no_match(/selenium-webdriver/, content)
end
end
def test_inclusion_of_javascript_runtime
run_generator
if defined?(JRUBY_VERSION)