react_on_rails 12.0.1 → 13.0.0
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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +27 -13
- data/.eslintrc +2 -1
- data/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/lint-js-and-ruby.yml +53 -0
- data/.github/workflows/main.yml +178 -0
- data/.github/workflows/package-js-tests.yml +35 -0
- data/.github/workflows/rspec-package-specs.yml +45 -0
- data/.gitignore +0 -3
- data/.prettierignore +2 -0
- data/.prettierrc +0 -3
- data/.rubocop.yml +48 -39
- data/.travis.yml +3 -1
- data/CHANGELOG.md +112 -25
- data/CONTRIBUTING.md +4 -3
- data/Gemfile +1 -33
- data/Gemfile.development_dependencies +52 -0
- data/NEWS.md +14 -4
- data/REACT-ON-RAILS-PRO-LICENSE +1 -1
- data/README.md +42 -324
- data/Rakefile +1 -1
- data/SUMMARY.md +22 -13
- data/docs/{basics → additional-details}/generator-details.md +1 -6
- data/docs/{outdated → additional-details}/manual-installation-overview.md +6 -6
- data/docs/additional-details/recommended-project-structure.md +69 -0
- data/docs/additional-details/upgrade-webpacker-v3-to-v4.md +10 -0
- data/docs/api/javascript-api.md +2 -2
- data/docs/api/redux-store-api.md +3 -3
- data/docs/api/view-helpers-api.md +7 -8
- data/docs/contributor-info/linters.md +5 -6
- data/docs/contributor-info/pull-requests.md +2 -4
- data/docs/contributor-info/releasing.md +1 -1
- data/docs/{basics → deployment}/heroku-deployment.md +16 -5
- data/docs/{basics → guides}/client-vs-server-rendering.md +4 -2
- data/docs/{basics → guides}/configuration.md +65 -31
- data/docs/guides/deployment.md +4 -0
- data/docs/guides/getting-started.md +183 -0
- data/docs/guides/hmr-and-hot-reloading-with-the-webpack-dev-server.md +104 -0
- data/docs/{outdated → guides}/how-react-on-rails-works.md +10 -10
- data/docs/guides/how-to-conditionally-server-render-based-on-device-type.md +39 -0
- data/docs/guides/how-to-use-different-files-for-client-and-server-rendering.md +98 -0
- data/docs/{basics → guides}/installation-into-an-existing-rails-app.md +14 -7
- data/docs/guides/rails-webpacker-react-integration-options.md +182 -0
- data/docs/guides/react-on-rails-overview.md +30 -0
- data/docs/{basics → guides}/react-server-rendering.md +8 -5
- data/docs/{basics → guides}/rspec-configuration.md +11 -11
- data/docs/{tutorial.md → guides/tutorial.md} +46 -50
- data/docs/{basics → guides}/upgrading-react-on-rails.md +56 -18
- data/docs/guides/webpack-configuration.md +42 -0
- data/docs/home.md +23 -0
- data/docs/{outdated → javascript}/code-splitting.md +5 -5
- data/docs/{additional-reading → javascript}/converting-from-custom-webpack-config-to-rails-webpacker-config.md +4 -4
- data/docs/{additional-reading → javascript}/images.md +5 -6
- data/docs/{articles.md → misc/articles.md} +1 -1
- data/docs/misc/doctrine.md +5 -6
- data/docs/outdated/deferred-rendering.md +39 -0
- data/docs/outdated/rails-assets-relative-paths.md +3 -3
- data/docs/outdated/rails-assets.md +8 -8
- data/docs/outdated/rails3.md +2 -2
- data/docs/{additional-reading → rails}/convert-rails-5-api-only-app.md +1 -1
- data/docs/{additional-reading → rails}/rails-engine-integration.md +3 -12
- data/docs/{additional-reading → rails}/turbolinks.md +13 -1
- data/docs/react-on-rails-pro/react-on-rails-pro.md +43 -0
- data/docs/testimonials/testimonials.md +6 -6
- data/lib/generators/react_on_rails/base_generator.rb +64 -12
- data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
- data/lib/generators/react_on_rails/generator_helper.rb +4 -0
- data/lib/generators/react_on_rails/templates/.eslintrc +3 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +4 -8
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-static +9 -0
- data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +2 -1
- data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.module.css +4 -0
- data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorldServer.js +5 -0
- data/lib/generators/react_on_rails/templates/base/base/app/javascript/packs/server-bundle.js +8 -0
- data/lib/generators/react_on_rails/templates/base/base/app/views/layouts/hello_world.html.erb +1 -0
- data/lib/generators/react_on_rails/templates/base/base/babel.config.js.tt +32 -0
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +3 -3
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/clientWebpackConfig.js.tt +17 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt +15 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt +25 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/production.js.tt +9 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt +117 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/test.js.tt +6 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/webpack.config.js.tt +15 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpack/webpackConfig.js.tt +36 -0
- data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +62 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +8 -2
- data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +1 -1
- data/lib/generators/react_on_rails/templates/dev_tests/spec/{features → system}/hello_world_spec.rb +2 -2
- data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +2 -1
- data/lib/react_on_rails/configuration.rb +42 -41
- data/lib/react_on_rails/git_utils.rb +3 -3
- data/lib/react_on_rails/helper.rb +54 -28
- data/lib/react_on_rails/json_parse_error.rb +1 -1
- data/lib/react_on_rails/locales/base.rb +11 -15
- data/lib/react_on_rails/locales/to_js.rb +0 -4
- data/lib/react_on_rails/locales/to_json.rb +0 -4
- data/lib/react_on_rails/prerender_error.rb +6 -3
- data/lib/react_on_rails/react_component/render_options.rb +30 -7
- data/lib/react_on_rails/server_rendering_js_code.rb +13 -0
- data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +41 -13
- data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +1 -1
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +3 -3
- data/lib/react_on_rails/test_helper.rb +4 -2
- data/lib/react_on_rails/utils.rb +24 -4
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/webpacker_utils.rb +9 -10
- data/lib/tasks/assets.rake +19 -50
- data/lib/tasks/locale.rake +1 -2
- data/package.json +24 -29
- data/rakelib/docker.rake +0 -5
- data/rakelib/example_type.rb +10 -3
- data/rakelib/examples.rake +3 -5
- data/rakelib/lint.rake +3 -9
- data/rakelib/release.rake +35 -15
- data/rakelib/run_rspec.rake +10 -11
- data/rakelib/task_helpers.rb +16 -4
- data/react_on_rails.gemspec +5 -20
- data/yarn.lock +2616 -5190
- metadata +86 -256
- data/.release-it.json +0 -3
- data/docs/additional-reading/upgrade-webpacker-v3-to-v4.md +0 -10
- data/docs/additional-reading/webpack-dev-server.md +0 -15
- data/docs/basics/deployment.md +0 -4
- data/docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md +0 -49
- data/docs/basics/recommended-project-structure.md +0 -77
- data/docs/basics/webpack-configuration.md +0 -50
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +0 -26
- data/ruby-lint.yml +0 -25
- /data/docs/{basics → additional-details}/migrating-from-react-rails.md +0 -0
- /data/docs/{additional-reading → additional-details}/updating-dependencies.md +0 -0
- /data/docs/{additional-reading → deployment}/elastic-beanstalk.md +0 -0
- /data/docs/{basics → guides}/i18n.md +0 -0
- /data/docs/{basics → guides}/minitest-configuration.md +0 -0
- /data/docs/{basics → guides}/render-functions-and-railscontext.md +0 -0
- /data/docs/{additional-reading → javascript}/angular-js-integration-migration.md +0 -0
- /data/docs/{additional-reading → javascript}/asset-pipeline.md +0 -0
- /data/docs/{additional-reading → javascript}/capistrano-deployment.md +0 -0
- /data/docs/{additional-reading → javascript}/credits.md +0 -0
- /data/docs/{additional-reading → javascript}/foreman-issues.md +0 -0
- /data/docs/{additional-reading → javascript}/node-dependencies-and-npm.md +0 -0
- /data/docs/{additional-reading → javascript}/react-and-redux.md +0 -0
- /data/docs/{additional-reading → javascript}/react-helmet.md +0 -0
- /data/docs/{additional-reading → javascript}/react-router.md +0 -0
- /data/docs/{additional-reading → javascript}/server-rendering-tips.md +0 -0
- /data/docs/{additional-reading → javascript}/troubleshooting-when-using-webpacker.md +0 -0
- /data/docs/{additional-reading → javascript}/webpack-v1-notes.md +0 -0
- /data/docs/{additional-reading → javascript}/webpack.md +0 -0
- /data/docs/{coding-style → misc}/style.md +0 -0
- /data/docs/{additional-reading → misc}/tips.md +0 -0
- /data/docs/{additional-reading → rails}/rails_view_rendering_from_inline_javascript.md +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d0c8e1ea64a37bf952902b50d8336916e2d579f8a2e4f04e2467bd750d8418d7
|
|
4
|
+
data.tar.gz: 388204125e919bb352bb14df64ab67549459c2f63c416e6dc98de39daccf2395
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b59cea6f171d0734b118238b2b7cc1b6cf7573ea47e77716f4175d9fc69dc896d175cc331c064f6dad563cbe5a8474e81ae55568b455e152f7674b15e1670961
|
|
7
|
+
data.tar.gz: 1f7a8895a3f90eff53089451c79a27bc920ac4488bb9475bdd46373b467e10ca6d8ebe445e715cdb86e50590b27da9a9ca99aa455c724be3cd85a83f8065701d
|
data/.circleci/config.yml
CHANGED
|
@@ -2,7 +2,7 @@ version: 2
|
|
|
2
2
|
|
|
3
3
|
aliases:
|
|
4
4
|
- &docker-image
|
|
5
|
-
- image: circleci/ruby:2.
|
|
5
|
+
- image: circleci/ruby:2.7-node-browsers
|
|
6
6
|
|
|
7
7
|
# Print critical data and executables versions.
|
|
8
8
|
- &print-system-info
|
|
@@ -31,9 +31,9 @@ aliases:
|
|
|
31
31
|
- &install-package-node-modules
|
|
32
32
|
name: Install Node modules with Yarn for renderer package
|
|
33
33
|
command: |
|
|
34
|
+
sudo yarn global add yalc
|
|
34
35
|
yarn install --no-progress --no-emoji
|
|
35
36
|
yarn run eslint -v
|
|
36
|
-
sudo yarn global add yalc
|
|
37
37
|
|
|
38
38
|
# Install/update Node modules for dummy app unless existing set of modules is satisfying Yarn.
|
|
39
39
|
- &install-dummy-app-node-modules
|
|
@@ -55,7 +55,7 @@ aliases:
|
|
|
55
55
|
command: |
|
|
56
56
|
gem install bundler
|
|
57
57
|
echo "Bundler version: "; bundle --version
|
|
58
|
-
cd spec/dummy && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
58
|
+
cd spec/dummy && bundle lock --add-platform 'x86_64-linux' && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
59
59
|
|
|
60
60
|
# Install ruby gems unless existing set of gems is satisfying bundler.
|
|
61
61
|
- &install-package-ruby-gems
|
|
@@ -63,31 +63,32 @@ aliases:
|
|
|
63
63
|
command: |
|
|
64
64
|
gem install bundler
|
|
65
65
|
echo "Bundler version: "; bundle --version
|
|
66
|
+
bundle lock --add-platform 'x86_64-linux'
|
|
66
67
|
bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
67
68
|
|
|
68
69
|
# Restore node_modules dir from cache using yarn.lock checksum as a key.
|
|
69
70
|
- &restore-package-node-modules-cache
|
|
70
71
|
name: Restore cached node_modules directory
|
|
71
72
|
keys:
|
|
72
|
-
-
|
|
73
|
+
- v5-package-node-modules-cache-{{ checksum "yarn.lock" }}
|
|
73
74
|
|
|
74
75
|
# Restore spec/dummy/node_modules dir from cache using yarn.lock checksum as a key.
|
|
75
76
|
- &restore-dummy-app-node-modules-cache
|
|
76
77
|
name: Restore cached spec/dummy/node_modules directory
|
|
77
78
|
keys:
|
|
78
|
-
-
|
|
79
|
+
- v5-dummy-app-node-modules-cache-{{ checksum "spec/dummy/yarn.lock" }}
|
|
79
80
|
|
|
80
81
|
# Restore vendor/bundle dir from cache using Gemfile.lock checksum as a key.
|
|
81
82
|
- &restore-dummy-app-gem-cache
|
|
82
83
|
name: Restore cached Ruby Gems for dummy app
|
|
83
84
|
keys:
|
|
84
|
-
-
|
|
85
|
+
- v5-dummy-app-gem-cache-{{ checksum "spec/dummy/Gemfile.lock" }}
|
|
85
86
|
|
|
86
87
|
# Restore vendor/bundle dir from cache using react_on_rails.gemspec checksum as a key.
|
|
87
88
|
- &restore-package-gem-cache
|
|
88
89
|
name: Restore cached Ruby Gems for package
|
|
89
90
|
keys:
|
|
90
|
-
-
|
|
91
|
+
- v5-package-app-gem-cache-{{ checksum "react_on_rails.gemspec" }}
|
|
91
92
|
|
|
92
93
|
# NOTE: Sometimes CI generated docker images are not updated in time to keep up with the minimum required
|
|
93
94
|
# by chromedriver versions of Chrome. Just bump here Chrome version if chromedriver raises errors
|
|
@@ -139,7 +140,7 @@ jobs:
|
|
|
139
140
|
- run: *install-package-node-modules
|
|
140
141
|
- save_cache:
|
|
141
142
|
name: Save root node_modules to cache
|
|
142
|
-
key:
|
|
143
|
+
key: v5-package-node-modules-cache-{{ checksum "yarn.lock" }}
|
|
143
144
|
paths:
|
|
144
145
|
- node_modules
|
|
145
146
|
|
|
@@ -157,7 +158,7 @@ jobs:
|
|
|
157
158
|
- run: *install-dummy-app-node-modules
|
|
158
159
|
- save_cache:
|
|
159
160
|
name: Save spec/dummy/node_modules to cache
|
|
160
|
-
key:
|
|
161
|
+
key: v5-dummy-app-node-modules-cache-{{ checksum "spec/dummy/yarn.lock" }}
|
|
161
162
|
paths:
|
|
162
163
|
- spec/dummy/node_modules
|
|
163
164
|
- spec/dummy/node_modules
|
|
@@ -172,7 +173,7 @@ jobs:
|
|
|
172
173
|
- run: *install-package-ruby-gems
|
|
173
174
|
- save_cache:
|
|
174
175
|
name: Save dummy app ruby gems to cache
|
|
175
|
-
key:
|
|
176
|
+
key: v5-package-app-gem-cache-{{ checksum "react_on_rails.gemspec" }}
|
|
176
177
|
paths:
|
|
177
178
|
- vendor/bundle
|
|
178
179
|
|
|
@@ -186,7 +187,7 @@ jobs:
|
|
|
186
187
|
- run: *install-dummy-app-ruby-gems
|
|
187
188
|
- save_cache:
|
|
188
189
|
name: Save dummy app ruby gems to cache
|
|
189
|
-
key:
|
|
190
|
+
key: v5-dummy-app-gem-cache-{{ checksum "spec/dummy/Gemfile.lock" }}
|
|
190
191
|
paths:
|
|
191
192
|
- spec/dummy/vendor/bundle
|
|
192
193
|
|
|
@@ -209,7 +210,7 @@ jobs:
|
|
|
209
210
|
command: cd spec/dummy && yarn run build:test
|
|
210
211
|
- save_cache:
|
|
211
212
|
name: Save test webpack bundles to cache (for build number checksum used by rspec job)
|
|
212
|
-
key:
|
|
213
|
+
key: v5-dummy-app-webpack-bundle-{{ .Revision }}
|
|
213
214
|
paths:
|
|
214
215
|
- spec/dummy/public/webpack
|
|
215
216
|
# Run JS unit tests for Renderer package.
|
|
@@ -249,7 +250,7 @@ jobs:
|
|
|
249
250
|
- restore_cache: *restore-dummy-app-gem-cache
|
|
250
251
|
- restore_cache:
|
|
251
252
|
name: Restore cached webpack bundles for dummy app
|
|
252
|
-
key:
|
|
253
|
+
key: v5-dummy-app-webpack-bundle-{{ .Revision }}
|
|
253
254
|
- restore_cache: *restore-dummy-app-node-modules-cache
|
|
254
255
|
- restore_cache: *restore-package-node-modules-cache
|
|
255
256
|
- run: *install-package-node-modules
|
|
@@ -274,10 +275,22 @@ jobs:
|
|
|
274
275
|
# TODO -- need to leverage Circle CI containers
|
|
275
276
|
command: |
|
|
276
277
|
bundle exec rake run_rspec:all_dummy
|
|
278
|
+
# The following step will run only if the main job is finished successfully.
|
|
279
|
+
# Build hook is triggered by curl command described here https://docs.netlify.com/configure-builds/build-hooks/
|
|
280
|
+
# NETLIFY_HOOK is an environment variable on CircleCI to keep sensitive data outside the repo
|
|
281
|
+
- run:
|
|
282
|
+
name: Deploy SC website
|
|
283
|
+
command: |
|
|
284
|
+
if [ $CIRCLE_BRANCH = "master" ]; then
|
|
285
|
+
curl -X POST -d '{}' ${NETLIFY_HOOK}
|
|
286
|
+
fi
|
|
287
|
+
when: on_success
|
|
277
288
|
- store_test_results:
|
|
278
289
|
path: ~/rspec
|
|
279
290
|
- store_artifacts:
|
|
280
291
|
path: spec/dummy/tmp/capybara
|
|
292
|
+
- store_artifacts:
|
|
293
|
+
path: spec/dummy/tmp/screenshots
|
|
281
294
|
- store_artifacts:
|
|
282
295
|
path: spec/dummy/log/test.log
|
|
283
296
|
- store_artifacts:
|
|
@@ -304,6 +317,7 @@ workflows:
|
|
|
304
317
|
- build-dummy-app-webpack-test-bundles:
|
|
305
318
|
requires:
|
|
306
319
|
- install-dummy-app-node-packages
|
|
320
|
+
- install-dummy-app-ruby-gems
|
|
307
321
|
- package-js-tests:
|
|
308
322
|
requires:
|
|
309
323
|
- install-package-node-packages
|
data/.eslintrc
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
---
|
|
2
1
|
extends:
|
|
3
2
|
- eslint-config-shakacode
|
|
4
3
|
- prettier
|
|
@@ -32,8 +31,10 @@ overrides:
|
|
|
32
31
|
- "@typescript-eslint"
|
|
33
32
|
rules:
|
|
34
33
|
"@typescript-eslint/no-namespace": 0
|
|
34
|
+
"@typescript-eslint/no-shadow": ["error"]
|
|
35
35
|
|
|
36
36
|
rules:
|
|
37
|
+
no-shadow: 0
|
|
37
38
|
no-console: 0
|
|
38
39
|
function-paren-newline: 0
|
|
39
40
|
object-curly-newline: 0
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
A bug is a crash or incorrect behavior. If you have a debugging or troubleshooting question, please open [a discussion](https://github.com/shakacode/react_on_rails/discussions).
|
|
11
|
+
|
|
12
|
+
## Environment
|
|
13
|
+
|
|
14
|
+
1. Ruby version:
|
|
15
|
+
2. Rails version:
|
|
16
|
+
3. Webpacker version:
|
|
17
|
+
4. React on Rails version:
|
|
18
|
+
|
|
19
|
+
## Expected behavior
|
|
20
|
+
|
|
21
|
+
## Actual behavior
|
|
22
|
+
|
|
23
|
+
## Small, reproducible repo
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
|
11
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
12
|
+
|
|
13
|
+
**Describe the solution you'd like**
|
|
14
|
+
A clear and concise description of what you want to happen.
|
|
15
|
+
|
|
16
|
+
**Describe alternatives you've considered**
|
|
17
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
18
|
+
|
|
19
|
+
**Additional context**
|
|
20
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: Lint JS and Ruby
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
strategy:
|
|
8
|
+
matrix:
|
|
9
|
+
ruby: [2.7]
|
|
10
|
+
node: [14]
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- name: Setup Ruby
|
|
15
|
+
uses: ruby/setup-ruby@v1
|
|
16
|
+
with:
|
|
17
|
+
ruby-version: ${{ matrix.ruby }}
|
|
18
|
+
- name: Setup Node
|
|
19
|
+
uses: actions/setup-node@v2-beta
|
|
20
|
+
with:
|
|
21
|
+
node-version: ${{ matrix.node }}
|
|
22
|
+
- name: Print system information
|
|
23
|
+
run: |
|
|
24
|
+
echo "Linux release: "; cat /etc/issue
|
|
25
|
+
echo "Current user: "; whoami
|
|
26
|
+
echo "Current directory: "; pwd
|
|
27
|
+
echo "Ruby version: "; ruby -v
|
|
28
|
+
echo "Node version: "; node -v
|
|
29
|
+
echo "Yarn version: "; yarn --version
|
|
30
|
+
echo "Bundler version: "; bundle --version
|
|
31
|
+
- name: Save root node_modules to cache
|
|
32
|
+
uses: actions/cache@v2
|
|
33
|
+
with:
|
|
34
|
+
path: node_modules
|
|
35
|
+
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
|
|
36
|
+
- name: Save root ruby gems to cache
|
|
37
|
+
uses: actions/cache@v2
|
|
38
|
+
with:
|
|
39
|
+
path: vendor/bundle
|
|
40
|
+
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
|
|
41
|
+
- name: Install Node modules with Yarn for renderer package
|
|
42
|
+
run: |
|
|
43
|
+
yarn install --no-progress --no-emoji
|
|
44
|
+
yarn run eslint -v
|
|
45
|
+
sudo yarn global add yalc
|
|
46
|
+
- name: Install Ruby Gems for package
|
|
47
|
+
run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
48
|
+
- name: Linting of Ruby
|
|
49
|
+
run: bundle exec rubocop
|
|
50
|
+
- name: Linting of JS
|
|
51
|
+
run: yarn start lint
|
|
52
|
+
- name: Check formatting
|
|
53
|
+
run: yarn start format.listDifferent
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
name: Main test
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build-dummy-app-webpack-test-bundles:
|
|
7
|
+
strategy:
|
|
8
|
+
matrix:
|
|
9
|
+
ruby: [2.7]
|
|
10
|
+
node: [14]
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- name: Setup Ruby
|
|
15
|
+
uses: ruby/setup-ruby@v1
|
|
16
|
+
with:
|
|
17
|
+
ruby-version: ${{ matrix.ruby }}
|
|
18
|
+
- name: Setup Node
|
|
19
|
+
uses: actions/setup-node@v2-beta
|
|
20
|
+
with:
|
|
21
|
+
node-version: ${{ matrix.node }}
|
|
22
|
+
- name: Print system information
|
|
23
|
+
run: |
|
|
24
|
+
echo "Linux release: "; cat /etc/issue
|
|
25
|
+
echo "Current user: "; whoami
|
|
26
|
+
echo "Current directory: "; pwd
|
|
27
|
+
echo "Ruby version: "; ruby -v
|
|
28
|
+
echo "Node version: "; node -v
|
|
29
|
+
echo "Yarn version: "; yarn --version
|
|
30
|
+
echo "Bundler version: "; bundle --version
|
|
31
|
+
- name: Save root node_modules to cache
|
|
32
|
+
uses: actions/cache@v2
|
|
33
|
+
with:
|
|
34
|
+
path: node_modules
|
|
35
|
+
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
|
|
36
|
+
- name: Install Node modules with Yarn for renderer package
|
|
37
|
+
run: |
|
|
38
|
+
yarn install --no-progress --no-emoji
|
|
39
|
+
yarn run eslint -v
|
|
40
|
+
sudo yarn global add yalc
|
|
41
|
+
- name: yalc publish for react-on-rails
|
|
42
|
+
run: yalc publish
|
|
43
|
+
- name: Save spec/dummy/node_modules to cache
|
|
44
|
+
uses: actions/cache@v2
|
|
45
|
+
with:
|
|
46
|
+
path: spec/dummy/node_modules
|
|
47
|
+
key: v4-dummy-app-node-modules-cache-${{ hashFiles('spec/dummy/yarn.lock') }}
|
|
48
|
+
- name: yalc add react-on-rails
|
|
49
|
+
run: cd spec/dummy && yalc add react-on-rails
|
|
50
|
+
- name: Install Node modules with Yarn for dummy app
|
|
51
|
+
run: cd spec/dummy && yarn install --no-progress --no-emoji
|
|
52
|
+
- name: Save dummy app ruby gems to cache
|
|
53
|
+
uses: actions/cache@v2
|
|
54
|
+
with:
|
|
55
|
+
path: spec/dummy/vendor/bundle
|
|
56
|
+
key: v4-dummy-app-gem-cache-${{ hashFiles('spec/dummy/Gemfile.lock') }}
|
|
57
|
+
- name: Install Ruby Gems for dummy app
|
|
58
|
+
run: cd spec/dummy && bundle lock --add-platform 'x86_64-linux' && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
59
|
+
- name: Build test bundles for dummy app
|
|
60
|
+
run: cd spec/dummy && yarn run build:test
|
|
61
|
+
- id: get-sha
|
|
62
|
+
run: echo "::set-output name=sha::$(git rev-parse HEAD)"
|
|
63
|
+
- name: Save test webpack bundles to cache (for build number checksum used by rspec job)
|
|
64
|
+
uses: actions/cache@v2
|
|
65
|
+
with:
|
|
66
|
+
path: spec/dummy/public/webpack
|
|
67
|
+
key: v4-dummy-app-webpack-bundle-${{ steps.get-sha.outputs.sha }}
|
|
68
|
+
|
|
69
|
+
main:
|
|
70
|
+
needs: build-dummy-app-webpack-test-bundles
|
|
71
|
+
strategy:
|
|
72
|
+
matrix:
|
|
73
|
+
ruby: [2.7]
|
|
74
|
+
node: [14]
|
|
75
|
+
rake_task: ['run_rspec:all_dummy', 'run_rspec:all_but_examples', 'run_rspec:examples']
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
steps:
|
|
78
|
+
- uses: actions/checkout@v2
|
|
79
|
+
- name: Setup Ruby
|
|
80
|
+
uses: ruby/setup-ruby@v1
|
|
81
|
+
with:
|
|
82
|
+
ruby-version: ${{ matrix.ruby }}
|
|
83
|
+
- name: Setup Node
|
|
84
|
+
uses: actions/setup-node@v2-beta
|
|
85
|
+
with:
|
|
86
|
+
node-version: ${{ matrix.node }}
|
|
87
|
+
- name: Print system information
|
|
88
|
+
run: |
|
|
89
|
+
echo "Linux release: "; cat /etc/issue
|
|
90
|
+
echo "Current user: "; whoami
|
|
91
|
+
echo "Current directory: "; pwd
|
|
92
|
+
echo "Ruby version: "; ruby -v
|
|
93
|
+
echo "Node version: "; node -v
|
|
94
|
+
echo "Yarn version: "; yarn --version
|
|
95
|
+
echo "Bundler version: "; bundle --version
|
|
96
|
+
- name: Save root node_modules to cache
|
|
97
|
+
uses: actions/cache@v2
|
|
98
|
+
with:
|
|
99
|
+
path: node_modules
|
|
100
|
+
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
|
|
101
|
+
- name: Save root ruby gems to cache
|
|
102
|
+
uses: actions/cache@v2
|
|
103
|
+
with:
|
|
104
|
+
path: vendor/bundle
|
|
105
|
+
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
|
|
106
|
+
- name: Save dummy app ruby gems to cache
|
|
107
|
+
uses: actions/cache@v2
|
|
108
|
+
with:
|
|
109
|
+
path: spec/dummy/vendor/bundle
|
|
110
|
+
key: v4-dummy-app-gem-cache-${{ hashFiles('spec/dummy/Gemfile.lock') }}
|
|
111
|
+
- name: Save spec/dummy/node_modules to cache
|
|
112
|
+
uses: actions/cache@v2
|
|
113
|
+
with:
|
|
114
|
+
path: spec/dummy/node_modules
|
|
115
|
+
key: v4-dummy-app-node-modules-cache-${{ hashFiles('spec/dummy/yarn.lock') }}
|
|
116
|
+
- id: get-sha
|
|
117
|
+
run: echo "::set-output name=sha::$(git rev-parse HEAD)"
|
|
118
|
+
- name: Save test webpack bundles to cache (for build number checksum used by rspec job)
|
|
119
|
+
uses: actions/cache@v2
|
|
120
|
+
with:
|
|
121
|
+
path: spec/dummy/public/webpack
|
|
122
|
+
key: v4-dummy-app-webpack-bundle-${{ steps.get-sha.outputs.sha }}
|
|
123
|
+
|
|
124
|
+
- name: Install Node modules with Yarn for renderer package
|
|
125
|
+
run: |
|
|
126
|
+
yarn install --no-progress --no-emoji
|
|
127
|
+
yarn run eslint -v
|
|
128
|
+
sudo yarn global add yalc
|
|
129
|
+
- name: yalc publish for react-on-rails
|
|
130
|
+
run: yalc publish
|
|
131
|
+
- name: yalc add react-on-rails
|
|
132
|
+
run: cd spec/dummy && yalc add react-on-rails
|
|
133
|
+
- name: Install Ruby Gems for package
|
|
134
|
+
run: bundle lock --add-platform 'x86_64-linux' && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
135
|
+
- name: Install Ruby Gems for dummy app
|
|
136
|
+
run: cd spec/dummy && bundle lock --add-platform 'x86_64-linux' && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
137
|
+
- name: Ensure minimum required Chrome version
|
|
138
|
+
run: |
|
|
139
|
+
echo -e "Already installed $(google-chrome --version)\n"
|
|
140
|
+
MINIMUM_REQUIRED_CHROME_VERSION=75
|
|
141
|
+
INSTALLED_CHROME_MAJOR_VERSION="$(google-chrome --version | tr ' .' '\t' | cut -f3)"
|
|
142
|
+
if [[ $INSTALLED_CHROME_MAJOR_VERSION < $MINIMUM_REQUIRED_CHROME_VERSION ]]; then
|
|
143
|
+
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
|
|
144
|
+
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
|
|
145
|
+
sudo apt-get update
|
|
146
|
+
sudo apt-get install google-chrome-stable
|
|
147
|
+
echo -e "\nInstalled $(google-chrome --version)"
|
|
148
|
+
fi
|
|
149
|
+
- name: Touch webpack bundles
|
|
150
|
+
run: touch spec/dummy/public/webpack/test/*
|
|
151
|
+
- name: Install yalc globally
|
|
152
|
+
run: sudo yarn global add yalc
|
|
153
|
+
- name: Increase the amount of inotify watchers
|
|
154
|
+
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
|
|
155
|
+
- name: Prep for CI
|
|
156
|
+
run: bundle exec rake prepare_for_ci
|
|
157
|
+
- name: Main CI
|
|
158
|
+
run: bundle exec rake ${{ matrix.rake_task }}
|
|
159
|
+
- name: Store test results
|
|
160
|
+
uses: actions/upload-artifact@v2
|
|
161
|
+
with:
|
|
162
|
+
name: main-rspec
|
|
163
|
+
path: ~/rspec
|
|
164
|
+
- name: Store artifacts
|
|
165
|
+
uses: actions/upload-artifact@v2
|
|
166
|
+
with:
|
|
167
|
+
name: dummy-app-capybara
|
|
168
|
+
path: spec/dummy/tmp/capybara
|
|
169
|
+
- name: Store artifacts
|
|
170
|
+
uses: actions/upload-artifact@v2
|
|
171
|
+
with:
|
|
172
|
+
name: dummy-app-test-log
|
|
173
|
+
path: spec/dummy/log/test.log
|
|
174
|
+
- name: Store artifacts
|
|
175
|
+
uses: actions/upload-artifact@v2
|
|
176
|
+
with:
|
|
177
|
+
name: dummy-app-yarn-log
|
|
178
|
+
path: spec/dummy/yarn-error.log
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: JS unit tests for Renderer package
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
strategy:
|
|
8
|
+
matrix:
|
|
9
|
+
node: [12, 14]
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v2
|
|
13
|
+
- name: Setup Node
|
|
14
|
+
uses: actions/setup-node@v2-beta
|
|
15
|
+
with:
|
|
16
|
+
node-version: ${{ matrix.node }}
|
|
17
|
+
- name: Print system information
|
|
18
|
+
run: |
|
|
19
|
+
echo "Linux release: "; cat /etc/issue
|
|
20
|
+
echo "Current user: "; whoami
|
|
21
|
+
echo "Current directory: "; pwd
|
|
22
|
+
echo "Node version: "; node -v
|
|
23
|
+
echo "Yarn version: "; yarn --version
|
|
24
|
+
- name: Save root node_modules to cache
|
|
25
|
+
uses: actions/cache@v2
|
|
26
|
+
with:
|
|
27
|
+
path: node_modules
|
|
28
|
+
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
|
|
29
|
+
- name: Install Node modules with Yarn for renderer package
|
|
30
|
+
run: |
|
|
31
|
+
yarn install --no-progress --no-emoji
|
|
32
|
+
yarn run eslint -v
|
|
33
|
+
sudo yarn global add yalc
|
|
34
|
+
- name: Run JS unit tests for Renderer package
|
|
35
|
+
run: yarn test
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Rspec test for gem
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
strategy:
|
|
8
|
+
matrix:
|
|
9
|
+
ruby: [2.7]
|
|
10
|
+
node: [14]
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- name: Setup Ruby
|
|
15
|
+
uses: ruby/setup-ruby@v1
|
|
16
|
+
with:
|
|
17
|
+
ruby-version: ${{ matrix.ruby }}
|
|
18
|
+
- name: Print system information
|
|
19
|
+
run: |
|
|
20
|
+
echo "Linux release: "; cat /etc/issue
|
|
21
|
+
echo "Current user: "; whoami
|
|
22
|
+
echo "Current directory: "; pwd
|
|
23
|
+
echo "Ruby version: "; ruby -v
|
|
24
|
+
echo "Node version: "; node -v
|
|
25
|
+
echo "Yarn version: "; yarn --version
|
|
26
|
+
echo "Bundler version: "; bundle --version
|
|
27
|
+
- name: Save root ruby gems to cache
|
|
28
|
+
uses: actions/cache@v2
|
|
29
|
+
with:
|
|
30
|
+
path: vendor/bundle
|
|
31
|
+
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
|
|
32
|
+
- name: Install Ruby Gems for package
|
|
33
|
+
run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
|
34
|
+
- name: Run rspec tests
|
|
35
|
+
run: bundle exec rspec spec/react_on_rails
|
|
36
|
+
- name: Store test results
|
|
37
|
+
uses: actions/upload-artifact@v2
|
|
38
|
+
with:
|
|
39
|
+
name: main-rspec
|
|
40
|
+
path: ~/rspec
|
|
41
|
+
- name: Store artifacts
|
|
42
|
+
uses: actions/upload-artifact@v2
|
|
43
|
+
with:
|
|
44
|
+
name: main-test-log
|
|
45
|
+
path: log/test.log
|
data/.gitignore
CHANGED
data/.prettierignore
CHANGED