From dfeae79012a2eafe1baf57a71cbf6ae4d9ef1d2b Mon Sep 17 00:00:00 2001 From: Sam Taylor Date: Tue, 8 Jul 2014 15:41:48 +0100 Subject: [PATCH 1/2] file pattern and verbosity flag can be set by environment variables --- Rakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index 8c1d05bae..15f72adda 100644 --- a/Rakefile +++ b/Rakefile @@ -12,8 +12,8 @@ require 'rake/testtask' Rake::TestTask.new(:test) do |t| t.libs << 'lib' t.libs << 'test' - t.pattern = 'test/**/*_test.rb' - t.verbose = false + t.pattern = ENV['TEST_PATTERN'] || 'test/**/*_test.rb' + t.verbose = ENV['TEST_VERBOSE'] == '1' end task default: :test From c4826d8b1fd5fb155b37e1397732e849ed3fc6de Mon Sep 17 00:00:00 2001 From: Sam Taylor Date: Tue, 8 Jul 2014 15:44:04 +0100 Subject: [PATCH 2/2] define a partial noop console api in server js context --- lib/react/renderer.rb | 10 +++++++++- test/react_renderer_test.rb | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/react/renderer.rb b/lib/react/renderer.rb index 2646cac97..521415484 100644 --- a/lib/react/renderer.rb +++ b/lib/react/renderer.rb @@ -22,6 +22,14 @@ def self.render(component, args={}) def self.combined_js @@combined_js ||= <<-CODE var global = global || this; + + var console = global.console || {}; + ['error', 'log', 'info', 'warn'].forEach(function (fn) { + if (!(fn in console)) { + console[fn] = function () {}; + } + }); + #{@@react_js}; React = global.React; #{@@components_js}; @@ -48,4 +56,4 @@ def render(component, args={}) end end -end \ No newline at end of file +end diff --git a/test/react_renderer_test.rb b/test/react_renderer_test.rb index 322185673..7e2dab90e 100644 --- a/test/react_renderer_test.rb +++ b/test/react_renderer_test.rb @@ -8,4 +8,11 @@ class ReactRendererTest < ActiveSupport::TestCase assert_match /data-react-checksum/, result end + test 'Rendering does not throw an exception when console log api is used' do + %W(error info log warn).each do |fn| + assert_nothing_raised(ExecJS::ProgramError) do + React::Renderer.pool.checkout.context.eval("console.#{fn}()") + end + end + end end