react_on_rails 9.0.0.beta.11 → 9.0.0.beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintignore +2 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +5 -0
  5. data/.travis.yml +11 -0
  6. data/CHANGELOG.md +24 -9
  7. data/Gemfile +2 -2
  8. data/Gemfile.rails32 +74 -0
  9. data/README.md +17 -12
  10. data/Rakefile +8 -1
  11. data/app/helpers/react_on_rails_helper.rb +1 -1
  12. data/docs/additional-reading/asset-pipeline.md +20 -0
  13. data/docs/additional-reading/hot-reloading-rails-development.md +0 -75
  14. data/docs/additional-reading/rspec-configuration.md +6 -23
  15. data/{lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt → docs/basics/configuration.md} +78 -41
  16. data/docs/basics/generator.md +0 -5
  17. data/docs/basics/installation-overview.md +5 -4
  18. data/docs/tutorial.md +25 -13
  19. data/lib/generators/USAGE +0 -4
  20. data/lib/generators/react_on_rails/base_generator.rb +41 -81
  21. data/lib/generators/react_on_rails/dev_tests_generator.rb +7 -5
  22. data/lib/generators/react_on_rails/install_generator.rb +5 -10
  23. data/lib/generators/react_on_rails/react_no_redux_generator.rb +10 -9
  24. data/lib/generators/react_on_rails/react_with_redux_generator.rb +27 -17
  25. data/lib/generators/react_on_rails/templates/.eslintrc +2 -0
  26. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +4 -0
  27. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +5 -0
  28. data/lib/generators/react_on_rails/templates/base/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
  29. data/lib/generators/react_on_rails/templates/base/base/{client/app/bundles/HelloWorld/startup/registration.jsx.tt → app/javascript/packs/registration.js.tt} +0 -0
  30. data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +0 -1
  31. data/lib/generators/react_on_rails/templates/base/base/app/views/layouts/{hello_world.html.erb.tt → hello_world.html.erb} +3 -3
  32. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +41 -0
  33. data/lib/generators/react_on_rails/templates/dev_tests/.eslintrc +25 -0
  34. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +0 -1
  35. data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +2 -0
  36. data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx → app/javascript/bundles/HelloWorld/actions/helloWorldActionCreators.js} +0 -0
  37. data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
  38. data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx → app/javascript/bundles/HelloWorld/constants/helloWorldConstants.js} +0 -0
  39. data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/containers/HelloWorldContainer.jsx → app/javascript/bundles/HelloWorld/containers/HelloWorldContainer.js} +0 -0
  40. data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx → app/javascript/bundles/HelloWorld/reducers/helloWorldReducer.js} +0 -0
  41. data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/startup/HelloWorldApp.jsx +0 -0
  42. data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/store/helloWorldStore.jsx → app/javascript/bundles/HelloWorld/store/helloWorldStore.js} +0 -0
  43. data/lib/react_on_rails/configuration.rb +15 -10
  44. data/lib/react_on_rails/server_rendering_pool/exec.rb +21 -8
  45. data/lib/react_on_rails/test_helper.rb +6 -6
  46. data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +1 -1
  47. data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +3 -1
  48. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +10 -6
  49. data/lib/react_on_rails/utils.rb +34 -3
  50. data/lib/react_on_rails/version.rb +1 -1
  51. data/lib/react_on_rails/version_checker.rb +1 -1
  52. data/lib/tasks/assets.rake +10 -2
  53. data/package.json +6 -2
  54. data/rakelib/dummy_apps.rake +9 -0
  55. data/rakelib/example_type.rb +8 -19
  56. data/rakelib/examples.rake +3 -5
  57. data/rakelib/run_rspec.rake +17 -0
  58. data/yarn.lock +29 -0
  59. metadata +19 -23
  60. data/lib/generators/react_on_rails/node_generator.rb +0 -24
  61. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +0 -4
  62. data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +0 -3
  63. data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +0 -9
  64. data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +0 -36
  65. data/lib/generators/react_on_rails/templates/base/base/client/webpack.config.js +0 -78
  66. data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +0 -28
  67. data/lib/generators/react_on_rails/templates/base/base/package.json.tt +0 -8
  68. data/lib/generators/react_on_rails/templates/node/base/client/node/package.json +0 -10
  69. data/lib/generators/react_on_rails/templates/node/base/client/node/server.js +0 -105
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails/generators"
4
-
5
- module ReactOnRails
6
- module Generators
7
- class NodeGenerator < Rails::Generators::Base
8
- Rails::Generators.hide_namespace(namespace)
9
- source_root(File.expand_path("../templates", __FILE__))
10
-
11
- def create_node_directory
12
- empty_directory("client/node")
13
- end
14
-
15
- def copy_base_redux_files
16
- base_path = "node/base/"
17
- %w[client/node/server.js
18
- client/node/package.json].each do |file|
19
- copy_file(base_path + file, file)
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,4 +0,0 @@
1
- web: rails s -p 3000
2
-
3
- # Next line runs a watch process with webpack
4
- client: sh -c 'rm -rf public/webpack/development/* || true && cd client && bundle exec rake react_on_rails:locale && yarn run build:development'
@@ -1,3 +0,0 @@
1
- {
2
- "presets": ["es2015", "stage-2", "react"]
3
- }
@@ -1,9 +0,0 @@
1
- Client folder generated by the React on Rails gem.
2
-
3
- See documentation [at github.com/shakacode/react_on_rails](https://github.com/shakacode/react_on_rails) for details on how it is organized.
4
-
5
- If you need additional help, please consider:
6
-
7
- * [Our ShakaCode Forum for React on Rails](https://forum.shakacode.com/c/rails/reactonrails).
8
- * Joining our Slack discussion room by [emailing us a bit about you and your project](mailto:contact@shakacode.com).
9
- * [Hiring us](https://forum.shakacode.com/c/rails/reactonrails) for coaching and custom web application development for your project.
@@ -1,36 +0,0 @@
1
- <%- require "react_on_rails/version_syntax_converter" -%>
2
- {
3
- "name": "<%= app_name %>",
4
- "private": true,
5
- "scripts": {
6
- "build:test": "NODE_ENV=test webpack --config webpack.config.js",
7
- "build:production": "NODE_ENV=production webpack -p --config webpack.config.js",
8
- "build:development": "NODE_ENV=development webpack -w --config webpack.config.js"
9
- },
10
- "cacheDirectories": ["node_modules", "client/node_modules"],
11
- "dependencies": {
12
- "babel-cli": "^6.24.1",
13
- "babel-core": "^6.25.0",
14
- "babel-loader": "^7.1.1",
15
- "babel-runtime": "^6.25.0",
16
- "babel-polyfill": "^6.23.0",
17
- "babel-preset-es2015": "^6.24.1",
18
- "babel-preset-react": "^6.24.1",
19
- "babel-preset-stage-2": "^6.24.1",
20
- "es5-shim": "^4.5.9",
21
- "expose-loader": "^0.7.3",
22
- "imports-loader": "^0.7.1",
23
- "js-yaml": "^3.9.1",
24
- "react": "^15.6.1",
25
- "react-dom": "^15.6.1",
26
- "react-on-rails": "<%= VersionSyntaxConverter.new.rubygem_to_npm %>",
27
- <%- if options.redux? -%>
28
- "react-redux": "^5.0.5",
29
- "redux": "^3.7.2",
30
- <%- end -%>
31
- "webpack": "^3.4.1",
32
- "webpack-manifest-plugin": "^1.2.1"
33
- },
34
- "devDependencies": {
35
- }
36
- }
@@ -1,78 +0,0 @@
1
- // For inspiration on your webpack configuration, see:
2
- // https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client
3
- // https://github.com/shakacode/react-webpack-rails-tutorial/tree/master/client
4
-
5
- const webpack = require('webpack');
6
- const { resolve } = require('path');
7
-
8
- const ManifestPlugin = require('webpack-manifest-plugin');
9
- const webpackConfigLoader = require('react-on-rails/webpackConfigLoader');
10
-
11
- const configPath = resolve('..', 'config');
12
- const { devBuild, output } = webpackConfigLoader(configPath);
13
-
14
- const config = {
15
-
16
- context: resolve(__dirname),
17
-
18
- entry: {
19
- 'hello-world-bundle': [
20
- 'es5-shim/es5-shim',
21
- 'es5-shim/es5-sham',
22
- 'babel-polyfill',
23
- './app/bundles/HelloWorld/startup/registration',
24
- ],
25
- },
26
-
27
- output: {
28
- // Name comes from the entry section.
29
- filename: '[name]-[chunkhash].js',
30
-
31
- // Leading slash is necessary
32
- publicPath: `/${output.publicPath}`,
33
- path: output.path,
34
- },
35
-
36
- resolve: {
37
- extensions: ['.js', '.jsx'],
38
- },
39
-
40
- plugins: [
41
- new webpack.EnvironmentPlugin({
42
- NODE_ENV: 'development', // use 'development' unless process.env.NODE_ENV is defined
43
- DEBUG: false,
44
- }),
45
- new ManifestPlugin({
46
- publicPath: output.publicPath,
47
- writeToFileEmit: true }),
48
- ],
49
-
50
- module: {
51
- rules: [
52
- {
53
- test: require.resolve('react'),
54
- use: {
55
- loader: 'imports-loader',
56
- options: {
57
- shim: 'es5-shim/es5-shim',
58
- sham: 'es5-shim/es5-sham',
59
- },
60
- },
61
- },
62
- {
63
- test: /\.jsx?$/,
64
- use: 'babel-loader',
65
- exclude: /node_modules/,
66
- },
67
- ],
68
- },
69
- };
70
-
71
- module.exports = config;
72
-
73
- if (devBuild) {
74
- console.log('Webpack dev build for Rails'); // eslint-disable-line no-console
75
- module.exports.devtool = 'eval-source-map';
76
- } else {
77
- console.log('Webpack production build for Rails'); // eslint-disable-line no-console
78
- }
@@ -1,28 +0,0 @@
1
- # Note: Base output directory of /public is assumed for static files
2
- default: &default
3
- # Critical to set compile as false for React on Rails projects
4
- compile: false
5
- custom_compile: true
6
- # Cache manifest.json for performance
7
- cache_manifest: false
8
-
9
- development:
10
- <<: *default
11
- # generated files for development, in /public/webpack/development
12
- public_output_path: webpack/development
13
-
14
- dev_server:
15
- host: localhost
16
- port: 3035
17
- hmr: true
18
-
19
- test:
20
- <<: *default
21
- # generated files for test, in /public/webpack/test
22
- public_output_path: webpack/test
23
-
24
- production:
25
- <<: *default
26
- # generated files for production, in /public/webpack/production
27
- public_output_path: webpack/production
28
- cache_manifest: true
@@ -1,8 +0,0 @@
1
- {
2
- "name": "<%= app_name %>",
3
- "private": true,
4
- "dependencies": {},
5
- "scripts": {
6
- "postinstall": "cd client && yarn install"
7
- }
8
- }
@@ -1,10 +0,0 @@
1
- {
2
- "name": "react_on_rails_node",
3
- "version": "0.0.0",
4
- "private": true,
5
- "scripts": {
6
- "start": "node ./server.js -s hello-world-bundle.js"
7
- },
8
- "dependencies": {
9
- }
10
- }
@@ -1,105 +0,0 @@
1
- const net = require('net');
2
- const fs = require('fs');
3
-
4
- const bundlePath = '../../app/assets/webpack/';
5
- let bundleFileName = 'server-bundle.js';
6
-
7
- let currentArg;
8
-
9
- class Handler {
10
- constructor() {
11
- this.queue = [];
12
- this.initialized = false;
13
- }
14
-
15
- initialize() {
16
- console.log(`Processing ${this.queue.length} pending requests`);
17
- let callback;
18
-
19
- // eslint-disable-next-line no-cond-assign
20
- while (callback = this.queue.pop()) {
21
- callback();
22
- }
23
-
24
- this.initialized = true;
25
- }
26
-
27
- handle(connection) {
28
- const callback = () => {
29
- const terminator = '\r\n\0';
30
- let request = '';
31
- connection.setEncoding('utf8');
32
- connection.on('data', (data) => {
33
- console.log(`Processing chunk: ${data}`);
34
- request += data;
35
- if (data.slice(-terminator.length) === terminator) {
36
- request = request.slice(0, -terminator.length);
37
-
38
- // eslint-disable-next-line no-eval
39
- const response = eval(request);
40
- connection.write(`${response}${terminator}`);
41
- request = '';
42
- }
43
- });
44
- };
45
-
46
- if (this.initialized) {
47
- callback();
48
- } else {
49
- this.queue.push(callback);
50
- }
51
- }
52
- }
53
-
54
- const handler = new Handler();
55
-
56
- process.argv.forEach((val) => {
57
- if (val[0] === '-') {
58
- currentArg = val.slice(1);
59
- return;
60
- }
61
-
62
- if (currentArg === 's') {
63
- bundleFileName = val;
64
- }
65
- });
66
-
67
- function loadBundle() {
68
- if (handler.initialized) {
69
- console.log('Reloading server bundle must be implemented by restarting the node process!');
70
- return;
71
- }
72
-
73
- /* eslint-disable */
74
- require(bundlePath + bundleFileName);
75
- /* eslint-enable */
76
- console.log(`Loaded server bundle: ${bundlePath}${bundleFileName}`);
77
- handler.initialize();
78
- }
79
-
80
- try {
81
- fs.mkdirSync(bundlePath);
82
- } catch (e) {
83
- if (e.code !== 'EEXIST') {
84
- throw e;
85
- } else {
86
- loadBundle();
87
- }
88
- }
89
-
90
- fs.watchFile(bundlePath + bundleFileName, (curr) => {
91
- if (curr && curr.blocks && curr.blocks > 0) {
92
- loadBundle();
93
- }
94
- });
95
-
96
- const unixServer = net.createServer((connection) => {
97
- handler.handle(connection);
98
- });
99
-
100
- unixServer.listen('node.sock');
101
-
102
- process.on('SIGINT', () => {
103
- unixServer.close();
104
- process.exit();
105
- });