Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove mini_racer as the default ExecJS runtime #1453

Merged
merged 4 commits into from
Jun 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@ Please follow the recommendations outlined at [keepachangelog.com](http://keepac
Changes since last non-beta release.

*Please add entries here for your pull requests that are not yet released.*

#### Improved
- Remove addition of `mini_racer` gem by default. [PR 1453](https://github.com/shakacode/react_on_rails/pull/1453) by [vtamara](https://github.com/vtamara) and [tomdracz](https://github.com/tomdracz).

Using `mini_racer` makes most sense when deploying or building in environments that do not have Javascript runtime present. Since `react_on_rails` requires Node.js, there's no reason to override `ExecJS` runtime with `mini_racer`.

To migrate this change, remove `mini_racer` gem from your `Gemfile` and test your app for correct behaviour. You can continue using `mini_racer` and it will be still picked as the default `ExecJS` runtime, if present in your app `Gemfile`.


### [13.0.2] - 2022-03-09
#### Fixed
- React 16 doesn't support version property, causing problems loading React on Rails. [PR 1435](https://github.com/shakacode/react_on_rails/pull/1435) by [justin808](https://github.com/justin808).
Expand Down
2 changes: 0 additions & 2 deletions Gemfile.development_dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ gem "sprockets", "~> 4.0"

gem "amazing_print"

gem "mini_racer", ">= 0.6.2"

group :development, :test do
gem "listen"
gem "pry"
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/client-vs-server-rendering.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

In most cases, you should use the `prerender: false` (default behavior) with the provided helper method to render the React component from your Rails views. In some cases, such as when SEO is vital, or many users will not have JavaScript enabled, you can enable server-rendering by passing `prerender: true` to your helper, or you can simply change the default in `config/initializers/react_on_rails`.

Now the server will interpret your JavaScript. The default is to use [ExecJS](https://github.com/rails/execjs) and pass the resulting HTML to the client. We recommend using [mini_racer](https://github.com/discourse/mini_racer) as ExecJS's runtime.
Now the server will interpret your JavaScript. The default is to use [ExecJS](https://github.com/rails/execjs) and pass the resulting HTML to the client. By default Node.js runtime is used by ExecJS. You can use alternative runtimes as outlined in [ExecJS readme](https://github.com/rails/execjs/blob/master/README.md).

If you want to maximize the perfomance of your server rendering, then you want to use React on Rails Pro which uses NodeJS to do the server rendering. See the [docs for React on Rails Pro](https://github.com/shakacode/react_on_rails/wiki).

Expand Down
6 changes: 3 additions & 3 deletions docs/guides/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,14 @@ ReactOnRails.configure do |config|
################################################################################
# Server Renderer Configuration for ExecJS
################################################################################
# The default server rendering is ExecJS, probably using the mini_racer gem
# The default server rendering is ExecJS, by default using Node.js runtime
# If you wish to use an alternative Node server rendering for higher performance,
# contact justin@shakacode.com for details.
#
# For ExecJS:
# You can configure your pool of JS virtual machines and specify where it should load code:
# On MRI, use `mini_racer` for the best performance
# (see [discussion](https://github.com/reactjs/react-rails/pull/290))
# On MRI, use `node.js` runtime for the best performance
# (see [issues](https://github.com/shakacode/react_on_rails/issues/1438))
# On MRI, you'll get a deadlock with `pool_size` > 1
# If you're using JRuby, you can increase `pool_size` to have real multi-threaded rendering.
config.server_renderer_pool_size = 1 # increase if you're on JRuby
Expand Down
2 changes: 0 additions & 2 deletions docs/guides/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,6 @@ Install React on Rails: `rails generate react_on_rails:install`. You need to fir
Note, using `redux` is no longer recommended as the basic installer uses React Hooks.
If you want the redux install: `rails generate react_on_rails:install --redux`

The generator will add `mini_racer`'s latest version. If you're using linux & encounter issues installing `libv8`, here's [a common solution](https://github.com/rubyjs/mini_racer/issues/218).

```
bundle exec rails generate react_on_rails:install
```
Expand Down
3 changes: 0 additions & 3 deletions docs/javascript/server-rendering-tips.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

For the best performance with Server Rendering, consider using [React on Rails Pro]

Be sure to use mini_racer. See [issues/428](https://github.com/shakacode/react_on_rails/issues/428).



## General Tips
- Your code can't reference `document`. Server side JS execution does not have access to `document`,
Expand Down
1 change: 0 additions & 1 deletion lib/generators/react_on_rails/base_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ def copy_webpacker_config
end

def add_base_gems_to_gemfile
gem "mini_racer", platforms: :ruby
run "bundle"
end

Expand Down
4 changes: 0 additions & 4 deletions spec/dummy/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ GEM
json (2.5.1)
launchy (2.5.0)
addressable (~> 2.7)
libv8-node (16.10.0.0)
listen (3.4.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
Expand All @@ -137,8 +136,6 @@ GEM
method_source (1.0.0)
mini_mime (1.1.2)
mini_portile2 (2.6.1)
mini_racer (0.6.2)
libv8-node (~> 16.10.0.0)
minitest (5.15.0)
msgpack (1.4.2)
nio4r (2.5.8)
Expand Down Expand Up @@ -329,7 +326,6 @@ DEPENDENCIES
jquery-rails
launchy
listen
mini_racer (>= 0.6.2)
pry
pry-byebug
pry-doc
Expand Down