react on rails not working
This commit is contained in:
parent
9e9479dc64
commit
9f450bfad2
13 changed files with 153 additions and 4 deletions
4
Gemfile
4
Gemfile
|
|
@ -3,7 +3,7 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
||||||
|
|
||||||
ruby '2.5.0'
|
ruby '2.5.0'
|
||||||
|
|
||||||
gem 'react_on_rails', '10.1.4'
|
gem 'react_on_rails', '10.0.2'
|
||||||
|
|
||||||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
||||||
gem 'rails', '~> 5.2.0'
|
gem 'rails', '~> 5.2.0'
|
||||||
|
|
@ -64,3 +64,5 @@ end
|
||||||
|
|
||||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
||||||
|
|
||||||
|
gem 'mini_racer', platforms: :ruby
|
||||||
|
|
@ -85,6 +85,8 @@ GEM
|
||||||
jbuilder (2.7.0)
|
jbuilder (2.7.0)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
multi_json (>= 1.2)
|
multi_json (>= 1.2)
|
||||||
|
libv8 (6.3.292.48.1)
|
||||||
|
libv8 (6.3.292.48.1-x86_64-darwin-17)
|
||||||
listen (3.1.5)
|
listen (3.1.5)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
|
|
@ -100,6 +102,8 @@ GEM
|
||||||
mimemagic (0.3.2)
|
mimemagic (0.3.2)
|
||||||
mini_mime (1.0.0)
|
mini_mime (1.0.0)
|
||||||
mini_portile2 (2.3.0)
|
mini_portile2 (2.3.0)
|
||||||
|
mini_racer (0.1.15)
|
||||||
|
libv8 (~> 6.3)
|
||||||
minitest (5.11.3)
|
minitest (5.11.3)
|
||||||
msgpack (1.2.4)
|
msgpack (1.2.4)
|
||||||
multi_json (1.13.1)
|
multi_json (1.13.1)
|
||||||
|
|
@ -143,7 +147,7 @@ GEM
|
||||||
rb-fsevent (0.10.3)
|
rb-fsevent (0.10.3)
|
||||||
rb-inotify (0.9.10)
|
rb-inotify (0.9.10)
|
||||||
ffi (>= 0.5.0, < 2)
|
ffi (>= 0.5.0, < 2)
|
||||||
react_on_rails (10.1.4)
|
react_on_rails (10.0.2)
|
||||||
addressable
|
addressable
|
||||||
connection_pool
|
connection_pool
|
||||||
execjs (~> 2.5)
|
execjs (~> 2.5)
|
||||||
|
|
@ -214,9 +218,10 @@ DEPENDENCIES
|
||||||
coffee-rails (~> 4.2)
|
coffee-rails (~> 4.2)
|
||||||
jbuilder (~> 2.5)
|
jbuilder (~> 2.5)
|
||||||
listen (>= 3.0.5, < 3.2)
|
listen (>= 3.0.5, < 3.2)
|
||||||
|
mini_racer
|
||||||
puma (~> 3.11)
|
puma (~> 3.11)
|
||||||
rails (~> 5.2.0)
|
rails (~> 5.2.0)
|
||||||
react_on_rails (= 10.1.4)
|
react_on_rails (= 10.0.2)
|
||||||
sass-rails (~> 5.0)
|
sass-rails (~> 5.0)
|
||||||
selenium-webdriver
|
selenium-webdriver
|
||||||
spring
|
spring
|
||||||
|
|
|
||||||
7
Procfile.dev
Normal file
7
Procfile.dev
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# You can run these commands in separate shells
|
||||||
|
web: rails s -p 3000
|
||||||
|
|
||||||
|
# Next line runs a watch process with webpack to compile the changed files.
|
||||||
|
# When making frequent changes to client side assets, you will prefer building webpack assets
|
||||||
|
# upon saving rather than when you refresh your browser page.
|
||||||
|
client: sh -c 'rm -rf public/packs/* || true && bundle exec rake react_on_rails:locale && bin/webpack -w'
|
||||||
12
Procfile.dev-server
Normal file
12
Procfile.dev-server
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# You can run these commands in separate shells instead of using foreman
|
||||||
|
web: rails s -p 3000
|
||||||
|
|
||||||
|
# Next line runs the webpack-dev-server
|
||||||
|
# You can edit config/webpacker.yml to set HMR to true to see hot reloading.
|
||||||
|
# Note, hot and live reloading don't work with the default generator setup on top of
|
||||||
|
# the rails/webpacker Webpack config with server rendering.
|
||||||
|
# If you have server rendering enabled, modify the call to bin/webpack-dev-server line
|
||||||
|
# so you add `--inline=false` and then CSS is not inlined.
|
||||||
|
# Otherwise, you will have an error. If you want HMR and Server Rendering, see
|
||||||
|
# the example in the https://github.com/shakacode/react-webpack-rails-tutorial
|
||||||
|
client: sh -c 'rm -rf public/packs/* || true && bundle exec rake react_on_rails:locale && bin/webpack-dev-server'
|
||||||
9
app/controllers/hello_world_controller.rb
Normal file
9
app/controllers/hello_world_controller.rb
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class HelloWorldController < ApplicationController
|
||||||
|
layout "hello_world"
|
||||||
|
|
||||||
|
def index
|
||||||
|
@hello_world_props = { name: "Stranger" }
|
||||||
|
end
|
||||||
|
end
|
||||||
45
app/javascript/bundles/HelloWorld/components/HelloWorld.jsx
Normal file
45
app/javascript/bundles/HelloWorld/components/HelloWorld.jsx
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default class HelloWorld extends React.Component {
|
||||||
|
static propTypes = {
|
||||||
|
name: PropTypes.string.isRequired, // this is passed from the Rails view
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param props - Comes from your rails view.
|
||||||
|
*/
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
// How to set initial state in ES6 class syntax
|
||||||
|
// https://reactjs.org/docs/state-and-lifecycle.html#adding-local-state-to-a-class
|
||||||
|
this.state = { name: this.props.name };
|
||||||
|
}
|
||||||
|
|
||||||
|
updateName = (name) => {
|
||||||
|
this.setState({ name });
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h3>
|
||||||
|
Hello, {this.state.name}!
|
||||||
|
</h3>
|
||||||
|
<hr />
|
||||||
|
<form >
|
||||||
|
<label htmlFor="name">
|
||||||
|
Say hello to:
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="name"
|
||||||
|
type="text"
|
||||||
|
value={this.state.name}
|
||||||
|
onChange={(e) => this.updateName(e.target.value)}
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
8
app/javascript/packs/hello-world-bundle.js
Normal file
8
app/javascript/packs/hello-world-bundle.js
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
import ReactOnRails from 'react-on-rails';
|
||||||
|
|
||||||
|
import HelloWorld from '../bundles/HelloWorld/components/HelloWorld';
|
||||||
|
|
||||||
|
// This is how react_on_rails can see the HelloWorld in the browser.
|
||||||
|
ReactOnRails.register({
|
||||||
|
HelloWorld,
|
||||||
|
});
|
||||||
2
app/views/hello_world/index.html.erb
Normal file
2
app/views/hello_world/index.html.erb
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<h1>Hello World</h1>
|
||||||
|
<%= react_component("HelloWorld", props: @hello_world_props, prerender: false) %>
|
||||||
12
app/views/layouts/hello_world.html.erb
Normal file
12
app/views/layouts/hello_world.html.erb
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>ReactOnRailsWithWebpacker</title>
|
||||||
|
<%= csrf_meta_tags %>
|
||||||
|
<%= javascript_pack_tag 'hello-world-bundle' %>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<%= yield %>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
41
config/initializers/react_on_rails.rb
Normal file
41
config/initializers/react_on_rails.rb
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# See docs/basics/configuration.md for many more options
|
||||||
|
|
||||||
|
ReactOnRails.configure do |config|
|
||||||
|
# This configures the script to run to build the production assets by webpack. Set this to nil
|
||||||
|
# if you don't want react_on_rails building this file for you.
|
||||||
|
config.build_production_command = "RAILS_ENV=production NODE_ENV=production bin/webpack"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
# TEST CONFIGURATION OPTIONS
|
||||||
|
# Below options are used with the use of this test helper:
|
||||||
|
# ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# If you are using this in your spec_helper.rb (or rails_helper.rb):
|
||||||
|
#
|
||||||
|
# ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
||||||
|
#
|
||||||
|
# with rspec then this controls what yarn command is run
|
||||||
|
# to automatically refresh your webpack assets on every test run.
|
||||||
|
#
|
||||||
|
config.build_test_command = "RAILS_ENV=test bin/webpack"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
# SERVER RENDERING OPTIONS
|
||||||
|
################################################################################
|
||||||
|
# This is the file used for server rendering of React when using `(prerender: true)`
|
||||||
|
# If you are never using server rendering, you should set this to "".
|
||||||
|
# Note, there is only one server bundle, unlike JavaScript where you want to minimize the size
|
||||||
|
# of the JS sent to the client. For the server rendering, React on Rails creates a pool of
|
||||||
|
# JavaScript execution instances which should handle any component requested.
|
||||||
|
#
|
||||||
|
# While you may configure this to be the same as your client bundle file, this file is typically
|
||||||
|
# different. You should have ONE server bundle which can create all of your server rendered
|
||||||
|
# React components.
|
||||||
|
#
|
||||||
|
config.server_bundle_js_file = "hello-world-bundle.js"
|
||||||
|
end
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
|
get 'hello_world', to: 'hello_world#index'
|
||||||
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
|
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
"babel-preset-react": "^6.24.1",
|
"babel-preset-react": "^6.24.1",
|
||||||
"prop-types": "^15.6.1",
|
"prop-types": "^15.6.1",
|
||||||
"react": "^16.3.2",
|
"react": "^16.3.2",
|
||||||
"react-dom": "^16.3.2"
|
"react-dom": "^16.3.2",
|
||||||
|
"react-on-rails": "^10.1.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack-dev-server": "2.11.2"
|
"webpack-dev-server": "2.11.2"
|
||||||
|
|
|
||||||
|
|
@ -2084,6 +2084,10 @@ react-dom@^16.3.2:
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.0"
|
||||||
|
|
||||||
|
react-on-rails@^10.1.4:
|
||||||
|
version "10.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-10.1.4.tgz#50e1b7596928746cff2ef90c00adb8e7cd41fe98"
|
||||||
|
|
||||||
react@^16.3.2:
|
react@^16.3.2:
|
||||||
version "16.3.2"
|
version "16.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
|
resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue