Error when running rails generate react:install command
adil62 opened this issue · 4 comments
System configuration
- Shakapacker or Sprockets version: 6.5
- React-Rails version: 2.6
- Rect_UJS version: dont see it in gemfile
- Rails version: 7.0.4
- Ruby version: 3.1.3
When I run rails generate react:install Im getting the following error:
/Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:243:in `mkdir': Read-only file system @ dir_s_mkdir - /components (Errno::EROFS)
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:243:in `fu_mkdir'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:221:in `block (2 levels) in mkdir_p'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:219:in `reverse_each'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:219:in `block in mkdir_p'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:211:in `each'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/3.1.0/fileutils.rb:211:in `mkdir_p'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/actions/empty_directory.rb:52:in `block in invoke!'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/actions/empty_directory.rb:117:in `invoke_with_conflict_check'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/actions/empty_directory.rb:50:in `invoke!'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/actions.rb:93:in `action'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/actions/empty_directory.rb:14:in `empty_directory'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/react-rails-2.6.0/lib/generators/react/install_generator.rb:26:in `create_directory'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `block in invoke_all'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `each'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `map'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:134:in `invoke_all'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/group.rb:232:in `dispatch'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/generators.rb:263:in `invoke'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/generate/generate_command.rb:26:in `perform'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command/base.rb:87:in `perform'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:48:in `invoke'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from /Users/adilismail/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from bin/rails:4:in `<main>'
I just encountered the same problem:
- Shakapacker version: 6.5
- React-Rails version: 2.6
- Rails version: 7.0.4
- Ruby version: 3.1.0
From the stack trace, it looks like the problem is that components_dir might be nil here:
and so react-rails is trying to create a directory at the root of the filesystem /components which is why we see:
Read-only file system @ dir_s_mkdir - /components
Still not sure why...
So I was wrong about components_dir being nil.
What I actually see in my setup (using extensive puts technology 😆) is that Webpacker.config.source_entry_path evaluates to /:
And this is used to define javascript_dir which evaluates to ../../..:
react-rails/lib/generators/react/install_generator.rb
Lines 61 to 65 in 43b97a5
Which is used to define components_dir which evaluates to ../../../..:
react-rails/lib/generators/react/install_generator.rb
Lines 20 to 26 in 43b97a5
And so empty_directory File.join(components_dir, 'components') ends up trying to create /components
So I now think that the problem is that Webpacker.config.source_entry_path evaluates to /
Still not sure why...
One last thing that I noticed.
In the config/webpacker.yml that was generated for me, I see source_entry_path: / 🤔
However, in the example project, I see that it is set to source_entry_path: packs: https://github.com/BookOfGreg/react-rails-example-app/blob/b626517d83cd5e4b2ffa6344784af4974652ab80/config/webpacker.yml#L5
If I make this change to my config, then rails generate react:install succeeds.
I am going to leave further debugging up to someone that is more familiar with this project now.