From 3cf7b3056462562b0f9ce45a2691aa32cc54636e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 14 Dec 2015 14:31:30 -0200 Subject: Add action_cable to rails/all and application.rb --- railties/lib/rails/all.rb | 19 ++++++++++--------- .../rails/app/templates/config/application.rb | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 45361fca83..11f4d5c4bc 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -1,16 +1,17 @@ require "rails" %w( - active_record - action_controller - action_view - action_mailer - active_job - rails/test_unit - sprockets -).each do |framework| + active_record/railtie + action_controller/railtie + action_view/railtie + action_mailer/railtie + active_job/railtie + action_cable/engine + rails/test_unit/railtie + sprockets/railtie +).each do |railtie| begin - require "#{framework}/railtie" + require "#{railtie}" rescue LoadError end end diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index ddd0fcade1..6bb649af8e 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -11,6 +11,7 @@ require "active_job/railtie" require "action_controller/railtie" <%= comment_if :skip_action_mailer %>require "action_mailer/railtie" require "action_view/railtie" +require "action_cable/engine" <%= comment_if :skip_sprockets %>require "sprockets/railtie" <%= comment_if :skip_test %>require "rails/test_unit/railtie" <% end -%> -- cgit v1.2.3 From 65f65d67ba301cd73377736f5517299b8c83ae9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 14 Dec 2015 23:44:52 -0200 Subject: Add option to skip Action Cable --- railties/lib/rails/generators/app_base.rb | 5 ++++- .../lib/rails/generators/rails/app/templates/config/application.rb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 56c9d3e354..792d0ddd40 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -51,6 +51,9 @@ module Rails class_option :skip_spring, type: :boolean, default: false, desc: "Don't install Spring application preloader" + class_option :skip_action_cable, type: :boolean, aliases: '-C', default: false, + desc: 'Skip Action Cable files' + class_option :database, type: :string, aliases: '-d', default: 'sqlite3', desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})" @@ -168,7 +171,7 @@ module Rails end def include_all_railties? - options.values_at(:skip_active_record, :skip_action_mailer, :skip_test, :skip_sprockets).none? + options.values_at(:skip_active_record, :skip_action_mailer, :skip_test, :skip_sprockets, :skip_action_cable).none? end def comment_if(value) diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index 6bb649af8e..cb1018c3ba 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -11,7 +11,7 @@ require "active_job/railtie" require "action_controller/railtie" <%= comment_if :skip_action_mailer %>require "action_mailer/railtie" require "action_view/railtie" -require "action_cable/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" <% end -%> -- cgit v1.2.3 From a8db0328a5452130b87b568b66fbd125eb10d45d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 15 Dec 2015 13:10:27 +0100 Subject: Switch from engine to railtie --- railties/lib/rails/all.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 11f4d5c4bc..959c003e00 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -6,7 +6,7 @@ require "rails" action_view/railtie action_mailer/railtie active_job/railtie - action_cable/engine + action_cable/railtie rails/test_unit/railtie sprockets/railtie ).each do |railtie| -- cgit v1.2.3 From ff370ee61754b00f864f3ddd0af62be4dfa0de67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Tue, 15 Dec 2015 15:21:36 -0200 Subject: Action Cable need to be a engine Otherwise assets will not work --- railties/lib/rails/all.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 959c003e00..11f4d5c4bc 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -6,7 +6,7 @@ require "rails" action_view/railtie action_mailer/railtie active_job/railtie - action_cable/railtie + action_cable/engine rails/test_unit/railtie sprockets/railtie ).each do |railtie| -- cgit v1.2.3 From fc635b565393bd6b70be4af524934b3ea359e83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Tue, 15 Dec 2015 15:50:56 -0200 Subject: Accept a Pathname in Application#config_for That would make possible to use it with action cable configuration. --- railties/lib/rails/application.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 77efe3248d..cac31e1eed 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -219,7 +219,11 @@ module Rails # config.middleware.use ExceptionNotifier, config_for(:exception_notification) # end def config_for(name, env: Rails.env) - yaml = Pathname.new("#{paths["config"].existent.first}/#{name}.yml") + if name.is_a?(Pathname) + yaml = name + else + yaml = Pathname.new("#{paths["config"].existent.first}/#{name}.yml") + end if yaml.exist? require "erb" -- cgit v1.2.3 From 346a7528eff8aabc9618d0b20a32b36f218d8b2f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 15:28:50 +0100 Subject: We are using railtie, not engine --- railties/lib/rails/generators/rails/app/templates/config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index cb1018c3ba..d070d152c5 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -11,7 +11,7 @@ require "active_job/railtie" require "action_controller/railtie" <%= comment_if :skip_action_mailer %>require "action_mailer/railtie" require "action_view/railtie" -<%= comment_if :skip_action_cable %>require "action_cable/engine" +<%= comment_if :skip_action_cable %>require "action_cable/railtie" <%= comment_if :skip_sprockets %>require "sprockets/railtie" <%= comment_if :skip_test %>require "rails/test_unit/railtie" <% end -%> -- cgit v1.2.3 From 3784068475c0109bfec0a9eb5877c4ae2e8b5a72 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 15:32:51 +0100 Subject: Another bad reference to engine instead of railtie --- railties/lib/rails/all.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 11f4d5c4bc..959c003e00 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -6,7 +6,7 @@ require "rails" action_view/railtie action_mailer/railtie active_job/railtie - action_cable/engine + action_cable/railtie rails/test_unit/railtie sprockets/railtie ).each do |railtie| -- cgit v1.2.3 From 51ad57989d3e2afb5b297edc7e6c997a41196559 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 15:52:46 +0100 Subject: Doh, should have read ff370ee61754b00f864f3ddd0af62be4dfa0de67 Indeed we need this to be an engine for the internal assets to work --- railties/lib/rails/all.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 959c003e00..11f4d5c4bc 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -6,7 +6,7 @@ require "rails" action_view/railtie action_mailer/railtie active_job/railtie - action_cable/railtie + action_cable/engine rails/test_unit/railtie sprockets/railtie ).each do |railtie| -- cgit v1.2.3 From 3354b2d0fa61fdc6b23a4526901b85edab4a760c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 16 Dec 2015 13:04:12 -0200 Subject: Fix the engine reference --- railties/lib/rails/generators/rails/app/templates/config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index d070d152c5..cb1018c3ba 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -11,7 +11,7 @@ require "active_job/railtie" require "action_controller/railtie" <%= comment_if :skip_action_mailer %>require "action_mailer/railtie" require "action_view/railtie" -<%= comment_if :skip_action_cable %>require "action_cable/railtie" +<%= 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" <% end -%> -- cgit v1.2.3 From 7eb12796cabb1d6784daf261ca8e344513cacede Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 18:15:59 +0100 Subject: Assume that the cable server is running in-process by default, offer option to change that in config/environments/production.rb --- .../rails/app/templates/config/environments/production.rb.tt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt index a5302550fa..945e890e5f 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt @@ -40,6 +40,9 @@ 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 + # Action Cable should be mounted in a separate process for most production setups + # config.action_cable.url = 'wss://example.com/cable' + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true -- cgit v1.2.3 From 21e0e68f47277ff5b26ab74d9c1f9460b16787bd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 19:11:35 +0100 Subject: Include the action cable URL meta tag by default --- .../rails/app/templates/app/views/layouts/application.html.erb.tt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt index 8bb4440f55..e4a8903019 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt @@ -2,6 +2,9 @@ <%= camelized %> + <%%= csrf_meta_tags %> + <%%= action_cable_meta_tag %> + <%- if options[:skip_javascript] -%> <%%= stylesheet_link_tag 'application', media: 'all' %> <%- else -%> @@ -13,7 +16,6 @@ <%%= javascript_include_tag 'application' %> <%- end -%> <%- end -%> - <%%= csrf_meta_tags %> -- cgit v1.2.3 From 5f02b156aaa82eea2aef1db9a9daf0321c800e6c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 19:12:00 +0100 Subject: Needless whitespace --- .../rails/app/templates/app/views/layouts/application.html.erb.tt | 2 -- 1 file changed, 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt index e4a8903019..30274e0cff 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt @@ -19,8 +19,6 @@ - <%%= yield %> - -- cgit v1.2.3 From 97e413002639c1e19503f9c9875fc83428c36f51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 16 Dec 2015 17:01:39 -0200 Subject: Only include action cable meta tags if it is not skipped --- .../rails/app/templates/app/views/layouts/application.html.erb.tt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt index 30274e0cff..68b5c051b2 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt @@ -3,7 +3,9 @@ <%= camelized %> <%%= csrf_meta_tags %> + <%- unless options[:skip_action_cable] -%> <%%= action_cable_meta_tag %> + <%- end -%> <%- if options[:skip_javascript] -%> <%%= stylesheet_link_tag 'application', media: 'all' %> -- cgit v1.2.3 From c9c9a609cb9c30635978e3cb64ac0e1637313232 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:19:36 +0100 Subject: Add default redis config for Action Cable --- railties/lib/rails/generators/rails/app/app_generator.rb | 1 + .../rails/generators/rails/app/templates/config/redis/cable.yml | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 9997cf3b35..16f30d0135 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -83,6 +83,7 @@ module Rails directory "environments" directory "initializers" directory "locales" + directory "redis" end end diff --git a/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml b/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml new file mode 100644 index 0000000000..d68aa719da --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml @@ -0,0 +1,8 @@ +production: + url: redis://localhost:6379/3 + +development: + url: redis://localhost:6379/1 + +test: + url: redis://localhost:6379/2 -- cgit v1.2.3 From f229d0451306508a8a16af337deef01b5d66b6d7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:19:49 +0100 Subject: By default, mount Action Cable on the router --- railties/lib/rails/generators/rails/app/templates/config/routes.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/routes.rb b/railties/lib/rails/generators/rails/app/templates/config/routes.rb index 787824f888..3dfd415645 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/routes.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/routes.rb @@ -1,3 +1,6 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html + + # Serve websocket cable requests in-process + mount ActionCable.server => '/cable' end -- cgit v1.2.3 From d1d1e303a8be3f0cc025e5369cefa9d993575b24 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:26:29 +0100 Subject: Only mount the ActionCable server if ApplicationCable has been defined --- railties/lib/rails/generators/rails/app/templates/config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/routes.rb b/railties/lib/rails/generators/rails/app/templates/config/routes.rb index 3dfd415645..722b845472 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/routes.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/routes.rb @@ -2,5 +2,5 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html # Serve websocket cable requests in-process - mount ActionCable.server => '/cable' + mount ActionCable.server => '/cable' if defined?(ApplicationCable) end -- cgit v1.2.3 From c0b901e7912f10400c2e14109e66eba4056b398a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:30:21 +0100 Subject: Eager loading is required for Action Cable and we should use the logging too --- railties/lib/rails/generators/rails/app/templates/config.ru | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config.ru b/railties/lib/rails/generators/rails/app/templates/config.ru index bd83b25412..849b5a1b88 100644 --- a/railties/lib/rails/generators/rails/app/templates/config.ru +++ b/railties/lib/rails/generators/rails/app/templates/config.ru @@ -1,4 +1,8 @@ # This file is used by Rack-based servers to start the application. require ::File.expand_path('../config/environment', __FILE__) +Rails.application.eager_load! + +require 'action_cable/process/logging' + run Rails.application -- cgit v1.2.3 From ae48ea69cf378d03ffed0f694587a16696795387 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:36:03 +0100 Subject: Use puma as the default development server, if available --- railties/lib/rails/commands/server.rb | 2 +- railties/lib/rails/generators/rails/app/templates/Gemfile | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb index d3ea441f8e..6a451861af 100644 --- a/railties/lib/rails/commands/server.rb +++ b/railties/lib/rails/commands/server.rb @@ -12,7 +12,7 @@ module Rails option_parser(options).parse! args options[:log_stdout] = options[:daemonize].blank? && (options[:environment] || Rails.env) == "development" - options[:server] = args.shift + options[:server] = args.shift || defined?(Puma) ? 'puma' : nil options end diff --git a/railties/lib/rails/generators/rails/app/templates/Gemfile b/railties/lib/rails/generators/rails/app/templates/Gemfile index 4384d9b6eb..abb4905294 100644 --- a/railties/lib/rails/generators/rails/app/templates/Gemfile +++ b/railties/lib/rails/generators/rails/app/templates/Gemfile @@ -12,12 +12,12 @@ source 'https://rubygems.org' <% end -%> <% end -%> +# Use Puma as the app server +gem 'puma', github: 'puma/puma' # FIXME: Release Rack 2 compatible Puma + # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' -# Use Unicorn as the app server -# gem 'unicorn' - # Use Capistrano for deployment # gem 'capistrano-rails', group: :development -- cgit v1.2.3 From 6357437de4ea128b127dfb06fc790ee1f16270bd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 20:41:53 +0100 Subject: Saner increments --- .../lib/rails/generators/rails/app/templates/config/redis/cable.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml b/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml index d68aa719da..0156763c95 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml +++ b/railties/lib/rails/generators/rails/app/templates/config/redis/cable.yml @@ -1,8 +1,8 @@ production: - url: redis://localhost:6379/3 + url: redis://localhost:6379/1 development: - url: redis://localhost:6379/1 + url: redis://localhost:6379/2 test: - url: redis://localhost:6379/2 + url: redis://localhost:6379/3 -- cgit v1.2.3 From 28035db109c35bc0bc40272c621ac3c777a62a72 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 21:05:13 +0100 Subject: Generate all the ApplicationCable stubs by default, like all other Application* stubs --- railties/lib/rails/generators/rails/app/app_generator.rb | 2 ++ .../rails/app/templates/app/assets/javascripts/cable.coffee | 7 +++++++ .../rails/app/templates/app/channels/application_cable/channel.rb | 5 +++++ .../app/templates/app/channels/application_cable/connection.rb | 5 +++++ railties/lib/rails/generators/rails/app/templates/config/routes.rb | 2 +- 5 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee create mode 100644 railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/channel.rb create mode 100644 railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/connection.rb (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 16f30d0135..61c99ccd33 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -57,6 +57,8 @@ module Rails directory 'app' keep_file 'app/assets/images' + keep_file 'app/assets/javascripts/channels' + keep_file 'app/mailers' keep_file 'app/models' diff --git a/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee b/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee new file mode 100644 index 0000000000..4166ea02f1 --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee @@ -0,0 +1,7 @@ +#= require action_cable +#= require_self +#= require_tree ./channels + +# Turn on the cable connection by removing the comments from the statements below: +# @App ||= {} +# App.cable = ActionCable.createConsumer() diff --git a/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/channel.rb b/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/channel.rb new file mode 100644 index 0000000000..438c84154d --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/channel.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. Action Cable runs in an EventMachine loop that does not support auto reloading. +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/connection.rb b/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/connection.rb new file mode 100644 index 0000000000..965046f3c7 --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/channels/application_cable/connection.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. Action Cable runs in an EventMachine loop that does not support auto reloading. +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/railties/lib/rails/generators/rails/app/templates/config/routes.rb b/railties/lib/rails/generators/rails/app/templates/config/routes.rb index 722b845472..3dfd415645 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/routes.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/routes.rb @@ -2,5 +2,5 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html # Serve websocket cable requests in-process - mount ActionCable.server => '/cable' if defined?(ApplicationCable) + mount ActionCable.server => '/cable' end -- cgit v1.2.3 From a70331c9d16e70951684978d00a81d72efe8c46c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 21:05:35 +0100 Subject: No longer needed now that we prefill with app/models/application_record.rb --- railties/lib/rails/generators/rails/app/app_generator.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 61c99ccd33..d62a2e48eb 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -60,7 +60,6 @@ module Rails keep_file 'app/assets/javascripts/channels' keep_file 'app/mailers' - keep_file 'app/models' keep_file 'app/controllers/concerns' keep_file 'app/models/concerns' -- cgit v1.2.3 From eea6f7bcd834f14c59327ad05072c96799583f33 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 16 Dec 2015 21:26:45 +0100 Subject: Avoid Action Cable stubs on --skip-action-cable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Still missing the stuff in app/ – we need to basically switch from a * match to specifically picking out what we need. --- railties/lib/rails/generators/rails/app/app_generator.rb | 4 ++-- railties/lib/rails/generators/rails/app/templates/config.ru | 8 -------- railties/lib/rails/generators/rails/app/templates/config.ru.tt | 10 ++++++++++ .../rails/app/templates/config/environments/production.rb.tt | 2 ++ 4 files changed, 14 insertions(+), 10 deletions(-) delete mode 100644 railties/lib/rails/generators/rails/app/templates/config.ru create mode 100644 railties/lib/rails/generators/rails/app/templates/config.ru.tt (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index d62a2e48eb..2a3f16c02e 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -57,7 +57,7 @@ module Rails directory 'app' keep_file 'app/assets/images' - keep_file 'app/assets/javascripts/channels' + keep_file 'app/assets/javascripts/channels' unless options[:skip_action_cable] keep_file 'app/mailers' @@ -84,7 +84,7 @@ module Rails directory "environments" directory "initializers" directory "locales" - directory "redis" + directory "redis" unless options[:skip_action_cable] end end diff --git a/railties/lib/rails/generators/rails/app/templates/config.ru b/railties/lib/rails/generators/rails/app/templates/config.ru deleted file mode 100644 index 849b5a1b88..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/config.ru +++ /dev/null @@ -1,8 +0,0 @@ -# This file is used by Rack-based servers to start the application. - -require ::File.expand_path('../config/environment', __FILE__) -Rails.application.eager_load! - -require 'action_cable/process/logging' - -run Rails.application diff --git a/railties/lib/rails/generators/rails/app/templates/config.ru.tt b/railties/lib/rails/generators/rails/app/templates/config.ru.tt new file mode 100644 index 0000000000..4dddf0c03e --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/config.ru.tt @@ -0,0 +1,10 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) + +<%- unless options[:skip_action_cable] -%> +Rails.application.eager_load! +require 'action_cable/process/logging' +<%- end -%> + +run Rails.application diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt index 945e890e5f..ab99030550 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt @@ -40,8 +40,10 @@ 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 options[:skip_action_cable] -%> # Action Cable should be mounted in a separate process for most production setups # config.action_cable.url = 'wss://example.com/cable' + <%- end -%> # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true -- cgit v1.2.3 From 5e406a3311d73473d846030b423aa26fafa021a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 16 Dec 2015 19:35:16 -0200 Subject: No need to check for puma Rack::Server already does it work for us if the server is installed. --- railties/lib/rails/commands/server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb index 6a451861af..d3ea441f8e 100644 --- a/railties/lib/rails/commands/server.rb +++ b/railties/lib/rails/commands/server.rb @@ -12,7 +12,7 @@ module Rails option_parser(options).parse! args options[:log_stdout] = options[:daemonize].blank? && (options[:environment] || Rails.env) == "development" - options[:server] = args.shift || defined?(Puma) ? 'puma' : nil + options[:server] = args.shift options end -- cgit v1.2.3 From 7cf856e91fed0e1149bb305f226afc77ec496ffc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 17 Dec 2015 11:25:05 +0100 Subject: Don't mount the ActionCable server by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since we require you to enable it on the client-side, let us do the same on the server-side. Then you’re not running an EventMachine unless you need to. --- .../generators/rails/app/templates/app/assets/javascripts/cable.coffee | 2 +- railties/lib/rails/generators/rails/app/templates/config/routes.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee b/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee index 4166ea02f1..cb7653cdc5 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee +++ b/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee @@ -2,6 +2,6 @@ #= require_self #= require_tree ./channels -# Turn on the cable connection by removing the comments from the statements below: +# Turn on the cable connection (ensure it's also on in config/routes.rb): # @App ||= {} # App.cable = ActionCable.createConsumer() diff --git a/railties/lib/rails/generators/rails/app/templates/config/routes.rb b/railties/lib/rails/generators/rails/app/templates/config/routes.rb index 3dfd415645..8293c8a483 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/routes.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/routes.rb @@ -2,5 +2,5 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html # Serve websocket cable requests in-process - mount ActionCable.server => '/cable' + # mount ActionCable.server => '/cable' end -- cgit v1.2.3