Create a gist now

Instantly share code, notes, and snippets.

rails new skip-いろいろ して react_on_rails を使おうとた場合に遭遇したあれこれ

rails new app --skip-action-cable --skip-action-mailer --skip-bundle --skip-javascript --skip-listen --skip-puma --skip-spring --skip-test --skip-turbolinks

などとして色々落とした構成で rails new して react_on_rails を使おうとた場合に遭遇したあれこれ。

### react_on_rails の lib/task とかで assets precompile がはしるようで、
### sprockets を外していたら途中でこけてしまった。
### vendor/bundle/ruby/2.3.0/gems/react_on_rails-6.1.1/lib/tasks/assets.rake
### 以下の部分をコメントアウトしたら db:create / migrate できた
### rake 関連多分全部同じ問題が起こるのでは?
# Rake::Task["assets:precompile"]
#   .clear_prerequisites
#   .enhance([:environment, "react_on_rails:assets:compile_environment"])
#   .enhance do
#     Rake::Task["react_on_rails:assets:symlink_non_digested_assets"].invoke
#     Rake::Task["react_on_rails:assets:delete_broken_symlinks"].invoke
#   end

rails db:create && rails db:migrate

### ここでも sprockets を外したことでエラー
### 以下をコメントアウトすることで動いた
# config/initializers/assets.rb
# Rails.application.config.assets.paths << Rails.root.join("app", "assets", "webpack")
### react_on_rails が action_mailer を参照しているので、アンコメントしないと動かない
# config/application.rb
# require "action_mailer/railtie"

foreman start -f Procfile.dev

http://localhost:3000/hello_world curl http://localhost:3000/hello_world

prerender: true にすると SSR

<%= react_component("HelloWorldApp", props: @hello_world_props, prerender: true) %>

--skip-sprockets などして execjs が require されていない場合、 react_on_rails で使っているのでエラーになる。

gem "execjs"

するか、

config/application.rb など適当な場所で

require "execjs"

などしておく。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment