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
<%= react_component("HelloWorldApp", props: @hello_world_props, prerender: true) %>
--skip-sprockets などして execjs が require されていない場合、 react_on_rails で使っているのでエラーになる。
gem "execjs"
するか、
config/application.rb など適当な場所で
require "execjs"
などしておく。