From 4890486c744b6ee35defb7ac9cebfa6f419f6d6b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Wed, 20 Jul 2016 19:55:39 -1000 Subject: [PATCH 01/24] Update ensure_assets_compiled.rb --- lib/react_on_rails/test_helper/ensure_assets_compiled.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/react_on_rails/test_helper/ensure_assets_compiled.rb b/lib/react_on_rails/test_helper/ensure_assets_compiled.rb index 80c97cc8f..c6abdff23 100644 --- a/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +++ b/lib/react_on_rails/test_helper/ensure_assets_compiled.rb @@ -45,7 +45,7 @@ def puts_start_compile_check_message(stale_files) #{stale_files.join("\n")} React on Rails will ensure your JavaScript generated files are up to date, using your -/client level package.json `build:test` command. +/client level package.json `#{ReactOnRails.configuration.npm_build_test_command}` command. MSG end From 1e9d58c05e3fe7b9c580c36229510ed3d170e6f3 Mon Sep 17 00:00:00 2001 From: eacaps Date: Thu, 21 Jul 2016 13:23:51 -0400 Subject: [PATCH 02/24] allow component rendering in contexts without requests --- app/helpers/react_on_rails_helper.rb | 51 +++++++++++++++------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index a1efc4f3c..1c2d35fc4 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -343,30 +343,33 @@ def initialize_redux_stores # second parameter passed to both component and store generator functions. def rails_context(server_side:) @rails_context ||= begin - # Using Addressable instead of standard URI to better deal with - # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) - uri = Addressable::URI.parse(request.original_url) - # uri = Addressable::URI.parse("http://foo.com:3000/posts?id=30&limit=5#time=1305298413") - - result = { - # URL settings - href: request.original_url, - location: "#{uri.path}#{uri.query.present? ? "?#{uri.query}" : ''}", - scheme: uri.scheme, # http - host: uri.host, # foo.com - port: uri.port, - pathname: uri.path, # /posts - search: uri.query, # id=30&limit=5 - - # Locale settings - i18nLocale: I18n.locale, - i18nDefaultLocale: I18n.default_locale, - httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] - } - - if ReactOnRails.configuration.rendering_extension - custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) - result.merge!(custom_context) if custom_context + result = {} + unless request.nil? + # Using Addressable instead of standard URI to better deal with + # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) + uri = Addressable::URI.parse(request.original_url) + # uri = Addressable::URI.parse("http://foo.com:3000/posts?id=30&limit=5#time=1305298413") + + result = { + # URL settings + href: request.original_url, + location: "#{uri.path}#{uri.query.present? ? "?#{uri.query}" : ''}", + scheme: uri.scheme, # http + host: uri.host, # foo.com + port: uri.port, + pathname: uri.path, # /posts + search: uri.query, # id=30&limit=5 + + # Locale settings + i18nLocale: I18n.locale, + i18nDefaultLocale: I18n.default_locale, + httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] + } + + if ReactOnRails.configuration.rendering_extension + custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) + result.merge!(custom_context) if custom_context + end end result end From 610906e7ed2c741fbe76ff9d1fd15707260f70e5 Mon Sep 17 00:00:00 2001 From: eacaps Date: Thu, 21 Jul 2016 13:25:42 -0400 Subject: [PATCH 03/24] allow custom_context even without request --- app/helpers/react_on_rails_helper.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 1c2d35fc4..6cc6896db 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -365,11 +365,10 @@ def rails_context(server_side:) i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] } - - if ReactOnRails.configuration.rendering_extension - custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) - result.merge!(custom_context) if custom_context - end + end + if ReactOnRails.configuration.rendering_extension + custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) + result.merge!(custom_context) if custom_context end result end From 05d3144a99c09d4d86a205d8b2be4edfbe177d1e Mon Sep 17 00:00:00 2001 From: eacaps Date: Thu, 21 Jul 2016 14:31:19 -0400 Subject: [PATCH 04/24] added broken test --- app/helpers/react_on_rails_helper.rb | 14 +++++++------- spec/dummy/app/mailers/dummy_mailer.rb | 9 +++++++++ .../app/views/dummy_mailer/hello_email.html.erb | 3 +++ .../spec/requests/server_render_check_spec.rb | 7 +++++++ 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 spec/dummy/app/mailers/dummy_mailer.rb create mode 100644 spec/dummy/app/views/dummy_mailer/hello_email.html.erb diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 6cc6896db..1f63f39a0 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -343,8 +343,8 @@ def initialize_redux_stores # second parameter passed to both component and store generator functions. def rails_context(server_side:) @rails_context ||= begin - result = {} - unless request.nil? + # result = {} + # unless request.nil? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) uri = Addressable::URI.parse(request.original_url) @@ -365,11 +365,11 @@ def rails_context(server_side:) i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] } - end - if ReactOnRails.configuration.rendering_extension - custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) - result.merge!(custom_context) if custom_context - end + # end + # if ReactOnRails.configuration.rendering_extension + # custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) + # result.merge!(custom_context) if custom_context + # end result end diff --git a/spec/dummy/app/mailers/dummy_mailer.rb b/spec/dummy/app/mailers/dummy_mailer.rb new file mode 100644 index 000000000..b8df25a99 --- /dev/null +++ b/spec/dummy/app/mailers/dummy_mailer.rb @@ -0,0 +1,9 @@ +class DummyMailer < ActionMailer::Base + add_template_helper(ReactOnRailsHelper) + default from: 'nobody@nope.com' + # layout 'mailer' + + def hello_email + mail(to: 'otherperson@nope.com', subject: "you've got mail") + end +end \ No newline at end of file diff --git a/spec/dummy/app/views/dummy_mailer/hello_email.html.erb b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb new file mode 100644 index 000000000..8c0a41de0 --- /dev/null +++ b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb @@ -0,0 +1,3 @@ +Someone emailed this to you: + +<%= react_component("HelloWorld", props: {}, prerender: true) %> \ No newline at end of file diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index 8840de2f0..804c3d4f7 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -58,6 +58,13 @@ end end + describe "server render mailer" do + it 'sends email okay' do + mail = DummyMailer.hello_email + expect(mail.subject).to match 'mail' + end + end + describe "server rendering railsContext" do let(:http_accept_language) { "en-US,en;q=0.8" } From d99fc368b9106bb13dd5bb9d213a74181babcb22 Mon Sep 17 00:00:00 2001 From: eacaps Date: Thu, 21 Jul 2016 14:46:20 -0400 Subject: [PATCH 05/24] added fixes to allow actionmailer test to pass --- app/helpers/react_on_rails_helper.rb | 14 +++++++------- .../app/views/dummy_mailer/hello_email.html.erb | 6 +++++- spec/dummy/config/initializers/react_on_rails.rb | 11 ++++++++--- .../spec/requests/server_render_check_spec.rb | 1 + 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 1f63f39a0..6cc6896db 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -343,8 +343,8 @@ def initialize_redux_stores # second parameter passed to both component and store generator functions. def rails_context(server_side:) @rails_context ||= begin - # result = {} - # unless request.nil? + result = {} + unless request.nil? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) uri = Addressable::URI.parse(request.original_url) @@ -365,11 +365,11 @@ def rails_context(server_side:) i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] } - # end - # if ReactOnRails.configuration.rendering_extension - # custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) - # result.merge!(custom_context) if custom_context - # end + end + if ReactOnRails.configuration.rendering_extension + custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) + result.merge!(custom_context) if custom_context + end result end diff --git a/spec/dummy/app/views/dummy_mailer/hello_email.html.erb b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb index 8c0a41de0..c28997edc 100644 --- a/spec/dummy/app/views/dummy_mailer/hello_email.html.erb +++ b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb @@ -1,3 +1,7 @@ Someone emailed this to you: -<%= react_component("HelloWorld", props: {}, prerender: true) %> \ No newline at end of file +<%= react_component("HelloWorld", props: { + helloWorldData: { + name: "Mr. Mailing Server Side Rendering" + } +}, prerender: true) %> \ No newline at end of file diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index 6e2e87ec5..57d681e6e 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -2,9 +2,14 @@ module RenderingExtension # Return a Hash that contains custom values from the view context that will get passed to # all calls to react_component and redux_store for rendering def self.custom_context(view_context) - { - somethingUseful: view_context.session[:something_useful] - } + result = {} + begin + result = { + somethingUseful: view_context.session[:something_useful] + } + rescue + end + result end end diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index 804c3d4f7..b2ddf75db 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -62,6 +62,7 @@ it 'sends email okay' do mail = DummyMailer.hello_email expect(mail.subject).to match 'mail' + expect(mail.body).to match 'Mr. Mailing Server Side Rendering' end end From 6fdb73a5600bb1e4602df4b1c0a0ea914c3107eb Mon Sep 17 00:00:00 2001 From: eacaps Date: Thu, 21 Jul 2016 16:35:42 -0400 Subject: [PATCH 06/24] cleaned up rubocop warnings --- app/helpers/react_on_rails_helper.rb | 1 + spec/dummy/app/mailers/dummy_mailer.rb | 6 +++--- spec/dummy/config/initializers/react_on_rails.rb | 1 + spec/dummy/spec/requests/server_render_check_spec.rb | 6 +++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 6cc6896db..b9d6e5038 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -341,6 +341,7 @@ def initialize_redux_stores # This is the definitive list of the default values used for the rails_context, which is the # second parameter passed to both component and store generator functions. + # rubocop:disable Metrics/AbcSize def rails_context(server_side:) @rails_context ||= begin result = {} diff --git a/spec/dummy/app/mailers/dummy_mailer.rb b/spec/dummy/app/mailers/dummy_mailer.rb index b8df25a99..c1404e95a 100644 --- a/spec/dummy/app/mailers/dummy_mailer.rb +++ b/spec/dummy/app/mailers/dummy_mailer.rb @@ -1,9 +1,9 @@ class DummyMailer < ActionMailer::Base add_template_helper(ReactOnRailsHelper) - default from: 'nobody@nope.com' + default from: "nobody@nope.com" # layout 'mailer' def hello_email - mail(to: 'otherperson@nope.com', subject: "you've got mail") + mail(to: "otherperson@nope.com", subject: "you've got mail") end -end \ No newline at end of file +end diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index 57d681e6e..466dea1e5 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -8,6 +8,7 @@ def self.custom_context(view_context) somethingUseful: view_context.session[:something_useful] } rescue + result = {} end result end diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index b2ddf75db..b36aa3c47 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -59,10 +59,10 @@ end describe "server render mailer" do - it 'sends email okay' do + it "sends email okay" do mail = DummyMailer.hello_email - expect(mail.subject).to match 'mail' - expect(mail.body).to match 'Mr. Mailing Server Side Rendering' + expect(mail.subject).to match "mail" + expect(mail.body).to match "Mr. Mailing Server Side Rendering" end end From 840bc62e9691a8a148313dca23b74abe299df1e2 Mon Sep 17 00:00:00 2001 From: eacaps Date: Fri, 22 Jul 2016 09:57:28 -0400 Subject: [PATCH 07/24] resolved some reviewed suggestions --- app/helpers/react_on_rails_helper.rb | 2 +- spec/dummy/app/mailers/dummy_mailer.rb | 1 - spec/dummy/app/views/dummy_mailer/hello_email.html.erb | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index b9d6e5038..305900d87 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -345,7 +345,7 @@ def initialize_redux_stores def rails_context(server_side:) @rails_context ||= begin result = {} - unless request.nil? + if request.present? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) uri = Addressable::URI.parse(request.original_url) diff --git a/spec/dummy/app/mailers/dummy_mailer.rb b/spec/dummy/app/mailers/dummy_mailer.rb index c1404e95a..b176e72f5 100644 --- a/spec/dummy/app/mailers/dummy_mailer.rb +++ b/spec/dummy/app/mailers/dummy_mailer.rb @@ -1,7 +1,6 @@ class DummyMailer < ActionMailer::Base add_template_helper(ReactOnRailsHelper) default from: "nobody@nope.com" - # layout 'mailer' def hello_email mail(to: "otherperson@nope.com", subject: "you've got mail") diff --git a/spec/dummy/app/views/dummy_mailer/hello_email.html.erb b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb index c28997edc..c80f1041a 100644 --- a/spec/dummy/app/views/dummy_mailer/hello_email.html.erb +++ b/spec/dummy/app/views/dummy_mailer/hello_email.html.erb @@ -4,4 +4,4 @@ Someone emailed this to you: helloWorldData: { name: "Mr. Mailing Server Side Rendering" } -}, prerender: true) %> \ No newline at end of file +}, prerender: true) %> From 0257cae000d9f5ae0b43dd850b079774637d909f Mon Sep 17 00:00:00 2001 From: jooohn Date: Sat, 23 Jul 2016 13:12:37 +0900 Subject: [PATCH 08/24] fix(typo) remove duplicated word in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c87e2efa4..5b5f3c923 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ and for a store: reduxStore = MyReduxStore(props, railsContext); ``` -Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be definining functions that take take these params and return a React component or a Redux Store. +Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be definining functions that take these params and return a React component or a Redux Store. (Note, see below [section](#multiple-react-components-on-a-page-with-one-store) on how to setup redux stores that allow multiple components to talk to the same store.) From 8d34353b46b8f801290b62889939de9e65e84696 Mon Sep 17 00:00:00 2001 From: eacaps Date: Mon, 25 Jul 2016 10:41:35 -0400 Subject: [PATCH 09/24] updated with proper handles for inMailer --- app/helpers/react_on_rails_helper.rb | 2 +- spec/dummy/config/initializers/react_on_rails.rb | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 305900d87..aad1fc739 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -344,7 +344,7 @@ def initialize_redux_stores # rubocop:disable Metrics/AbcSize def rails_context(server_side:) @rails_context ||= begin - result = {} + result = { inMailer: self.controller.present? && self.controller.kind_of?(ActionMailer::Base) } if request.present? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index 466dea1e5..75a889b0b 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -3,12 +3,10 @@ module RenderingExtension # all calls to react_component and redux_store for rendering def self.custom_context(view_context) result = {} - begin + unless view_context.controller.kind_of?(ActionMailer::Base) result = { somethingUseful: view_context.session[:something_useful] } - rescue - result = {} end result end From eb6e7003ef49e1bad6403ca1ad475bd951326947 Mon Sep 17 00:00:00 2001 From: eacaps Date: Mon, 25 Jul 2016 11:14:41 -0400 Subject: [PATCH 10/24] added inMailer to test --- spec/dummy/spec/requests/server_render_check_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index b36aa3c47..f36bc45c1 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -63,6 +63,7 @@ mail = DummyMailer.hello_email expect(mail.subject).to match "mail" expect(mail.body).to match "Mr. Mailing Server Side Rendering" + expect(mail.body).to match "inMailer":true" end end From e24fb9fd34eed4a1732d878dc176ada4dc502834 Mon Sep 17 00:00:00 2001 From: eacaps Date: Mon, 25 Jul 2016 11:28:56 -0400 Subject: [PATCH 11/24] added inMailer checks for test --- app/helpers/react_on_rails_helper.rb | 4 ++-- spec/dummy/spec/requests/server_render_check_spec.rb | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index aad1fc739..6064ae680 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -351,7 +351,7 @@ def rails_context(server_side:) uri = Addressable::URI.parse(request.original_url) # uri = Addressable::URI.parse("http://foo.com:3000/posts?id=30&limit=5#time=1305298413") - result = { + result.merge!({ # URL settings href: request.original_url, location: "#{uri.path}#{uri.query.present? ? "?#{uri.query}" : ''}", @@ -365,7 +365,7 @@ def rails_context(server_side:) i18nLocale: I18n.locale, i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] - } + }) end if ReactOnRails.configuration.rendering_extension custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index f36bc45c1..c00facb8f 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -65,6 +65,12 @@ expect(mail.body).to match "Mr. Mailing Server Side Rendering" expect(mail.body).to match "inMailer":true" end + + it "sets inMailer properly" do + get client_side_hello_world_path + html_nodes = Nokogiri::HTML(response.body) + expect(html_nodes.css('div#js-react-on-rails-context').attr('data-rails-context').value).to match('inMailer\":false') + end end describe "server rendering railsContext" do From 566d62f8166f8a525ec8b83dd973cdf65f6240ba Mon Sep 17 00:00:00 2001 From: eacaps Date: Mon, 25 Jul 2016 12:59:44 -0400 Subject: [PATCH 12/24] cleaned up rubocop suggestions --- app/helpers/react_on_rails_helper.rb | 6 +++--- spec/dummy/config/initializers/react_on_rails.rb | 2 +- spec/dummy/spec/requests/server_render_check_spec.rb | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 6064ae680..93d3ed563 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -344,14 +344,14 @@ def initialize_redux_stores # rubocop:disable Metrics/AbcSize def rails_context(server_side:) @rails_context ||= begin - result = { inMailer: self.controller.present? && self.controller.kind_of?(ActionMailer::Base) } + result = { inMailer: controller.present? && controller.is_a?(ActionMailer::Base) } if request.present? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) uri = Addressable::URI.parse(request.original_url) # uri = Addressable::URI.parse("http://foo.com:3000/posts?id=30&limit=5#time=1305298413") - result.merge!({ + result.merge!( # URL settings href: request.original_url, location: "#{uri.path}#{uri.query.present? ? "?#{uri.query}" : ''}", @@ -365,7 +365,7 @@ def rails_context(server_side:) i18nLocale: I18n.locale, i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] - }) + ) end if ReactOnRails.configuration.rendering_extension custom_context = ReactOnRails.configuration.rendering_extension.custom_context(self) diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index 75a889b0b..cf08cf653 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -3,7 +3,7 @@ module RenderingExtension # all calls to react_component and redux_store for rendering def self.custom_context(view_context) result = {} - unless view_context.controller.kind_of?(ActionMailer::Base) + unless view_context.controller.is_a?(ActionMailer::Base) result = { somethingUseful: view_context.session[:something_useful] } diff --git a/spec/dummy/spec/requests/server_render_check_spec.rb b/spec/dummy/spec/requests/server_render_check_spec.rb index c00facb8f..57c533375 100644 --- a/spec/dummy/spec/requests/server_render_check_spec.rb +++ b/spec/dummy/spec/requests/server_render_check_spec.rb @@ -69,7 +69,8 @@ it "sets inMailer properly" do get client_side_hello_world_path html_nodes = Nokogiri::HTML(response.body) - expect(html_nodes.css('div#js-react-on-rails-context').attr('data-rails-context').value).to match('inMailer\":false') + expect(html_nodes.css("div#js-react-on-rails-context").attr("data-rails-context").value) + .to match('inMailer\":false') end end From e69480aff80867b8482b97a532af2662b4c1727a Mon Sep 17 00:00:00 2001 From: Devin Osorio Date: Wed, 27 Jul 2016 22:34:13 -0400 Subject: [PATCH 13/24] Fixes typo --- .../templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md b/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md index 642244d66..d624b605a 100644 --- a/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +++ b/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md @@ -5,5 +5,5 @@ See documentation [at github.com/shakacode/react_on_rails](https://github.com/sh If you need additional help, please consider: * [Our ShakaCode Forum for React on Rails](https://forum.shakacode.com/c/rails/reactonrails). -* Joining our Slack discussion room by [email us a bit about you and your project](mailto:contact@shakacode.com). +* Joining our Slack discussion room by [emailing us a bit about you and your project](mailto:contact@shakacode.com). * [Hiring us](https://forum.shakacode.com/c/rails/reactonrails) for coaching and custom web application development for your project. From 13f2cf0e83ee17040363872365cf702afbc1bbc2 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 28 Jul 2016 13:38:29 -1000 Subject: [PATCH 14/24] Update server-rendering-tips.md (#494) Update server-rendering-tips.md and README.md --- README.md | 1 + docs/additional-reading/server-rendering-tips.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 5b5f3c923..a943f6d0b 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We' * On Twitter, follow [@railsonmaui](https://twitter.com/railsonmaui) and [@shakacode](https://twitter.com/shakacode) for updates on releases. # NEWS +* 2016-07-28: If you're doing server rendering, be sure to use mini\_racer! See [issues/428](https://github.com/shakacode/react_on_rails/issues/428). It's supposedly much faster than `execjs`. * 2016-06-13: 6.0.4 shipped with a critical fix regarding a missing polyfill for `clearTimeout`, used by babel-polyfill. * 2016-06-06: 6.0.2 shipped with a critical fix if you are fragment caching the server generated React. * *See [NEWS.md](NEWS.md) for more notes over time.* diff --git a/docs/additional-reading/server-rendering-tips.md b/docs/additional-reading/server-rendering-tips.md index 30ef2421c..d03b63015 100644 --- a/docs/additional-reading/server-rendering-tips.md +++ b/docs/additional-reading/server-rendering-tips.md @@ -1,5 +1,7 @@ # Server Rendering Tips +Be sure to use mini_racer. See [issues/428](https://github.com/shakacode/react_on_rails/issues/428) + ## General Tips - Your code can't reference `document`. Server side JS execution does not have access to `document`, so jQuery and some other libs won't work in this environment. You can debug this by putting in `console.log` From 1e4c0ed0a5f5724ae1252567f9e8ac1bfffb5d6c Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 30 Jul 2016 11:16:25 -1000 Subject: [PATCH 15/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a943f6d0b..755446714 100644 --- a/README.md +++ b/README.md @@ -545,7 +545,7 @@ config.server_render_method = "NodeJS" + [Migration from react-rails](docs/basics/migrating-from-react-rails.md) + [Babel](docs/additional-reading/babel.md) + [Heroku Deployment](docs/additional-reading/heroku-deployment.md) -+ [Manual Installation](docs/additional-reading/manual-installation.md) ++ [Recommended Project Structure](docs/additional-reading/recommended-project-structure.md) + [Hot Reloading of Assets For Rails Development](docs/additional-reading/hot-reloading-rails-development.md) + [Node Dependencies and NPM](docs/additional-reading/node-dependencies-and-npm.md) + [React Router](docs/additional-reading/react-router.md) From cdb246bb7934283fbe5a99c122d5f801a10e67c0 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 30 Jul 2016 12:30:33 -1000 Subject: [PATCH 16/24] Doc Fixes (#499) * Update node-server-rendering.md * Update README.md --- README.md | 145 +++--------------- .../node-server-rendering.md | 132 +++++++++++++++- 2 files changed, 143 insertions(+), 134 deletions(-) diff --git a/README.md b/README.md index 755446714..03f208fd3 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ [![Build Status](https://travis-ci.org/shakacode/react_on_rails.svg?branch=master)](https://travis-ci.org/shakacode/react_on_rails) [![Dependency Status](https://gemnasium.com/shakacode/react_on_rails.svg)](https://gemnasium.com/shakacode/react_on_rails) [![Gem Version](https://badge.fury.io/rb/react_on_rails.svg)](https://badge.fury.io/rb/react_on_rails) [![npm version](https://badge.fury.io/js/react-on-rails.svg)](https://badge.fury.io/js/react-on-rails) [![Code Climate](https://codeclimate.com/github/shakacode/react_on_rails/badges/gpa.svg)](https://codeclimate.com/github/shakacode/react_on_rails) [![Coverage Status](https://coveralls.io/repos/shakacode/react_on_rails/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react_on_rails?branch=master) +Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! -Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project, or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! +Want to become a contributor? See ["easy" issues](https://github.com/shakacode/react_on_rails/labels/easy) and [issues for the tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/issues?q=is%3Aissue+is%3Aopen+label%3Aeasy). # NOTES * Besides consulting on bigger projects, [ShakaCode](http://www.shakacode.com) is doing Skype plus Slack/Github based coaching for "React on Rails". [Click here](http://www.shakacode.com/work/index.html) for more information. * See our article [The React on Rails Doctrine](https://medium.com/@railsonmaui/the-react-on-rails-doctrine-3c59a778c724) and see [slides on React on Rails](http://www.slideshare.net/justingordon/react-on-rails-v4032). * For a complete example, see the [React Webpack Rails Tutorial Code](https://github.com/shakacode/react-webpack-rails-tutorial) along with the live example at [www.reactrails.com](http://www.reactrails.com). -* The generator of React on Rails does not setup CSS modules and hot reloading via the Rails server as is demonstrated in the [shakacode/react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/). *We do support this, but we don't generate the code.* If you did generate a fresh app from react_on_rails and want to move to CSS Modules, then see [PR 175: Babel 6 / CSS Modules / Rails hot reloading](https://github.com/shakacode/react-webpack-rails-tutorial/pull/175). Note, while there are probably fixes after this PR was accepted, this has the majority of the changes. See [the tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/#news) for more information. For more information on how to setup hot reloading in a Rails app, see [Hot Reloading of Assets For Rails Development](docs/additional-reading/hot-reloading-rails-development.md). +* The generator of React on Rails does not setup CSS modules and hot reloading via the Rails server as is demonstrated in the [shakacode/react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/). *We do support this, but we don't generate the code.* If you did generate a fresh app from react_on_rails and wanted to move to CSS Modules, then see [PR 175: Babel 6 / CSS Modules / Rails hot reloading](https://github.com/shakacode/react-webpack-rails-tutorial/pull/175). Note, while there are probably fixes after this PR was accepted, this has the majority of the changes. See [the tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/#news) for more information. For more information on how to setup hot reloading in a Rails app, see [Hot Reloading of Assets For Rails Development](docs/additional-reading/hot-reloading-rails-development.md). * See [Projects](PROJECTS.md) using and [KUDOS](./KUDOS.md) for React on Rails. Please submit yours! Please edit either page or [email us](mailto:contact@shakacode.com) and we'll add your info. We also **love stars** as it helps us attract new users and contributors. -* On Twitter, follow [@railsonmaui](https://twitter.com/railsonmaui) and [@shakacode](https://twitter.com/shakacode) for updates on releases. +* On Twitter, follow [@railsonmaui](https://twitter.com/railsonmaui) and [@shakacode](https://twitter.com/shakacode) for updates on releases. We've got a forum category dedicated to [react_on_rails](http://forum.shakacode.com/c/rails/reactonrails). # NEWS * 2016-07-28: If you're doing server rendering, be sure to use mini\_racer! See [issues/428](https://github.com/shakacode/react_on_rails/issues/428). It's supposedly much faster than `execjs`. @@ -37,7 +38,7 @@ Please see [Getting Started](#getting-started) for how to set up your Rails proj <%= react_component("HelloWorldApp", props: @some_props, prerender: true) %> ``` -+ The `component_name` parameter is a string matching the name you used to globally expose your React component. So, in the above examples, if you had a React component named "HelloWorldApp," you would register it with the following lines: ++ The `component_name` parameter is a string matching the name you used to expose your React component globally. So, in the above examples, if you had a React component named "HelloWorldApp," you would register it with the following lines: ```js import ReactOnRails from 'react-on-rails'; @@ -162,9 +163,9 @@ The generator installs your webpack files in the `client` folder. Foreman uses w Inside your Rails views, you can now use the `react_component` helper method provided by React on Rails. You can pass props directly to the react component helper. You can also initialize a Redux store with view or controller helper `redux_store` so that the store can be shared amongst multiple React components. See the docs for `redux_store` below and scan the code inside of the [/spec/dummy](spec/dummy) sample app. ### Client-Side Rendering vs. Server-Side Rendering -In most cases, you should use the `prerender: false` (default behavior) with the provided helper method to render the React component from your Rails views. In some cases, such as when SEO is vital or many users will not have JavaScript enabled, you can enable server-rendering by passing `prerender: true` to your helper, or you can simply change the default in `config/initializers/react_on_rails`. +In most cases, you should use the `prerender: false` (default behavior) with the provided helper method to render the React component from your Rails views. In some cases, such as when SEO is vital, or many users will not have JavaScript enabled, you can enable server-rendering by passing `prerender: true` to your helper, or you can simply change the default in `config/initializers/react_on_rails`. -Now the server will interpret your JavaScript using [ExecJS](https://github.com/rails/execjs) and pass the resulting HTML to the client. We recommend using [therubyracer](https://github.com/cowboyd/therubyracer) as ExecJS's runtime. The generator will automatically add it to your Gemfile for you. +Now the server will interpret your JavaScript using [ExecJS](https://github.com/rails/execjs) and pass the resulting HTML to the client. We recommend using [mini_racer](https://github.com/discourse/mini_racer) as ExecJS's runtime. The generator will automatically add it to your Gemfile for you (once we complete [#501](https://github.com/shakacode/react_on_rails/issues/501)). In the following screenshot you can see the 3 parts of React on Rails rendering: @@ -202,7 +203,7 @@ and for a store: reduxStore = MyReduxStore(props, railsContext); ``` -Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be definining functions that take these params and return a React component or a Redux Store. +Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be defining functions that take these params and return a React component or a Redux Store. (Note, see below [section](#multiple-react-components-on-a-page-with-one-store) on how to setup redux stores that allow multiple components to talk to the same store.) @@ -341,7 +342,7 @@ Place this view helper (no parameters) at the end of your shared layout. This te Note, you don't need to separately initialize your redux store. However, it's recommended for the two following use cases: 1. You want to have multiple components that access the same store. -2. You want to place the props to hydrate the client side stores at the very end of your HTML, so the browser can render all earlier HTML first. This is particularly useful if your props will be large. +2. You want to place the props to hydrate the client side stores at the very end of your HTML so that the browser can render all earlier HTML first. This is particularly useful if your props will be large. ### Generator Functions Why would you create a function that returns a React component? For example, you may want the ability to use the passed-in props to initialize a redux store or setup react-router. Or you may want to return different components depending on what's in the props. ReactOnRails will automatically detect a registered generator function. @@ -350,14 +351,14 @@ Why would you create a function that returns a React component? For example, you `server_render_js(js_expression, options = {})` + js_expression, like 2 + 3, and not a block of js code. If you have more than one line that needs to be executed, wrap it in an [IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression). JS exceptions will be caught and console messages handled properly -+ Currently the only option you may pass is `replay_console` (boolean) ++ Currently, the only option you may pass is `replay_console` (boolean) This is a helper method that takes any JavaScript expression and returns the output from evaluating it. If you have more than one line that needs to be executed, wrap it in an IIFE. JS exceptions will be caught and console messages handled properly. ## Multiple React Components on a Page with One Store -You may wish to have 2 React components share the same the Redux store. For example, if your navbar is a React component, you may want it to use the same store as your component in the main area of the page. You may even want multiple React components in the main area, which allows for greater modularity. In addition, you may want this to work with Turbolinks to minimize reloading the JavaScript. A good example of this would be something like an a notifications counter in a header. As each notifications is read in the body of the page, you would like to update the header. If both the header and body share the same Redux store, then this is trivial. Otherwise, we have to rely on other solutions, such as the header polling the server to see how many unread notifications exist. +You may wish to have 2 React components share the same the Redux store. For example, if your navbar is a React component, you may want it to use the same store as your component in the main area of the page. You may even want multiple React components in the main area, which allows for greater modularity. In addition, you may want this to work with Turbolinks to minimize reloading the JavaScript. A good example of this would be something like a notifications counter in a header. As each notification is read in the body of the page, you would like to update the header. If both the header and body share the same Redux store, then this is trivial. Otherwise, we have to rely on other solutions, such as the header polling the server to see how many unread notifications exist. -Suppose the Redux store is called `appStore`, and you have 3 React components that each need to connect to a store: `NavbarApp`, `CommentsApp`, and `BlogsApp`. I named them with `App` to indicate that they are the registered components. +Suppose the Redux store is called `appStore`, and you have 3 React components that each needs to connect to a store: `NavbarApp`, `CommentsApp`, and `BlogsApp`. I named them with `App` to indicate that they are the registered components. You will need to make a function that can create the store you will be using for all components and register it via the `registerStore` method. Note, this is a **storeCreator**, meaning that it is a function that takes (props, location) and returns a store: @@ -425,115 +426,7 @@ See [ReactOnRails JavaScriptAPI](docs/api/javascript-api.md). * If you're using the node server for server rendering, you may want to do your own AWS install. We'll have more docs on this in the future. ## Integration with Node -NodeJS can be used as the backend for server-side rendering instead of ExecJS. To do this you need to add a few files and then configure react_on_rails to use NodeJS. Here are the relevant files to add. - -```javascript -// client/node/package.json -{ - "name": "react_on_rails_node", - "version": "0.0.0", - "private": true, - "scripts": { - "start": "node ./server.js -s webpack-bundle.js" - }, - "dependencies": { - } -} -``` - -```javascript -// client/node/server.js -var net = require('net'); -var fs = require('fs'); - -var bundlePath = '../../app/assets/webpack/'; -var bundleFileName = 'webpack-bundle.js'; - -var currentArg; - -function Handler() { - this.queue = []; - this.initialized = false; -} - -Handler.prototype.handle = function (connection) { - var callback = function () { - connection.setEncoding('utf8'); - connection.on('data', (data)=> { - console.log('Processing request: ' + data); - var result = eval(data); - connection.write(result); - }); - }; - - if (this.initialized) { - callback(); - } else { - this.queue.push(callback); - } -}; - -Handler.prototype.initialize = function () { - console.log('Processing ' + this.queue.length + ' pending requests'); - var callback; - while (callback = this.queue.pop()) { - callback(); - } - - this.initialized = true; -}; - -var handler = new Handler(); - -process.argv.forEach((val) => { - if (val[0] == '-') { - currentArg = val.slice(1); - return; - } - - if (currentArg == 's') { - bundleFileName = val; - } -}); - -try { - fs.mkdirSync(bundlePath); -} catch (e) { - if (e.code != 'EEXIST') throw e; -} - -fs.watchFile(bundlePath + bundleFileName, (curr) => { - if (curr && curr.blocks && curr.blocks > 0) { - if (handler.initialized) { - console.log('Reloading server bundle must be implemented by restarting the node process!'); - return; - } - - require(bundlePath + bundleFileName); - console.log('Loaded server bundle: ' + bundlePath + bundleFileName); - handler.initialize(); - } -}); - -var unixServer = net.createServer(function (connection) { - handler.handle(connection); -}); - -unixServer.listen('node.sock'); - -process.on('SIGINT', () => { - unixServer.close(); - process.exit(); -}); - -``` - -The last thing you'll need to do is change the server_render_method to "NodeJS". - -```ruby -# app/config/initializers/react_on_rails.rb -config.server_render_method = "NodeJS" -``` +Node.js can be used as the backend for server-side rendering instead of [execJS](https://github.com/rails/execjs). Before you try this, consider the tradeoff of extra complexity with your deployments versus *potential* performance gains. We've found that using ExecJS with [mini_racer](https://github.com/discourse/mini_racer) to be "fast enough" so far. That being said, we've heard of other large websites using Node.js for better server rendering performance. See [Node.js for Server Rendering](docs/additional-reading/node-server-rendering.md) for more information. ## Additional Reading + [JavaScript API](docs/api/javascript-api.md) @@ -553,13 +446,13 @@ config.server_render_method = "NodeJS" + [Server Rendering Tips](docs/additional-reading/server-rendering-tips.md) + [Rails View Rendering from Inline JavaScript](docs/additional-reading/rails_view_rendering_from_inline_javascript.md) + [Tips](docs/additional-reading/tips.md) -+ [Tutorial for v2.0](docs/tutorial-v2.md), deployed [here](https://shakacode-react-on-rails.herokuapp.com/). ++ [Tutorial for up to v5.1.1](docs/tutorial.md), deployed [here](https://shakacode-react-on-rails.herokuapp.com/) (See [Issue #500](https://github.com/shakacode/react_on_rails/issues/500). + [Turbolinks](docs/additional-reading/turbolinks.md) + [Webpack Configuration](docs/additional-reading/webpack.md) + [Webpack Cookbook](https://christianalfoni.github.io/react-webpack-cookbook/index.html) + [Changelog](CHANGELOG.md) + [Projects](PROJECTS.md) -+ [Developing with the Webpack Dev Server](docs/additional-reading/webpack-dev-server) ++ [Developing with the Webpack Dev Server](docs/additional-reading/webpack-dev-server.md) ## Demos + [www.reactrails.com](http://www.reactrails.com) with the source at [shakacode/react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/). @@ -592,10 +485,8 @@ The gem project started with [Justin Gordon](https://github.com/justin808/) pair We owe much gratitude to the work of the [react-rails gem](https://github.com/reactjs/react-rails). -## About [ShakaCode](http://www.shakacode.com/) - -Visit [our forums!](http://forum.shakacode.com). We've got a [category dedicated to react_on_rails](http://forum.shakacode.com/c/rails/reactonrails). +## A Personal Note From Justin -If you're looking for consulting on a project using React and Rails, email us ([contact@shakacode.com](mailto: contact@shakacode.com))! You can also join our slack room for some free advice. +Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! -We're looking for great developers that want to work with Rails + React with a distributed, worldwide team, for our own products, client work, and open source. [More info here](http://www.shakacode.com/about/index.html#work-with-us). +I'm also looking for great developers for the ShakaCode team! [Contact me](mailtojustin@shakacode.com) or click [here](http://www.shakacode.com/about/index.html#work-with-us) if you want to work with Rails + React + React-Native on a distributed, worldwide team. diff --git a/docs/additional-reading/node-server-rendering.md b/docs/additional-reading/node-server-rendering.md index 9341f1769..1728fac82 100644 --- a/docs/additional-reading/node-server-rendering.md +++ b/docs/additional-reading/node-server-rendering.md @@ -1,18 +1,30 @@ -## Node Server Rendering +# Node.js for Server Rendering -### Warning: this is an experimental feature +Node.js can be used as the backend for server-side rendering instead of [execJS](https://github.com/rails/execjs). Before you try this, consider the tradeoff of extra complexity with your deployments versus *potential* performance gains. We've found that using ExecJS with [mini_racer](https://github.com/discourse/mini_racer) to be "fast enough" so far. That being said, we've heard of other large websites using Node.js for better server rendering performance. -The default server rendering exploits ExecJS to render react components. -Node server rendering allows you to use separate NodeJS process as a renderer. The process loads your configured server_bundle_js file and -then executes javascript to render the component inside its environment. The communication between rails and node occurs -via socket (`client/node/node.sock`) +If you're serious about this comparing Node.js versus execJS/mini_racer, then [get in touch](mailto:justin@shakacode.com)! We can definitely collaborate with you on refining this solution. However, please try out these instructions first. + +## Setup of React on Rails with Node.js Server Rendering +**Warning: this is an experimental feature.** + +To do this you need to add a few files and then configure react_on_rails to use NodeJS. Here are the relevant files to add. + +Node server rendering allows you to use separate NodeJS process as a renderer. The process loads your configured server_bundle_js file and then executes javascript to render the component inside its environment. The communication between rails and node occurs +via a socket (`client/node/node.sock`) ### Getting started +### Configuration + +#### Update the React on Rails Initializer + To use node process just set `server_render_method = "NodeJS"` in `config/initializers/react_on_rails.rb`. To change back to ExecJS set `server_render_method = "ExecJS"` -### Configuration +```ruby +# app/config/initializers/react_on_rails.rb +config.server_render_method = "NodeJS" +``` You need to configure the name of the server bundle in two places: @@ -26,3 +38,109 @@ You need to configure the name of the server bundle in two places: # not affect performance. config.server_bundle_js_file = "webpack-bundle.js" ``` + +And in `client/node/package.json` + +```javascript +// client/node/package.json +{ + "name": "react_on_rails_node", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./server.js -s webpack-bundle.js" + }, + "dependencies": { + } +} +``` + +And you'll need this file: `client/node/server.js` + +```javascript +// client/node/server.js +var net = require('net'); +var fs = require('fs'); + +var bundlePath = '../../app/assets/webpack/'; +var bundleFileName = 'webpack-bundle.js'; + +var currentArg; + +function Handler() { + this.queue = []; + this.initialized = false; +} + +Handler.prototype.handle = function (connection) { + var callback = function () { + connection.setEncoding('utf8'); + connection.on('data', (data)=> { + console.log('Processing request: ' + data); + var result = eval(data); + connection.write(result); + }); + }; + + if (this.initialized) { + callback(); + } else { + this.queue.push(callback); + } +}; + +Handler.prototype.initialize = function () { + console.log('Processing ' + this.queue.length + ' pending requests'); + var callback; + while (callback = this.queue.pop()) { + callback(); + } + + this.initialized = true; +}; + +var handler = new Handler(); + +process.argv.forEach((val) => { + if (val[0] == '-') { + currentArg = val.slice(1); + return; + } + + if (currentArg == 's') { + bundleFileName = val; + } +}); + +try { + fs.mkdirSync(bundlePath); +} catch (e) { + if (e.code != 'EEXIST') throw e; +} + +fs.watchFile(bundlePath + bundleFileName, (curr) => { + if (curr && curr.blocks && curr.blocks > 0) { + if (handler.initialized) { + console.log('Reloading server bundle must be implemented by restarting the node process!'); + return; + } + + require(bundlePath + bundleFileName); + console.log('Loaded server bundle: ' + bundlePath + bundleFileName); + handler.initialize(); + } +}); + +var unixServer = net.createServer(function (connection) { + handler.handle(connection); +}); + +unixServer.listen('node.sock'); + +process.on('SIGINT', () => { + unixServer.close(); + process.exit(); +}); + +``` + From 07a6e481875f618057a2878e8546b097010b674d Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 17 Jul 2016 23:23:03 -1000 Subject: [PATCH 17/24] Enhancements to webpack asset preparation * Better messages when creating symlinks * Updated documentation * Enhanced example * Support subdirectories with webpack assets * Move logic for assets code to service object * Using defaults of the env settings or else values for directories and regexp can be provided. --- docs/additional-reading/rails-assets.md | 84 +++++++++++-- .../config/initializers/react_on_rails.rb.tt | 4 +- lib/react_on_rails/assets_precompile.rb | 110 ++++++++++++++++++ lib/react_on_rails/configuration.rb | 2 +- lib/tasks/assets.rake | 83 ++----------- spec/dummy/Gemfile | 2 +- spec/dummy/Gemfile.lock | 24 +++- spec/dummy/app/assets/images/.keep | 0 spec/dummy/app/views/pages/_header.erb | 3 + .../css_modules_images_fonts_example.html.erb | 14 +++ .../app/assets/fonts/OpenSans-Light.ttf | Bin 0 -> 107460 bytes .../app/assets/images/guest-list-accepted.png | Bin 0 -> 2917 bytes .../client/app/assets/images/last-call.png | Bin 0 -> 208205 bytes .../app/assets/images/logos/railsonmaui.png | Bin 0 -> 4517 bytes .../CssModulesImagesFontsExample.jsx | 28 +++++ .../CssModulesImagesFontsExample.scss | 52 +++++++++ .../client/app/startup/clientRegistration.jsx | 2 + .../client/app/startup/serverRegistration.jsx | 2 + .../client/webpack.client.base.config.js | 6 +- spec/dummy/config/environments/production.rb | 2 +- .../config/initializers/react_on_rails.rb | 8 +- spec/dummy/config/routes.rb | 1 + spec/dummy/config/secrets.yml | 3 +- spec/dummy/package.json | 2 +- spec/react_on_rails/assets_precompile_spec.rb | 26 +++++ .../ensure_assets_compiled_spec.rb | 2 +- .../webpack_assets_status_checker_spec.rb | 2 +- 27 files changed, 358 insertions(+), 104 deletions(-) create mode 100644 lib/react_on_rails/assets_precompile.rb delete mode 100644 spec/dummy/app/assets/images/.keep create mode 100644 spec/dummy/app/views/pages/css_modules_images_fonts_example.html.erb create mode 100644 spec/dummy/client/app/assets/fonts/OpenSans-Light.ttf create mode 100644 spec/dummy/client/app/assets/images/guest-list-accepted.png create mode 100644 spec/dummy/client/app/assets/images/last-call.png create mode 100644 spec/dummy/client/app/assets/images/logos/railsonmaui.png create mode 100644 spec/dummy/client/app/components/CssModulesImagesFontsExample.jsx create mode 100644 spec/dummy/client/app/components/CssModulesImagesFontsExample.scss create mode 100644 spec/react_on_rails/assets_precompile_spec.rb diff --git a/docs/additional-reading/rails-assets.md b/docs/additional-reading/rails-assets.md index 80e30b62c..84e1b4601 100644 --- a/docs/additional-reading/rails-assets.md +++ b/docs/additional-reading/rails-assets.md @@ -1,19 +1,83 @@ -## Rails assets +# Rails assets and the Extract Text Plugin -### Problem -When client js uses images in render methods, e.g. `` or in css, e.g. `background-image: url(...)` -these assets fail to load. This happens because rails adds digest hashes to filenames -when compiling assets, e.g. `img1.jpg` becomes `img1-dbu097452jf2v2.jpg`. +The [Webpack file loader](https://github.com/webpack/file-loader) copies referenced files to +the destination output directory, with an MD5 hash. The other term for this is a "digest". + +> By default the filename of the resulting file is the MD5 hash of the file's contents with +the original extension of the required resource. + +The most common use cases for Webpack processed files are images used for backgrounds in +CSS and fonts for CSS. However, this applies to any file that might be processed using the +Webpack file loader. + +## The Problem +To understand the problem, it helps to read this article: +[What is fingerprinting and why should I care](http://guides.rubyonrails.org/asset_pipeline.html#what-is-fingerprinting-and-why-should-i-care-questionmark) +Basically, when Rails prepares assets for production deployments, it also adds a digest +to the file names. E.g., `img1.jpg` becomes `img1-dbu097452jf2v2.jpg`. When compiling its native css Rails transforms all urls and links to digested versions, i.e. `background-image: image-url(img1.jpg)` becomes `background-image: url(img1-dbu097452jf2v2.jpg)`. However this doesn't happen for js and css files compiled by webpack on the client side, because they don't use -`image-url` and `asset-url` and therefore assets fail to load. +`image-url` and `asset-url`. Without some fix, these assets would fail to load. -### Solution +When Webpack's client JavaScript uses images in render methods, e.g. `` or +in css, e.g. `background-image: url(...)` The code (such as the CSS) generated by the Webpack +will have the Webpack digested name (MD5 hash). Since the Webpack generated CSS expects +just one level of "digesting", this "double-digesting" from Rails will cause such these assets +fail to load. -React on Rails creates symlinks of non-digested versions to digested versions when doing a Rails assets compile. -The solution is implemented using `assets:precompile` after-hook. The assets for symlinking -are defined by `config.symlink_non_digested_assets_regex` in `config/initializers/react_on_rails.rb`. +## The Solution: Symlink Original File Names to New File Names +React on Rails creates symlinks of non-digested versions (original webpack digested file names) +to the Rails deployed digested versions when doing a Rails assets compile. The solution is +implemented using `assets:precompile` after-hook in +file [lib/tasks/assets.rake](../../lib/tasks/assets.rake) +The assets for symlinking are defined by `config.symlink_non_digested_assets_regex` in +`config/initializers/react_on_rails.rb`. + +## Disabling the Symlinking To disable symlinks set this parameter to `nil`. + + +## Example from /spec/dummy + +If you run + +``` +cd spec/dummy +RAILS_ENV=production bundle exec rake assets:precompile +rails s -e production +``` + +You will see this. This shows how the file names output by rails. Note the original names after +being processed by Webpack are just MD5's. + +``` +I, [2016-07-17T23:46:56.301981 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/server-bundle-42935dea382802a27e91b7df444a2813f74b4e6a0fce5606d863aaa10c0623d7.js +I, [2016-07-17T23:46:56.305649 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/server-bundle-42935dea382802a27e91b7df444a2813f74b4e6a0fce5606d863aaa10c0623d7.js.gz +I, [2016-07-17T23:46:56.370390 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/application_static-dfa728160c3cdebc633c2f6fb3823411530b307044f4dfe460790eef00b4e421.js +I, [2016-07-17T23:46:56.370566 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/application_static-dfa728160c3cdebc633c2f6fb3823411530b307044f4dfe460790eef00b4e421.js.gz +I, [2016-07-17T23:46:56.372895 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/application_static-17ed778d5061d4797556632b7bfbf405e067d9e7f140060a7f56a09788251f16.css +I, [2016-07-17T23:46:56.373012 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/application_static-17ed778d5061d4797556632b7bfbf405e067d9e7f140060a7f56a09788251f16.css.gz +I, [2016-07-17T23:46:56.374531 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756-ab14eebb171a9a5c9bfdeb2f88933d2dc4904ea8bb09444984e52b13d230e251.svg +I, [2016-07-17T23:46:56.374818 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756-ab14eebb171a9a5c9bfdeb2f88933d2dc4904ea8bb09444984e52b13d230e251.svg.gz +I, [2016-07-17T23:46:56.392207 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/5cf5db49df178f9357603f945752a1ef-033650e1d6193b70d59bb60e773f47b6d9aefdd56abc7ccdba3c7bed4e57ccad.png +I, [2016-07-17T23:46:56.393208 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/8970f5e1e92aea933b502a2d73976b76-877bde3739dc7080c3fb00ee9012db6f21ed0dbbf11cd596dbb6e1a35bfb71f9.png +I, [2016-07-17T23:46:56.395490 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa-6d1ab3741d5a164dc2aab48bb74429aebe2e2e29606feca581081697624dc18c.ttf +I, [2016-07-17T23:46:56.395846 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa-6d1ab3741d5a164dc2aab48bb74429aebe2e2e29606feca581081697624dc18c.ttf.gz +I, [2016-07-17T23:46:56.396979 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0-5731789fd0d7847a582b52b55a83e7a0ad4684acd5a9b487557635a08c112d0e.svg +I, [2016-07-17T23:46:56.397669 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0-5731789fd0d7847a582b52b55a83e7a0ad4684acd5a9b487557635a08c112d0e.svg.gz +I, [2016-07-17T23:46:56.399261 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056-efba50c701b697fc8160603b9e876adcf47511f35af68701db285272c965a45f.svg +I, [2016-07-17T23:46:56.399660 #77382] INFO -- : Writing /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056-efba50c701b697fc8160603b9e876adcf47511f35af68701db285272c965a45f.svg.gz +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756-ab14eebb171a9a5c9bfdeb2f88933d2dc4904ea8bb09444984e52b13d230e251.svg to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756.svg +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756-ab14eebb171a9a5c9bfdeb2f88933d2dc4904ea8bb09444984e52b13d230e251.svg.gz to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/2ac2dd94f9b7e54292f6d051f1e4e756.svg.gz +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/5cf5db49df178f9357603f945752a1ef-033650e1d6193b70d59bb60e773f47b6d9aefdd56abc7ccdba3c7bed4e57ccad.png to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/5cf5db49df178f9357603f945752a1ef.png +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/8970f5e1e92aea933b502a2d73976b76-877bde3739dc7080c3fb00ee9012db6f21ed0dbbf11cd596dbb6e1a35bfb71f9.png to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/8970f5e1e92aea933b502a2d73976b76.png +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa-6d1ab3741d5a164dc2aab48bb74429aebe2e2e29606feca581081697624dc18c.ttf to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa.ttf +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa-6d1ab3741d5a164dc2aab48bb74429aebe2e2e29606feca581081697624dc18c.ttf.gz to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/ecb4572a5e478b107dfcb60c16a7eefa.ttf.gz +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0-5731789fd0d7847a582b52b55a83e7a0ad4684acd5a9b487557635a08c112d0e.svg to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0.svg +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0-5731789fd0d7847a582b52b55a83e7a0ad4684acd5a9b487557635a08c112d0e.svg.gz to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fbd0d00cc9b670f05c17893a40da08d0.svg.gz +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056-efba50c701b697fc8160603b9e876adcf47511f35af68701db285272c965a45f.svg to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056.svg +React On Rails: Symlinking /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056-efba50c701b697fc8160603b9e876adcf47511f35af68701db285272c965a45f.svg.gz to /Users/justin/shakacode/react_on_rails/spec/dummy/public/assets/fc2dcaaf2057331ff76c5d37e1aa7056.svg +``` diff --git a/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt b/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt index 74f09e958..94d62cf90 100644 --- a/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt +++ b/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt @@ -70,8 +70,8 @@ ReactOnRails.configure do |config| config.server_render_method = "ExecJS" # Client js uses assets not digested by rails. - # For any asset matching this regex, non-digested symlink will be created + # For any asset matching this regex, non-digested symlink will be created (what webpack's css wants) # To disable symlinks set this parameter to nil. - config.symlink_non_digested_assets_regex = /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg)/ + config.symlink_non_digested_assets_regex = /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg|map)/ end diff --git a/lib/react_on_rails/assets_precompile.rb b/lib/react_on_rails/assets_precompile.rb new file mode 100644 index 000000000..5f772a129 --- /dev/null +++ b/lib/react_on_rails/assets_precompile.rb @@ -0,0 +1,110 @@ +module ReactOnRails + class AssetsPrecompile + # Used by the rake task + def default_asset_path + dir = File.join(Rails.configuration.paths["public"].first, + Rails.configuration.assets.prefix) + Pathname.new(dir) + end + + def initialize(assets_path: nil, + symlink_non_digested_assets_regex: nil, + generated_assets_dir: nil) + @assets_path = assets_path.presence || default_asset_path + @symlink_non_digested_assets_regex = symlink_non_digested_assets_regex.presence || + ReactOnRails.configuration.symlink_non_digested_assets_regex + @generated_assets_dir = generated_assets_dir.presence || ReactOnRails.configuration.generated_assets_dir + end + + # target and symlink are relative to the assets directory + def symlink_file(target, symlink) + target_path = @assets_path.join(target) + symlink_path = @assets_path.join(symlink) + target_exists = File.exist?(target_path) + + # File.exist?(symlink_path) will check the file the sym is pointing to is existing + # File.lstat(symlink_path).symlink? confirms that this is a symlink + symlink_already_there_and_valid = File.exist?(symlink_path) && + File.lstat(symlink_path).symlink? + if symlink_already_there_and_valid + puts "React On Rails: Digested #{symlink} already exists indicating #{target} did not change." + elsif target_exists + if File.exist?(symlink_path) && File.lstat(symlink_path).symlink? + puts "React On Rails: Removing invalid symlink #{symlink_path}" + `cd #{@assets_path} && rm #{symlink}` + end + # Might be like: + # "images/5cf5db49df178f9357603f945752a1ef.png": + # "images/5cf5db49df178f9357603f945752a1ef-033650e1d6193b70d59bb60e773f47b6d9aefdd56abc7cc.png" + # need to cd to directory and then symlink + target_sub_path, _divider, target_filename = target.rpartition("/") + _symlink_sub_path, _divider, symlink_filename = symlink.rpartition("/") + puts "React On Rails: Symlinking #{target} to #{symlink}" + dest_path = File.join(@assets_path, target_sub_path) + `cd #{dest_path} && ln -s #{target_filename} #{symlink_filename}` + end + end + + def symlink_non_digested_assets + # digest ==> means that the file has a unique sha so the browser will load a new copy. + # Webpack's CSS extract-text-plugin copies digested asset files over to directory where we put + # we deploy the webpack compiled JS file. Since Rails will deploy the image files in this + # directory with a digest, then the files are essentially "double-digested" and the CSS + # references from webpack's CSS would be invalid. The fix is to symlink the double-digested + # file back to the original digested name, and make a similar symlink for the gz version. + if @symlink_non_digested_assets_regex + manifest_glob = Dir.glob(@assets_path.join(".sprockets-manifest-*.json")) + + Dir.glob(@assets_path.join("manifest-*.json")) + if manifest_glob.empty? + puts "Warning: React On Rails: expected to find .sprockets-manifest-*.json or manifest-*.json "\ + "at #{@assets_path}, but found none. Canceling symlinking tasks." + return -1 + end + manifest_path = manifest_glob.first + manifest_data = JSON.load(File.new(manifest_path)) + + # We realize that we're copying other Rails assets that match the regexp, but this just + # means that we'd be exposing the original, undigested names. + manifest_data["assets"].each do |original_filename, rails_digested_filename| + # TODO: we should remove any original_filename that is NOT in the webpack deploy folder. + next unless original_filename =~ @symlink_non_digested_assets_regex + # We're symlinking from the digested filename back to the original filename which has + # already been symlinked by Webpack + symlink_file(rails_digested_filename, original_filename) + + # We want the gz ones as well + symlink_file("#{rails_digested_filename}.gz", "#{original_filename}.gz") + end + end + end + + def delete_broken_symlinks + Dir.glob(@assets_path.join("*")).each do |filename| + next unless File.lstat(filename).symlink? + begin + target = File.readlink(filename) + rescue + puts "React on Rails: Warning: your platform doesn't support File::readlink method." / + "Skipping broken link check." + break + end + path = Pathname.new(File.dirname(filename)) + target_path = path.join(target) + unless File.exist?(target_path) + puts "React on Rails: Deleting broken link: #{filename}" + File.delete(filename) + end + end + end + + def clobber + dir = Rails.root.join(@generated_assets_dir) + if dir.present? && File.directory?(dir) + puts "Deleting files in directory #{dir}" + FileUtils.rm_r(Dir.glob(Rails.root.join("#{@generated_assets_dir}/*"))) + else + puts "Could not find generated_assets_dir #{dir} defined in react_on_rails initializer: " + end + end + end +end diff --git a/lib/react_on_rails/configuration.rb b/lib/react_on_rails/configuration.rb index 25c06d3b9..6c60b3eb5 100644 --- a/lib/react_on_rails/configuration.rb +++ b/lib/react_on_rails/configuration.rb @@ -57,7 +57,7 @@ def self.configuration webpack_generated_files: [], rendering_extension: nil, server_render_method: "", - symlink_non_digested_assets_regex: /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg)/, + symlink_non_digested_assets_regex: /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg|map)/, npm_build_test_command: "", npm_build_production_command: "" ) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index a6936986e..ea83248fb 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -1,72 +1,15 @@ -module ReactOnRails - class << self - def assets_path - dir = File.join(Rails.configuration.paths['public'].first, - Rails.configuration.assets.prefix) - Pathname.new(dir) - end - - def symlink_file(target, symlink) - target_path = ReactOnRails::assets_path.join(target) - symlink_path = ReactOnRails::assets_path.join(symlink) - if not File.exist?(symlink_path) or File.lstat(symlink_path).symlink? - if File.exist?(target_path) - puts "React On Rails: Symlinking #{target_path} to #{symlink_path}" - `cd #{ReactOnRails::assets_path} && ln -s #{target} #{symlink}` - end - else - puts "React On Rails: File #{symlink_path} already exists. Failed to symlink #{target_path}" - end - end - end -end +require "react_on_rails/assets_precompile" namespace :react_on_rails do namespace :assets do desc "Creates non-digested symlinks for the assets in the public asset dir" task symlink_non_digested_assets: :"assets:environment" do - if ReactOnRails.configuration.symlink_non_digested_assets_regex - manifest_glob = Dir.glob(ReactOnRails::assets_path.join(".sprockets-manifest-*.json")) + - Dir.glob(ReactOnRails::assets_path.join("manifest-*.json")) - if manifest_glob.empty? - puts "Warning: React On Rails: expected to find .sprockets-manifest-*.json or manifest-*.json "\ - "at #{ReactOnRails::assets_path}, but found none. Canceling symlinking tasks." - next - end - manifest_path = manifest_glob.first - manifest_data = JSON.load(File.new(manifest_path)) - - manifest_data["assets"].each do |logical_path, digested_path| - regex = ReactOnRails.configuration.symlink_non_digested_assets_regex - if logical_path =~ regex - digested_gz_path = "#{digested_path}.gz" - logical_gz_path = "#{logical_path}.gz" - ReactOnRails::symlink_file(digested_path, logical_path) - ReactOnRails::symlink_file(digested_gz_path, logical_gz_path) - end - end - end + ReactOnRails::AssetsPrecompile.new.symlink_non_digested_assets end desc "Cleans all broken symlinks for the assets in the public asset dir" task delete_broken_symlinks: :"assets:environment" do - Dir.glob(ReactOnRails::assets_path.join("*")).each do |filename| - if File.lstat(filename).symlink? - begin - target = File.readlink(filename) - rescue - puts "React on Rails: Warning: your platform doesn't support File::readlink method."/ - "Skipping broken link check." - return - end - path = Pathname.new(File.dirname(filename)) - target_path = path.join(target) - unless File.exist?(target_path) - puts "React on Rails: Deleting broken link: #{filename}" - File.delete(filename) - end - end - end + ReactOnRails::AssetsPrecompile.new.delete_broken_symlinks end # In this task, set prerequisites for the assets:precompile task @@ -93,13 +36,7 @@ sh "cd client && `ReactOnRails.configuration.npm_build_production_command`" desc "Delete assets created with webpack, in the generated assetst directory (/app/assets/webpack)" task clobber: :environment do - dir = Rails.root.join(ReactOnRails.configuration.generated_assets_dir) - if dir.present? && File.directory?(dir) - puts "Deleting files in directory #{dir}" - rm_r Dir.glob(Rails.root.join("#{ReactOnRails.configuration.generated_assets_dir}/*")) - else - puts "Could not find dir #{dir}" - end + ReactOnRails::AssetsPrecompile.new.clobber end end end @@ -107,10 +44,10 @@ end # These tasks run as pre-requisites of assets:precompile. # Note, it's not possible to refer to ReactOnRails configuration values at this point. Rake::Task["assets:precompile"] - .clear_prerequisites - .enhance([:environment, "react_on_rails:assets:compile_environment"]) - .enhance do - Rake::Task["react_on_rails:assets:symlink_non_digested_assets"].invoke - Rake::Task["react_on_rails:assets:delete_broken_symlinks"].invoke - end + .clear_prerequisites + .enhance([:environment, "react_on_rails:assets:compile_environment"]) + .enhance do + Rake::Task["react_on_rails:assets:symlink_non_digested_assets"].invoke + Rake::Task["react_on_rails:assets:delete_broken_symlinks"].invoke + end diff --git a/spec/dummy/Gemfile b/spec/dummy/Gemfile index 8e48151a7..3acfa0915 100644 --- a/spec/dummy/Gemfile +++ b/spec/dummy/Gemfile @@ -23,7 +23,7 @@ if ENV["DISABLE_TURBOLINKS"].nil? || ENV["DISABLE_TURBOLINKS"].strip.empty? if ENV["ENABLE_TURBOLINKS_5"].nil? || ENV["ENABLE_TURBOLINKS_5"].strip.empty? gem 'turbolinks', '2.5.3' else - gem 'turbolinks', '~> 5.0.0.beta2' + gem 'turbolinks', '~> 5.0' end end diff --git a/spec/dummy/Gemfile.lock b/spec/dummy/Gemfile.lock index 0a0f7a323..ef49e2a59 100644 --- a/spec/dummy/Gemfile.lock +++ b/spec/dummy/Gemfile.lock @@ -1,6 +1,13 @@ PATH remote: ../.. specs: + react_on_rails (6.0.5) + addressable + connection_pool + execjs (~> 2.5) + foreman + rails (>= 3.2) + rainbow (~> 2.1) GEM remote: https://rubygems.org/ @@ -78,6 +85,7 @@ GEM execjs coffee-script-source (1.10.0) concurrent-ruby (1.0.2) + connection_pool (2.2.0) coveralls (0.8.13) json (~> 1.8) simplecov (~> 0.11.0) @@ -88,8 +96,10 @@ GEM diff-lcs (1.2.5) docile (1.1.5) erubis (2.7.0) - execjs (2.6.0) + execjs (2.7.0) ffi (1.9.10) + foreman (0.81.0) + thor (~> 0.19.1) generator_spec (0.9.3) activesupport (>= 3.0.0) railties (>= 3.0.0) @@ -117,13 +127,15 @@ GEM mime-types (3.0) mime-types-data (~> 3.2015) mime-types-data (3.2016.0221) - mini_portile2 (2.0.0) - minitest (5.8.4) + mini_portile2 (2.1.0) + minitest (5.9.0) multi_json (1.12.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) parser (2.3.1.0) ast (~> 2.2) + pkg-config (1.1.7) poltergeist (1.9.0) capybara (~> 2.1) cliver (~> 0.3.1) @@ -176,7 +188,7 @@ GEM rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.1.0) - rake (11.1.2) + rake (11.2.2) rdoc (4.2.2) json (~> 1.4) ref (2.0.0) diff --git a/spec/dummy/app/assets/images/.keep b/spec/dummy/app/assets/images/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/spec/dummy/app/views/pages/_header.erb b/spec/dummy/app/views/pages/_header.erb index 9413224a7..d9eaf8a9b 100644 --- a/spec/dummy/app/views/pages/_header.erb +++ b/spec/dummy/app/views/pages/_header.erb @@ -62,5 +62,8 @@
  • <%= link_to "Pure Component", pure_component_path %>
  • +
  • + <%= link_to "CSS Modules Images Fonts Example", css_modules_images_fonts_example_path %> +

  • diff --git a/spec/dummy/app/views/pages/css_modules_images_fonts_example.html.erb b/spec/dummy/app/views/pages/css_modules_images_fonts_example.html.erb new file mode 100644 index 000000000..589efcfe6 --- /dev/null +++ b/spec/dummy/app/views/pages/css_modules_images_fonts_example.html.erb @@ -0,0 +1,14 @@ +<%= render "header" %> + +<%= react_component("CssModulesImagesFontsExample", prerender: true, trace: true) %> + +
    + +

    React Rails Server CSS Modules with Images and Fonts

    +

    Used to test digests of images and fonts

    +
    +
    +<%%= react_component("CssModulesImagesFontsExample",
    +  prerender: true,
    +  trace: true %>
    +
    diff --git a/spec/dummy/client/app/assets/fonts/OpenSans-Light.ttf b/spec/dummy/client/app/assets/fonts/OpenSans-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dddcc62a9c13f7a1ba9c070a0d3c40e5259ee7a1 GIT binary patch literal 107460 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Π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 Tg1DW5-v|&w-$bue$2sbM_sPlT literal 0 HcmV?d00001 diff --git a/spec/dummy/client/app/assets/images/last-call.png b/spec/dummy/client/app/assets/images/last-call.png new file mode 100644 index 0000000000000000000000000000000000000000..256d6ef21b76cc547fec839fa6e4f6649c254cd5 GIT binary patch literal 208205 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

    uO~G@vLk~Q= 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 F3 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 C!-!S@ literal 0 HcmV?d00001 diff --git a/spec/dummy/client/app/components/CssModulesImagesFontsExample.jsx b/spec/dummy/client/app/components/CssModulesImagesFontsExample.jsx new file mode 100644 index 000000000..28dc6bb7e --- /dev/null +++ b/spec/dummy/client/app/components/CssModulesImagesFontsExample.jsx @@ -0,0 +1,28 @@ +/* eslint-disable react/prop-types */ +import React from 'react'; + +import styles from './CssModulesImagesFontsExample.scss' + +export default (_props, _railsContext) => ( +

    +

    This should be open sans light

    +
    +

    + Last Call (relative path) +

    +
    +
    +
    +

    + Check (URL encoded) +

    +
    +
    +
    +

    + Rails on Maui Logo (absolute path) +

    +
    +
    +
    +); diff --git a/spec/dummy/client/app/components/CssModulesImagesFontsExample.scss b/spec/dummy/client/app/components/CssModulesImagesFontsExample.scss new file mode 100644 index 000000000..a0c1dac3e --- /dev/null +++ b/spec/dummy/client/app/components/CssModulesImagesFontsExample.scss @@ -0,0 +1,52 @@ +// Test out a custom font + + +// TODO: Figure out how to get this in a global spot +$font-family-sans-serif: 'OpenSans-Light'; // apply custom font +$fonts-url-path: '../assets/fonts'; +@font-face { + font-family: 'OpenSans-Light'; + src: url('#{$fonts-url-path}/OpenSans-Light.ttf') format('truetype'); +} +.heading { + font-family: $font-family-sans-serif; +} + +// Small image is url encode +$check-svg: url("../assets/images/guest-list-accepted.png"); +$check-size: 132px; +.check { + display: inline-block; + background: $check-svg; + background-size: $check-size $check-size; + width: $check-size; + height: $check-size; +} + +// Relative path of larger image +$last-call-svg: url("../assets/images/last-call.png"); +$last-call-width: 1440px; +$last-call-height: 373px; + +.lastCall { + display: inline-block; + background: $last-call-svg; + background-size: $last-call-width/2 $last-call-height/2; + width: $last-call-width/2; + height: $last-call-height/2; +} + +// This is an absolute path to the image, defined in app-variables.scss +$images-url-path: '../assets/images'; + +$rails-on-maui-width: 140px; +$rails-on-maui-height: 40px; +$rails-on-maui-png: url("#{$images-url-path}/logos/railsonmaui.png"); + +.railsOnMaui { + display: inline-block; + background: $rails-on-maui-png; + background-size: $rails-on-maui-width $rails-on-maui-height; + width: $rails-on-maui-width; + height: $rails-on-maui-height; +} diff --git a/spec/dummy/client/app/startup/clientRegistration.jsx b/spec/dummy/client/app/startup/clientRegistration.jsx index 3f2e8d67a..0c5671955 100644 --- a/spec/dummy/client/app/startup/clientRegistration.jsx +++ b/spec/dummy/client/app/startup/clientRegistration.jsx @@ -9,6 +9,7 @@ import ReduxApp from './ClientReduxApp'; import ReduxSharedStoreApp from './ClientReduxSharedStoreApp'; import RouterApp from './ClientRouterApp'; import PureComponent from '../components/PureComponent'; +import CssModulesImagesFontsExample from '../components/CssModulesImagesFontsExample'; import SharedReduxStore from '../stores/SharedReduxStore' @@ -25,6 +26,7 @@ ReactOnRails.register({ HelloWorldApp, RouterApp, PureComponent, + CssModulesImagesFontsExample, }); ReactOnRails.registerStore({ diff --git a/spec/dummy/client/app/startup/serverRegistration.jsx b/spec/dummy/client/app/startup/serverRegistration.jsx index d8e35ed71..a020579f5 100644 --- a/spec/dummy/client/app/startup/serverRegistration.jsx +++ b/spec/dummy/client/app/startup/serverRegistration.jsx @@ -22,6 +22,7 @@ import ReduxSharedStoreApp from './ServerReduxSharedStoreApp'; import RouterApp from './ServerRouterApp'; import PureComponent from '../components/PureComponent'; +import CssModulesImagesFontsExample from '../components/CssModulesImagesFontsExample'; import SharedReduxStore from '../stores/SharedReduxStore'; @@ -35,6 +36,7 @@ ReactOnRails.register({ RouterApp, HelloString, PureComponent, + CssModulesImagesFontsExample, }); ReactOnRails.registerStore({ diff --git a/spec/dummy/client/webpack.client.base.config.js b/spec/dummy/client/webpack.client.base.config.js index c71e03bda..236a73139 100644 --- a/spec/dummy/client/webpack.client.base.config.js +++ b/spec/dummy/client/webpack.client.base.config.js @@ -24,6 +24,7 @@ module.exports = { // This will contain the app entry points defined by webpack.hot.config and webpack.rails.config app: [ + // './app/assets/styles/global-styles.scss', './app/startup/clientRegistration', ], }, @@ -60,9 +61,10 @@ module.exports = { ], module: { loaders: [ - { test: /\.(woff2?|svg)$/, loader: 'url?limit=10000' }, { test: /\.(ttf|eot)$/, loader: 'file' }, - { test: /\.(jpe?g|png|gif|svg|ico)$/, loader: 'url?limit=10000' }, + + // Example to confirm that subdirectories work + { test: /\.(jpe?g|png|gif|svg|ico|woff2?)$/, loader: 'url?limit=10000&name=images/[hash].[ext]' }, { test: require.resolve('jquery'), loader: 'expose?jQuery' }, { test: require.resolve('jquery'), loader: 'expose?$' }, ], diff --git a/spec/dummy/config/environments/production.rb b/spec/dummy/config/environments/production.rb index 861427f68..a09a2a196 100644 --- a/spec/dummy/config/environments/production.rb +++ b/spec/dummy/config/environments/production.rb @@ -22,7 +22,7 @@ # Disable serving static files from the `/public` folder by default since # Apache or NGINX already handles this. - config.serve_static_files = ENV["RAILS_SERVE_STATIC_FILES"].present? + config.serve_static_files = true # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index 6e2e87ec5..96dcd0231 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -14,7 +14,7 @@ def self.custom_context(view_context) config.generated_assets_dir = File.join(%w(app assets webpack)) # Define the files we need to check for webpack compilation when running tests. - config.webpack_generated_files = %w( app-bundle.js vendor-bundle.js server-bundle.js ) + config.webpack_generated_files = %w(app-bundle.js vendor-bundle.js server-bundle.js) # This is the file used for server rendering of React when using `(prerender: true)` # If you are never using server rendering, you may set this to "". @@ -81,7 +81,7 @@ def self.custom_context(view_context) config.server_render_method = "ExecJS" # Client js uses assets not digested by rails. - # For any asset matching this regex, non-digested symlink will be created - # To disable symlinks set this parameter to nil. - config.symlink_non_digested_assets_regex = /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg)/ + # For any asset matching this regex, a file is copied to the correct path to have a digest. + # To disable creating digested assets, set this parameter to nil. + config.symlink_non_digested_assets_regex = /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg|map)/ end diff --git a/spec/dummy/config/routes.rb b/spec/dummy/config/routes.rb index cfcc14ff6..8589d4313 100644 --- a/spec/dummy/config/routes.rb +++ b/spec/dummy/config/routes.rb @@ -23,4 +23,5 @@ get "render_js" => "pages#render_js" get "react_router(/*all)" => "react_router#index", as: :react_router get "pure_component" => "pages#pure_component" + get "css_modules_images_fonts_example" => "pages#css_modules_images_fonts_example" end diff --git a/spec/dummy/config/secrets.yml b/spec/dummy/config/secrets.yml index 60ab807f9..10b53274a 100644 --- a/spec/dummy/config/secrets.yml +++ b/spec/dummy/config/secrets.yml @@ -19,4 +19,5 @@ test: # Do not keep production secrets in the repository, # instead read values from the environment. production: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> + secret_key_base: <%= ENV["SECRET_KEY_BASE"].presence || + "8cd24e99fc1b68f6cd1592e4db8c88c2b508dbd12a37dd0cef184eb46aa5e3512f386d02c7a29971b8e34a9daa627642fc4a03b9c49e28f1943ea9028c91ba47" %> diff --git a/spec/dummy/package.json b/spec/dummy/package.json index 0b44a53c9..177ff7c88 100644 --- a/spec/dummy/package.json +++ b/spec/dummy/package.json @@ -12,7 +12,7 @@ "test": "npm run build:test && npm run lint && rspec", "lint": "cd client && npm run lint", "install-react-on-rails": "cd client && npm run install-react-on-rails", - "build:clean": "rm app/assets/webpack/* || true", + "build:clean": "rm -r app/assets/webpack/* || true", "build:production:client": "(cd client && npm run build:production:client --silent)", "build:production:server": "(cd client && npm run build:production:server --silent)", "build:client": "(cd client && npm run build:client --silent", diff --git a/spec/react_on_rails/assets_precompile_spec.rb b/spec/react_on_rails/assets_precompile_spec.rb new file mode 100644 index 000000000..74ad264d0 --- /dev/null +++ b/spec/react_on_rails/assets_precompile_spec.rb @@ -0,0 +1,26 @@ +require_relative "spec_helper" +require "react_on_rails/assets_precompile" + +# require "tmpdir" +# require "tempfile" + +module ReactOnRails + RSpec.describe AssetsPrecompile do + describe "symlink_file" do + it "creates a proper symlink" + it "creates a proper symlink if nested" + end + + describe "symlink_non_digested_assets" do + it "creates the necessary symlinks" + end + + describe "delete_broken_symlinks" do + it "deletes a broken symlink" + end + + describe "clobber" do + it "deletes files in ReactOnRails.configuration.generated_assets_dir" + end + end +end diff --git a/spec/react_on_rails/test_helper/ensure_assets_compiled_spec.rb b/spec/react_on_rails/test_helper/ensure_assets_compiled_spec.rb index 4898f4500..7faf8bac1 100644 --- a/spec/react_on_rails/test_helper/ensure_assets_compiled_spec.rb +++ b/spec/react_on_rails/test_helper/ensure_assets_compiled_spec.rb @@ -8,7 +8,7 @@ context "when assets are not up to date" do let(:assets_checker) do double_assets_checker(stale_generated_webpack_files: - %w( client-bundle.js server-bundle.js )) + %w(client-bundle.js server-bundle.js)) end it "compiles the webpack assets" do diff --git a/spec/react_on_rails/test_helper/webpack_assets_status_checker_spec.rb b/spec/react_on_rails/test_helper/webpack_assets_status_checker_spec.rb index 254defe30..4c127d6c5 100644 --- a/spec/react_on_rails/test_helper/webpack_assets_status_checker_spec.rb +++ b/spec/react_on_rails/test_helper/webpack_assets_status_checker_spec.rb @@ -5,7 +5,7 @@ describe "#stale_generated_webpack_files" do let(:client_dir) { client_dir_for(fixture_dirname) } let(:generated_assets_dir) { compiled_js_dir_for(fixture_dirname) } - let(:webpack_generated_files) { %w( client-bundle.js server-bundle.js ) } + let(:webpack_generated_files) { %w(client-bundle.js server-bundle.js) } let(:server_bundle_js_file) { File.join(generated_assets_dir, "server-bundle.js") } let(:client_bundle_js_file) { File.join(generated_assets_dir, "client-bundle.js") } From a6e35fe68091fbb14641122bf50684ad8d7bc0f1 Mon Sep 17 00:00:00 2001 From: dzirtusss Date: Tue, 26 Jul 2016 18:43:20 +0300 Subject: [PATCH 18/24] Update assets_precompile_spec.rb symlink tests with tempfs --- spec/react_on_rails/assets_precompile_spec.rb | 104 ++++++++++++++++-- 1 file changed, 96 insertions(+), 8 deletions(-) diff --git a/spec/react_on_rails/assets_precompile_spec.rb b/spec/react_on_rails/assets_precompile_spec.rb index 74ad264d0..fe8c12685 100644 --- a/spec/react_on_rails/assets_precompile_spec.rb +++ b/spec/react_on_rails/assets_precompile_spec.rb @@ -1,26 +1,114 @@ require_relative "spec_helper" require "react_on_rails/assets_precompile" -# require "tmpdir" -# require "tempfile" +require "tmpdir" +require "tempfile" module ReactOnRails RSpec.describe AssetsPrecompile do - describe "symlink_file" do - it "creates a proper symlink" - it "creates a proper symlink if nested" + let(:assets_path) { Pathname.new(Dir.mktmpdir) } + + describe "#symlink_file" do + it "creates a proper symlink" do + filename = File.basename(Tempfile.new("tempfile", assets_path)) + digest_filename = "#{filename}_digest" + AssetsPrecompile.new(assets_path: assets_path) + .symlink_file(filename, digest_filename) + + expect(assets_path.join(digest_filename).lstat.symlink?).to be true + expect(File.identical?(assets_path.join(filename), + assets_path.join(digest_filename))).to be true + end + + it "creates a proper symlink when nested" do + Dir.mkdir assets_path.join("images") + filename = "images/" + File.basename(Tempfile.new("tempfile", + assets_path.join("images"))) + digest_filename = "#{filename}_digest" + AssetsPrecompile.new(assets_path: assets_path) + .symlink_file(filename, digest_filename) + + expect(assets_path.join(digest_filename).lstat.symlink?).to be true + expect(File.identical?(assets_path.join(filename), + assets_path.join(digest_filename))).to be true + end end describe "symlink_non_digested_assets" do - it "creates the necessary symlinks" + let(:digest_filename) { "alfa.12345.js" } + let(:nondigest_filename) { "alfa.js" } + + let(:checker) do + f = File.new(assets_path.join("manifest-alfa.json"), "w") + f.write("{\"assets\":{\"#{nondigest_filename}\": \"#{digest_filename}\"}}") + f.close + + AssetsPrecompile.new(assets_path: assets_path, + symlink_non_digested_assets_regex: Regexp.new('.*\.js$')) + end + + context "correct nondigest filename" do + it "create valid symlink" do + FileUtils.touch assets_path.join(digest_filename) + checker.symlink_non_digested_assets + + expect(assets_path.join(nondigest_filename).lstat.symlink?).to be true + expect(File.identical?(assets_path.join(nondigest_filename), + assets_path.join(digest_filename))).to be true + end + end + + context "zipped nondigest filename" do + it "create valid symlink" do + FileUtils.touch assets_path.join("#{digest_filename}.gz") + checker.symlink_non_digested_assets + + expect(assets_path.join("#{nondigest_filename}.gz").lstat.symlink?).to be true + expect(File.identical?(assets_path.join("#{nondigest_filename}.gz"), + assets_path.join("#{digest_filename}.gz"))).to be true + end + end + + context "wrong nondigest filename" do + it "should not create symlink" do + FileUtils.touch assets_path.join("alfa.12345.jsx") + checker.symlink_non_digested_assets + + expect(assets_path.join("alfa.jsx")).not_to exist + end + end end describe "delete_broken_symlinks" do - it "deletes a broken symlink" + it "deletes a broken symlink" do + filename = File.basename(Tempfile.new("tempfile", assets_path)) + digest_filename = "#{filename}_digest" + + a = AssetsPrecompile.new(assets_path: assets_path) + a.symlink_file(filename, digest_filename) + File.unlink(assets_path.join(filename)) + a.delete_broken_symlinks + + expect(assets_path.join(filename)).not_to exist + expect(assets_path.join(digest_filename)).not_to exist + end end describe "clobber" do - it "deletes files in ReactOnRails.configuration.generated_assets_dir" + it "deletes files in ReactOnRails.configuration.generated_assets_dir" do + allow(Rails).to receive(:root).and_return(Pathname.new(Dir.mktmpdir)) + + generated_assets_dir = "generated_dir" + generated_assets_path = Rails.root.join(generated_assets_dir) + Dir.mkdir generated_assets_path + + filepath = Pathname.new(Tempfile.new("tempfile", generated_assets_path)) + + AssetsPrecompile.new(assets_path: assets_path, + generated_assets_dir: generated_assets_dir).clobber + + expect(filepath).not_to exist + end end end end From 8cec9cf345a7a940a1306a02d353704e12955cad Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Fri, 29 Jul 2016 15:34:10 -1000 Subject: [PATCH 19/24] Remove Docker from setup * Update .travis.yml * Remove Dockerfile_tests and docker-compose.yml --- .travis.yml | 4 ---- Dockerfile_tests | 12 ------------ docker-compose.yml | 11 ----------- 3 files changed, 27 deletions(-) delete mode 100644 Dockerfile_tests delete mode 100644 docker-compose.yml diff --git a/.travis.yml b/.travis.yml index eec67ea2e..880574efe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,9 +16,6 @@ env: before_install: - sudo apt-get update - - curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > docker-compose - - chmod +x docker-compose - - sudo mv docker-compose /usr/local/bin - sudo apt-get install -y xvfb libappindicator1 fonts-liberation - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - sudo dpkg -i google-chrome*.deb @@ -34,7 +31,6 @@ install: - rake dummy_apps - rake examples - rake node_package - - docker-compose up lint before_script: - "export DISPLAY=:99" diff --git a/Dockerfile_tests b/Dockerfile_tests deleted file mode 100644 index 67599e15e..000000000 --- a/Dockerfile_tests +++ /dev/null @@ -1,12 +0,0 @@ -FROM dylangrafmyre/docker-ci - -WORKDIR /app/ - -COPY ["/lib/react_on_rails/version.rb", "/app/lib/react_on_rails/"] -COPY ["Gemfile", "Gemfile.lock", "react_on_rails.gemspec", "rakelib/", "/app/"] -COPY ["/spec/dummy/Gemfile", "/spec/dummy/Gemfile.lock", "/app/spec/dummy/"] -RUN bundle install --gemfile=spec/dummy/Gemfile - -ENV DISPLAY :99 -ENTRYPOINT service xvfd start \ - && rake diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 98b6394a0..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -lint: - image: dylangrafmyre/docker-lint - working_dir: /app/ - volumes: - - '.:/app/' -tests: - build: . - dockerfile: Dockerfile_tests - working_dir: /app/ - volumes: - - '.:/app/' From ef0874294aed20c43116116379da9f671d8f9772 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 31 Jul 2016 15:06:11 -1000 Subject: [PATCH 20/24] Move CONTRIBUTING.MD to project top level This seems to make it show more prominently when making new issues or PRs. --- docs/contributor-info/contributing.md => CONTRIBUTING.md | 4 +++- README.md | 2 +- docs/contributor-info/releasing.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) rename docs/contributor-info/contributing.md => CONTRIBUTING.md (98%) diff --git a/docs/contributor-info/contributing.md b/CONTRIBUTING.md similarity index 98% rename from docs/contributor-info/contributing.md rename to CONTRIBUTING.md index 67c2cd4c5..52c20707f 100644 --- a/docs/contributor-info/contributing.md +++ b/CONTRIBUTING.md @@ -1,5 +1,7 @@ # Tips for Contributors -*See [Releasing](./releasing.md) for instructions on releasing.* + +* See [docs/contributor-info/Releasing](./docs/contributor-info/releasing.md) for instructions on releasing. +* See other docs in [docs/contributor-info](./docs/contributor-info) ## Sumary diff --git a/README.md b/README.md index 03f208fd3..8f4028c91 100644 --- a/README.md +++ b/README.md @@ -471,7 +471,7 @@ Node.js can be used as the backend for server-side rendering instead of [execJS] ## Contributing Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to our version of the [Contributor Covenant Code of Conduct](docs/code_of_conduct.md)). -See [Contributing](docs/contributor-info/contributing.md) to get started. +See [Contributing](CONTRIBUTING.md) to get started. ## License The gem is available as open source under the terms of the [MIT License](docs/LICENSE). diff --git a/docs/contributor-info/releasing.md b/docs/contributor-info/releasing.md index fcdfe6dde..0d7fa3e5c 100644 --- a/docs/contributor-info/releasing.md +++ b/docs/contributor-info/releasing.md @@ -3,7 +3,7 @@ We're now releasing this as a combined ruby gem plus npm package. We will keep the version numbers in sync. ## Testing the Gem before Release from a Rails App -See [Contributing](./contributing.md) +See [Contributing](../../CONTRIBUTING.md) ## Releasing a new gem version Run `rake -D release` to see instructions on how to release via the rake task. From 442dcd4c95400cba2d33dd5960d060bb7085bb17 Mon Sep 17 00:00:00 2001 From: Mark Penovich Date: Sun, 31 Jul 2016 23:47:20 -0500 Subject: [PATCH 21/24] fixed spelling error in readme --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8f4028c91..e323d77eb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Build Status](https://travis-ci.org/shakacode/react_on_rails.svg?branch=master)](https://travis-ci.org/shakacode/react_on_rails) [![Dependency Status](https://gemnasium.com/shakacode/react_on_rails.svg)](https://gemnasium.com/shakacode/react_on_rails) [![Gem Version](https://badge.fury.io/rb/react_on_rails.svg)](https://badge.fury.io/rb/react_on_rails) [![npm version](https://badge.fury.io/js/react-on-rails.svg)](https://badge.fury.io/js/react-on-rails) [![Code Climate](https://codeclimate.com/github/shakacode/react_on_rails/badges/gpa.svg)](https://codeclimate.com/github/shakacode/react_on_rails) [![Coverage Status](https://coveralls.io/repos/shakacode/react_on_rails/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react_on_rails?branch=master) -Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! +Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking for new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! Want to become a contributor? See ["easy" issues](https://github.com/shakacode/react_on_rails/labels/easy) and [issues for the tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/issues?q=is%3Aissue+is%3Aopen+label%3Aeasy). @@ -203,7 +203,7 @@ and for a store: reduxStore = MyReduxStore(props, railsContext); ``` -Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be defining functions that take these params and return a React component or a Redux Store. +Note, you never make these calls. This is what React on Rails does when either server or client rendering. You'll be defining functions that take these params and return a React component or a Redux Store. (Note, see below [section](#multiple-react-components-on-a-page-with-one-store) on how to setup redux stores that allow multiple components to talk to the same store.) @@ -286,7 +286,7 @@ This is an example of how to expose a component to the `react_component` view he #### Different Server-Side Rendering Code (and a Server Specific Bundle) You may want different initialization for your server rendered components. For example, if you have animation that runs when a component is displayed, you might need to turn that off when server rendering. However, the `railsContext` will tell you if your JavaScript code is running client side or server side. So code that required a different server bundle previously may no longer require this! - + If you do want different code to run, you'd setup a separate webpack compilation file and you'd specify a different, server side entry file. ex. 'serverHelloWorldApp.jsx'. Note, you might be initializing HelloWorld with version specialized for server rendering. ## ReactOnRails View Helpers API @@ -446,7 +446,7 @@ Node.js can be used as the backend for server-side rendering instead of [execJS] + [Server Rendering Tips](docs/additional-reading/server-rendering-tips.md) + [Rails View Rendering from Inline JavaScript](docs/additional-reading/rails_view_rendering_from_inline_javascript.md) + [Tips](docs/additional-reading/tips.md) -+ [Tutorial for up to v5.1.1](docs/tutorial.md), deployed [here](https://shakacode-react-on-rails.herokuapp.com/) (See [Issue #500](https://github.com/shakacode/react_on_rails/issues/500). ++ [Tutorial for up to v5.1.1](docs/tutorial.md), deployed [here](https://shakacode-react-on-rails.herokuapp.com/) (See [Issue #500](https://github.com/shakacode/react_on_rails/issues/500). + [Turbolinks](docs/additional-reading/turbolinks.md) + [Webpack Configuration](docs/additional-reading/webpack.md) + [Webpack Cookbook](https://christianalfoni.github.io/react-webpack-cookbook/index.html) @@ -485,7 +485,7 @@ The gem project started with [Justin Gordon](https://github.com/justin808/) pair We owe much gratitude to the work of the [react-rails gem](https://github.com/reactjs/react-rails). -## A Personal Note From Justin +## A Personal Note From Justin Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! From b4cdfd2f6bf2bfbce0e8a30c91fc310ad65bfa18 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 31 Jul 2016 21:25:57 -1000 Subject: [PATCH 22/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e323d77eb..9f0b2dc56 100644 --- a/README.md +++ b/README.md @@ -487,6 +487,6 @@ We owe much gratitude to the work of the [react-rails gem](https://github.com/re ## A Personal Note From Justin -Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! +Aloha from Justin Gordon and the [ShakaCode](http://www.shakacode.com) Team! We're actively looking for new projects. If you like **React on Rails**, please consider contacting me if we could potentially help you in any way. I'm offering a free half-hour project consultation, on anything from React on Rails to any aspect of web application development, including both consumer and enterprise products. You can read more about my background [here](http://www.railsonmaui.com/about). Whether you have a new project or need help on an existing project, please email me directly at [justin@shakacode.com](mailto:justin@shakacode.com). And thanks in advance for any referrals! Your support keeps this project going. In addition to React.js and Rails, we're doing react-native iOS and Android apps! I'm also looking for great developers for the ShakaCode team! [Contact me](mailtojustin@shakacode.com) or click [here](http://www.shakacode.com/about/index.html#work-with-us) if you want to work with Rails + React + React-Native on a distributed, worldwide team. From d694df87bca9df3271b7c7fdcb7c0d956638d234 Mon Sep 17 00:00:00 2001 From: Sam Davies Date: Wed, 27 Jul 2016 10:52:49 +0100 Subject: [PATCH 23/24] Add support for single digit version strings, closes #489 --- CHANGELOG.md | 10 ++++++---- lib/react_on_rails/version_checker.rb | 5 +++-- spec/react_on_rails/version_checker_spec.rb | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8667d6d1c..da9aa4a99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ Contributors: please follow the recommendations outlined at [keepachangelog.com] ## [Unreleased] +- React on Rails now correctly parses single-digit version strings from package.json [#491](https://github.com/shakacode/react_on_rails/pull/491) + ## [6.0.5] ##### Added - Added better error messages to avoid issues with shared redux stores [#470](https://github.com/shakacode/react_on_rails/pull/470). @@ -27,19 +29,19 @@ Contributors: please follow the recommendations outlined at [keepachangelog.com] ## [6.0.0] ##### Breaking Changes -- Added automatic compilation of assets at precompile is now done by ReactOnRails. Thus, you don't need to provide your own assets.rake file that does the precompilation. +- Added automatic compilation of assets at precompile is now done by ReactOnRails. Thus, you don't need to provide your own assets.rake file that does the precompilation. [#398](https://github.com/shakacode/react_on_rails/pull/398) by [robwise](https://github.com/robwise), [jbhatab](https://github.com/jbhatab), and [justin808](https://github.com/justin808). - **Migration to v6** - Do not run the generator again if you've already run it. - See [shakacode/react-webpack-rails-tutorial/pull/287](https://github.com/shakacode/react-webpack-rails-tutorial/pull/287) for an example of upgrading from v5. - + - To configure the asset compliation you can either 1. Specify a `config/react_on_rails` setting for `npm_build_production_command` to be nil to turn this feature off. 2. Specify the script command you want to run to build your production assets, and remove your assets.rake file. - If you are using the ReactOnRails test helper, then you will need to add the 'config.npm_build_test_command' to your config to tell react_on_rails what command to run when you run rspec. - + - See [shakacode/react-webpack-rails-tutorial #287](https://github.com/shakacode/react-webpack-rails-tutorial/pull/287/files) for an upgrade example. The PR has a few comments on the upgrade. Here is the addition to the generated config file: @@ -92,7 +94,7 @@ Here is the addition to the generated config file: - [Security] Address failure to sanitize console messages when server rendering and displaying in the browser console. See [#366](https://github.com/shakacode/react_on_rails/pull/366) and [#370](https://github.com/shakacode/react_on_rails/pull/370) by [justin808](https://github.com/justin808) ##### Added -- railsContext includes the port number and a boolean if the code is being run on the server or client. +- railsContext includes the port number and a boolean if the code is being run on the server or client. ## [5.1.0] - 2016-04-03 ##### Added diff --git a/lib/react_on_rails/version_checker.rb b/lib/react_on_rails/version_checker.rb index 5ba50d94d..6e24189ee 100644 --- a/lib/react_on_rails/version_checker.rb +++ b/lib/react_on_rails/version_checker.rb @@ -3,6 +3,7 @@ module ReactOnRails # against each otherat runtime. class VersionChecker attr_reader :node_package_version, :logger + MAJOR_VERSION_REGEX = /(\d+)\.?/ def self.build new(NodePackageVersion.build, Rails.logger) @@ -38,7 +39,7 @@ def gem_version end def gem_major_version - gem_version.match(/(\d+)\./)[1] + gem_version.match(MAJOR_VERSION_REGEX)[1] end class NodePackageVersion @@ -66,7 +67,7 @@ def relative_path? def major return if relative_path? - raw.match(/(\d+)\./)[1] + raw.match(MAJOR_VERSION_REGEX)[1] end private diff --git a/spec/react_on_rails/version_checker_spec.rb b/spec/react_on_rails/version_checker_spec.rb index 37fa09234..fc1462c4b 100644 --- a/spec/react_on_rails/version_checker_spec.rb +++ b/spec/react_on_rails/version_checker_spec.rb @@ -47,6 +47,24 @@ module ReactOnRails expect(logger.message).to be_nil end end + + context "when package json uses a one-digit version string" do + let(:node_package_version) do + double_package_version(raw: "^6", major: "6") + end + + it "does not log a warning" do + stub_gem_version("6") + check_version(node_package_version, logger) + expect(logger.message).to be_nil + end + + it "logs a warning" do + stub_gem_version("5") + check_version(node_package_version, logger) + expect(logger.message).to be_present + end + end end def double_package_version(raw: nil, major: nil, relative_path: false) From 563716291c73fad3b44e01c4ad260c2103273569 Mon Sep 17 00:00:00 2001 From: eacaps Date: Mon, 1 Aug 2016 10:35:40 -0400 Subject: [PATCH 24/24] a few final minor tweaks --- app/helpers/react_on_rails_helper.rb | 11 ++++++----- spec/dummy/config/initializers/react_on_rails.rb | 8 ++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/helpers/react_on_rails_helper.rb b/app/helpers/react_on_rails_helper.rb index 93d3ed563..776a51a9c 100644 --- a/app/helpers/react_on_rails_helper.rb +++ b/app/helpers/react_on_rails_helper.rb @@ -344,7 +344,12 @@ def initialize_redux_stores # rubocop:disable Metrics/AbcSize def rails_context(server_side:) @rails_context ||= begin - result = { inMailer: controller.present? && controller.is_a?(ActionMailer::Base) } + result = { + inMailer: controller.present? && controller.is_a?(ActionMailer::Base), + # Locale settings + i18nLocale: I18n.locale, + i18nDefaultLocale: I18n.default_locale + } if request.present? # Using Addressable instead of standard URI to better deal with # non-ASCII characters (see https://github.com/shakacode/react_on_rails/pull/405) @@ -360,10 +365,6 @@ def rails_context(server_side:) port: uri.port, pathname: uri.path, # /posts search: uri.query, # id=30&limit=5 - - # Locale settings - i18nLocale: I18n.locale, - i18nDefaultLocale: I18n.default_locale, httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"] ) end diff --git a/spec/dummy/config/initializers/react_on_rails.rb b/spec/dummy/config/initializers/react_on_rails.rb index cf08cf653..57d977e11 100644 --- a/spec/dummy/config/initializers/react_on_rails.rb +++ b/spec/dummy/config/initializers/react_on_rails.rb @@ -2,13 +2,13 @@ module RenderingExtension # Return a Hash that contains custom values from the view context that will get passed to # all calls to react_component and redux_store for rendering def self.custom_context(view_context) - result = {} - unless view_context.controller.is_a?(ActionMailer::Base) - result = { + if view_context.controller.is_a?(ActionMailer::Base) + {} + else + { somethingUseful: view_context.session[:something_useful] } end - result end end