Skip to content

Commit

Permalink
first attempt
Browse files Browse the repository at this point in the history
  • Loading branch information
Judahmeek committed Oct 20, 2017
1 parent 4af3f11 commit 3af19dd
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 24 deletions.
4 changes: 4 additions & 0 deletions app/helpers/react_on_rails_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ def react_component_hash(component_name, raw_options = {})
server_rendered_html = internal_result["result"]["html"]
console_script = internal_result["result"]["consoleReplayScript"]

if server_rendered_html.is_a?(String) && internal_result["result"]["hasErrors"]
server_rendered_html = { COMPONENT_HTML_KEY => internal_result["result"]["html"] }
end

if server_rendered_html.is_a?(Hash)
build_react_component_result_for_server_rendered_hash(
server_rendered_html: server_rendered_html,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
},
"homepage": "https://github.com/shakacode/react_on_rails#readme",
"dependencies": {
"react-on-rails": "^9.0.3",
"react-on-rails": "^10.0.0",
"react-redux": "^5.0.6"
}
}
20 changes: 10 additions & 10 deletions react_on_rails.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,26 @@ Gem::Specification.new do |s|

s.required_ruby_version = ">= 2.0.0"

s.add_dependency "rainbow", "~> 2.2"
s.add_dependency "addressable"
s.add_dependency "connection_pool"
s.add_dependency "execjs", "~> 2.5"
s.add_dependency "rails", ">= 3.2"
s.add_dependency "addressable"
s.add_dependency "rainbow", "~> 2.2"

s.add_development_dependency "rails", "~> 5.1.2"
s.add_development_dependency "awesome_print"
s.add_development_dependency "bundler", "~> 1.10"
s.add_development_dependency "rake", "~> 10.0"
s.add_development_dependency "listen"
s.add_development_dependency "rspec"
s.add_development_dependency "coveralls"
s.add_development_dependency "gem-release"
s.add_development_dependency "generator_spec"
s.add_development_dependency "listen"
s.add_development_dependency "pry"
s.add_development_dependency "pry-byebug"
s.add_development_dependency "pry-stack_explorer"
s.add_development_dependency "pry-doc"
s.add_development_dependency "pry-rescue"
s.add_development_dependency "pry-stack_explorer"
s.add_development_dependency "pry-state"
s.add_development_dependency "pry-toys"
s.add_development_dependency "pry-rescue"
s.add_development_dependency "awesome_print"
s.add_development_dependency "gem-release"
s.add_development_dependency "rails", "~> 5.1.2"
s.add_development_dependency "rake", "~> 10.0"
s.add_development_dependency "rspec"
end
10 changes: 10 additions & 0 deletions spec/dummy/app/views/pages/broken_app.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<% p flash %>
<%= flash["error"] %>

<%= render "header" %>

<%= react_component_hash("BrokenApp", prerender: true)['componentHtml'] %>

<hr/>

This page demonstrates a component that suffers a prerendering error but still returns a hash.
7 changes: 7 additions & 0 deletions spec/dummy/client/app/startup/BrokenApp.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Top level component for simple client side only rendering
import React from 'react';

/*
* Just an example of what can go wrong while coding. No import. Whoops!
*/
export default props => <HelloWorld {...props} />;
2 changes: 2 additions & 0 deletions spec/dummy/client/app/startup/clientRegistration.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import HelloWorld from '../components/HelloWorld';
import HelloWorldWithLogAndThrow from '../components/HelloWorldWithLogAndThrow';
import HelloWorldES5 from '../components/HelloWorldES5';
import HelloWorldApp from './HelloWorldApp';
import BrokenApp from './BrokenApp';

import ReduxApp from './ClientReduxApp';
import ReduxSharedStoreApp from './ClientReduxSharedStoreApp';
Expand All @@ -33,6 +34,7 @@ ReactOnRails.setOptions({
});

ReactOnRails.register({
BrokenApp,
HelloWorld,
HelloWorldWithLogAndThrow,
HelloWorldES5,
Expand Down
2 changes: 2 additions & 0 deletions spec/dummy/client/app/startup/serverRegistration.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import HelloWorldWithLogAndThrow from '../components/HelloWorldWithLogAndThrow';

// Generator function
import HelloWorldApp from './HelloWorldApp';
import BrokenApp from './BrokenApp';

// Example of React + Redux
import ReduxApp from './ServerReduxApp';
Expand Down Expand Up @@ -42,6 +43,7 @@ import ReactHelmetApp from './ReactHelmetServerApp';
import ImageExample from '../components/ImageExample';

ReactOnRails.register({
BrokenApp,
HelloWorld,
HelloWorldWithLogAndThrow,
HelloWorldES5,
Expand Down
1 change: 1 addition & 0 deletions spec/dummy/config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@
get "turbolinks_cache_disabled" => "pages#turbolinks_cache_disabled"
get "rendered_html" => "pages#rendered_html"
get "react_helmet" => "pages#react_helmet"
get "broken_app" => "pages#broken_app"
get "image_example" => "pages#image_example"
end
12 changes: 6 additions & 6 deletions spec/dummy/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
"test": "yarn run build:test && yarn run lint && rspec",
"lint": "cd client && yarn run lint",
"build:clean": "rm -rf public/webpack || true",
"build:production:client": "(cd client && yarn run build:production:client --silent)",
"build:production:server": "(cd client && yarn run build:production:server --silent)",
"build:client": "(cd client && yarn run build:client --silent",
"build:server": "(cd client && yarn run build:server --silent)",
"build:dev:client": "(cd client && yarn run build:dev:client --silent)",
"build:dev:server": "(cd client && yarn run build:dev:server --silent)",
"build:production:client": "(cd client && yarn run --silent build:production:client)",
"build:production:server": "(cd client && yarn run --silent build:production:server)",
"build:client": "(cd client && yarn run --silent build:client",
"build:server": "(cd client && yarn run --silent build:server)",
"build:dev:client": "(cd client && yarn run --silent build:dev:client)",
"build:dev:server": "(cd client && yarn run --silent build:dev:server)",
"hot-assets": "(cd client && yarn run hot-assets)"
},
"repository": {
Expand Down
13 changes: 13 additions & 0 deletions spec/dummy/spec/features/integration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,19 @@ def change_text_expect_dom_selector(dom_selector)
end
end

feature "returns hash if hash_result == true even with prerendering error", :js do
subject { page }
background do
begin
visit "/broken_app"
rescue Capybara::Poltergeist::JavascriptError # rubocop:disable Lint/HandleExceptions
end
end
scenario "react_component should return hash" do
expect(subject.html).to include("Exception in rendering!")
end
end

feature "generator function returns renderedHtml as an object with additional HTML markups" do
shared_examples "renderedHtmls should not have any errors and set correct page title" do
subject { page }
Expand Down
14 changes: 7 additions & 7 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2449,13 +2449,6 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"

js-yaml@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"

js-yaml@^3.5.1:
version "3.9.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
Expand Down Expand Up @@ -3248,6 +3241,13 @@ react-dom@^15.6.1:
object-assign "^4.1.0"
prop-types "^15.5.10"

react-on-rails@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-10.0.0.tgz#afc658bf23f5dfe3fd836adc178eb4672727a89d"
dependencies:
react-on-rails "^9.0.3"
react-redux "^5.0.6"

react-on-rails@^9.0.0-beta.12:
version "9.0.1"
resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-9.0.1.tgz#49bf7520866214e410e6f88b298e889183d93786"
Expand Down

0 comments on commit 3af19dd

Please sign in to comment.