Skip to content

Commit

Permalink
Add --skip-active-storage and do so automatically when --skip-active-…
Browse files Browse the repository at this point in the history
…record is used

Closes rails#30102

Revert part 787fe90

--skip-active-storage pass throughs `rails plugin new`

Add changelog entry about default initialization of Active Storage
  • Loading branch information
bogdanvlviv committed Nov 6, 2017
1 parent aa6bcbb commit 4a835aa
Show file tree
Hide file tree
Showing 20 changed files with 270 additions and 65 deletions.
6 changes: 6 additions & 0 deletions railties/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
* `rails new` and `rails plugin new` get `Active Storage` by default.
Add ability to skip `Active Storage` with `--skip-active-storage`
and do so automatically when `--skip-active-record` is used.

*bogdanvlviv*

* Gemfile for new apps: upgrade redis-rb from ~> 3.0 to 4.0.

*Jeremy Daer*
Expand Down
2 changes: 1 addition & 1 deletion railties/lib/rails/all.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

%w(
active_record/railtie
active_storage/engine
action_controller/railtie
action_view/railtie
action_mailer/railtie
active_job/railtie
action_cable/engine
active_storage/engine
rails/test_unit/railtie
sprockets/railtie
).each do |railtie|
Expand Down
11 changes: 6 additions & 5 deletions railties/lib/rails/app_updater.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ def app_generator
private
def generator_options
options = { api: !!Rails.application.config.api_only, update: true }
options[:skip_active_record] = !defined?(ActiveRecord::Railtie)
options[:skip_action_mailer] = !defined?(ActionMailer::Railtie)
options[:skip_action_cable] = !defined?(ActionCable::Engine)
options[:skip_sprockets] = !defined?(Sprockets::Railtie)
options[:skip_puma] = !defined?(Puma)
options[:skip_active_record] = !defined?(ActiveRecord::Railtie)
options[:skip_active_storage] = !defined?(ActiveStorage::Engine) || !defined?(ActiveRecord::Railtie)
options[:skip_action_mailer] = !defined?(ActionMailer::Railtie)
options[:skip_action_cable] = !defined?(ActionCable::Engine)
options[:skip_sprockets] = !defined?(Sprockets::Railtie)
options[:skip_puma] = !defined?(Puma)
options
end
end
Expand Down
123 changes: 74 additions & 49 deletions railties/lib/rails/generators/app_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,75 +26,78 @@ def self.strict_args_position
end

def self.add_shared_options_for(name)
class_option :template, type: :string, aliases: "-m",
desc: "Path to some #{name} template (can be a filesystem path or URL)"
class_option :template, type: :string, aliases: "-m",
desc: "Path to some #{name} template (can be a filesystem path or URL)"

class_option :database, type: :string, aliases: "-d", default: "sqlite3",
desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
class_option :database, type: :string, aliases: "-d", default: "sqlite3",
desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"

class_option :skip_yarn, type: :boolean, default: false,
desc: "Don't use Yarn for managing JavaScript dependencies"
class_option :skip_yarn, type: :boolean, default: false,
desc: "Don't use Yarn for managing JavaScript dependencies"

class_option :skip_gemfile, type: :boolean, default: false,
desc: "Don't create a Gemfile"
class_option :skip_gemfile, type: :boolean, default: false,
desc: "Don't create a Gemfile"

class_option :skip_git, type: :boolean, aliases: "-G", default: false,
desc: "Skip .gitignore file"
class_option :skip_git, type: :boolean, aliases: "-G", default: false,
desc: "Skip .gitignore file"

class_option :skip_keeps, type: :boolean, default: false,
desc: "Skip source control .keep files"
class_option :skip_keeps, type: :boolean, default: false,
desc: "Skip source control .keep files"

class_option :skip_action_mailer, type: :boolean, aliases: "-M",
default: false,
desc: "Skip Action Mailer files"
class_option :skip_action_mailer, type: :boolean, aliases: "-M",
default: false,
desc: "Skip Action Mailer files"

class_option :skip_active_record, type: :boolean, aliases: "-O", default: false,
desc: "Skip Active Record files"
class_option :skip_active_record, type: :boolean, aliases: "-O", default: false,
desc: "Skip Active Record files"

class_option :skip_puma, type: :boolean, aliases: "-P", default: false,
desc: "Skip Puma related files"
class_option :skip_active_storage, type: :boolean, default: false,
desc: "Skip Active Storage files"

class_option :skip_action_cable, type: :boolean, aliases: "-C", default: false,
desc: "Skip Action Cable files"
class_option :skip_puma, type: :boolean, aliases: "-P", default: false,
desc: "Skip Puma related files"

class_option :skip_sprockets, type: :boolean, aliases: "-S", default: false,
desc: "Skip Sprockets files"
class_option :skip_action_cable, type: :boolean, aliases: "-C", default: false,
desc: "Skip Action Cable files"

class_option :skip_spring, type: :boolean, default: false,
desc: "Don't install Spring application preloader"
class_option :skip_sprockets, type: :boolean, aliases: "-S", default: false,
desc: "Skip Sprockets files"

class_option :skip_listen, type: :boolean, default: false,
desc: "Don't generate configuration that depends on the listen gem"
class_option :skip_spring, type: :boolean, default: false,
desc: "Don't install Spring application preloader"

class_option :skip_coffee, type: :boolean, default: false,
desc: "Don't use CoffeeScript"
class_option :skip_listen, type: :boolean, default: false,
desc: "Don't generate configuration that depends on the listen gem"

class_option :skip_javascript, type: :boolean, aliases: "-J", default: false,
desc: "Skip JavaScript files"
class_option :skip_coffee, type: :boolean, default: false,
desc: "Don't use CoffeeScript"

class_option :skip_turbolinks, type: :boolean, default: false,
desc: "Skip turbolinks gem"
class_option :skip_javascript, type: :boolean, aliases: "-J", default: false,
desc: "Skip JavaScript files"

class_option :skip_test, type: :boolean, aliases: "-T", default: false,
desc: "Skip test files"
class_option :skip_turbolinks, type: :boolean, default: false,
desc: "Skip turbolinks gem"

class_option :skip_system_test, type: :boolean, default: false,
desc: "Skip system test files"
class_option :skip_test, type: :boolean, aliases: "-T", default: false,
desc: "Skip test files"

class_option :dev, type: :boolean, default: false,
desc: "Setup the #{name} with Gemfile pointing to your Rails checkout"
class_option :skip_system_test, type: :boolean, default: false,
desc: "Skip system test files"

class_option :edge, type: :boolean, default: false,
desc: "Setup the #{name} with Gemfile pointing to Rails repository"
class_option :dev, type: :boolean, default: false,
desc: "Setup the #{name} with Gemfile pointing to your Rails checkout"

class_option :rc, type: :string, default: nil,
desc: "Path to file containing extra configuration options for rails command"
class_option :edge, type: :boolean, default: false,
desc: "Setup the #{name} with Gemfile pointing to Rails repository"

class_option :no_rc, type: :boolean, default: false,
desc: "Skip loading of extra configuration options from .railsrc file"
class_option :rc, type: :string, default: nil,
desc: "Path to file containing extra configuration options for rails command"

class_option :help, type: :boolean, aliases: "-h", group: :rails,
desc: "Show this help message and quit"
class_option :no_rc, type: :boolean, default: false,
desc: "Skip loading of extra configuration options from .railsrc file"

class_option :help, type: :boolean, aliases: "-h", group: :rails,
desc: "Show this help message and quit"
end

def initialize(*args)
Expand Down Expand Up @@ -193,11 +196,29 @@ def webserver_gemfile_entry # :doc:
end

def include_all_railties? # :doc:
options.values_at(:skip_active_record, :skip_action_mailer, :skip_test, :skip_sprockets, :skip_action_cable).none?
[
options.values_at(
:skip_active_record,
:skip_action_mailer,
:skip_test,
:skip_sprockets,
:skip_action_cable
),
skip_active_storage?
].flatten.none?
end

def comment_if(value) # :doc:
options[value] ? "# " : ""
question = "#{value}?"

comment =
if respond_to?(question, true)
send(question)
else
options[value]
end

comment ? "# " : ""
end

def keeps? # :doc:
Expand All @@ -208,6 +229,10 @@ def sqlite3? # :doc:
!options[:skip_active_record] && options[:database] == "sqlite3"
end

def skip_active_storage? # :doc:
options[:skip_active_storage] || options[:skip_active_record]
end

class GemfileEntry < Struct.new(:name, :version, :comment, :options, :commented_out)
def initialize(name, version, comment, options = {}, commented_out = false)
super
Expand Down
8 changes: 6 additions & 2 deletions railties/lib/rails/generators/rails/app/app_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def config
template "cable.yml" unless options[:skip_action_cable]
template "puma.rb" unless options[:skip_puma]
template "spring.rb" if spring_install?
template "storage.yml"
template "storage.yml" unless skip_active_storage?

directory "environments"
directory "initializers"
Expand All @@ -139,7 +139,7 @@ def config_when_updating
template "config/cable.yml"
end

if !active_storage_config_exist
if !skip_active_storage? && !active_storage_config_exist
template "config/storage.yml"
end

Expand Down Expand Up @@ -355,6 +355,10 @@ def create_system_test_files
build(:system_test) if depends_on_system_test?
end

def create_storage_files
build(:storage) unless skip_active_storage?
end

def create_tmp_files
build(:tmp)
end
Expand Down
3 changes: 2 additions & 1 deletion railties/lib/rails/generators/rails/app/templates/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ ruby <%= "'#{RUBY_VERSION}'" -%>

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

<% unless skip_active_storage? -%>
# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'
<% end -%>
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
//
<% unless options[:skip_javascript] -%>
//= require rails-ujs
<% unless skip_active_storage? -%>
//= require activestorage
<% end -%>
<% unless options[:skip_turbolinks] -%>
//= require turbolinks
<% end -%>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
require "active_model/railtie"
require "active_job/railtie"
<%= comment_if :skip_active_record %>require "active_record/railtie"
<%= comment_if :skip_active_storage %>require "active_storage/engine"
require "action_controller/railtie"
<%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
require "action_view/railtie"
require "active_storage/engine"
<%= comment_if :skip_action_cable %>require "action_cable/engine"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test %>require "rails/test_unit/railtie"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ Rails.application.configure do
config.cache_store = :null_store
end

<%- unless skip_active_storage? -%>
# Store uploaded files on the local file system (see config/storage.yml for options)
config.active_storage.service = :local
<%- end -%>
<%- unless options.skip_action_mailer? -%>

# Don't care if the mailer can't send.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ Rails.application.configure do
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

<%- unless skip_active_storage? -%>
# Store uploaded files on the local file system (see config/storage.yml for options)
config.active_storage.service = :local

<%- end -%>
<%- unless options[:skip_action_cable] -%>
# Mount Action Cable outside main process or domain
# config.action_cable.mount_path = nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@ Rails.application.configure do
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false

<%- unless skip_active_storage? -%>
# Store uploaded files on the local file system in a temporary directory
config.active_storage.service = :test

<%- end -%>
<%- unless options.skip_action_mailer? -%>
config.action_mailer.perform_caching = false

Expand Down
2 changes: 2 additions & 0 deletions railties/lib/rails/generators/rails/app/templates/gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
!/tmp/.keep
<% end -%>

<% unless skip_active_storage? -%>
# Ignore uploaded files in development
/storage/*
<% end -%>

<% unless options.skip_yarn? -%>
/node_modules
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def test
end

PASSTHROUGH_OPTIONS = [
:skip_active_record, :skip_action_mailer, :skip_javascript, :skip_action_cable, :skip_sprockets, :database,
:skip_active_record, :skip_active_storage, :skip_action_mailer, :skip_javascript, :skip_action_cable, :skip_sprockets, :database,
:javascript, :skip_yarn, :api, :quiet, :pretend, :skip
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ pkg/
<%= dummy_path %>/node_modules/
<%= dummy_path %>/yarn-error.log
<% end -%>
<% unless skip_active_storage? -%>
<%= dummy_path %>/storage/
<% end -%>
<%= dummy_path %>/tmp/
<% end -%>
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
require "active_model/railtie"
require "active_job/railtie"
<%= comment_if :skip_active_record %>require "active_record/railtie"
<%= comment_if :skip_active_storage %>require "active_storage/engine"
require "action_controller/railtie"
<%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
require "action_view/railtie"
require "active_storage/engine"
<%= comment_if :skip_action_cable %>require "action_cable/engine"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test %>require "rails/test_unit/railtie"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,7 @@
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
<% unless skip_active_storage? -%>
//= require activestorage
<% end -%>
//= require_tree .

0 comments on commit 4a835aa

Please sign in to comment.