Problem description
CentOS Stream 9 doesn't install irb gem together with ruby package, which leads to the impossibility to run rails console commands, even if I prefer to use pry with byebug.
Workarounds:
- Install
rubygem-irb system package. Drawbacks: it installs the old irb version, which spams console with warnings a lot.
- Include latest
irb gem in the Gemfile. Drawbacks: one more useless dependency to keep in mind.
Expected behavior
rails console should open pry console without errors and warnings. Other commands, such as rails generate should work too.
Actual behavior
Without any irb
$ bin/rails generate --help
/usr/share/gems/gems/byebug-11.1.3/lib/byebug/commands/irb.rb:4:in `require': cannot load such file -- irb (LoadError)
Did you mean? erb
drb
from /usr/share/gems/gems/byebug-11.1.3/lib/byebug/commands/irb.rb:4:in `<top (required)>'
from /usr/share/gems/gems/byebug-11.1.3/lib/byebug/commands.rb:20:in `require_relative'
from /usr/share/gems/gems/byebug-11.1.3/lib/byebug/commands.rb:20:in `<top (required)>'
from /usr/share/gems/gems/byebug-11.1.3/lib/byebug/core.rb:10:in `require_relative'
from /usr/share/gems/gems/byebug-11.1.3/lib/byebug/core.rb:10:in `<top (required)>'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/byebug/processors/pry_processor.rb:3:in `require'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/byebug/processors/pry_processor.rb:3:in `<top (required)>'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug/pry_ext.rb:3:in `require'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug/pry_ext.rb:3:in `<top (required)>'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug/cli.rb:4:in `require'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug/cli.rb:4:in `<top (required)>'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug.rb:4:in `require'
from /usr/share/gems/gems/pry-byebug-3.10.1/lib/pry-byebug.rb:4:in `<top (required)>'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:60:in `require'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:60:in `block (2 levels) in require'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:55:in `each'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:55:in `block in require'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:44:in `each'
from /usr/local/share/ruby/site_ruby/bundler/runtime.rb:44:in `require'
from /usr/local/share/ruby/site_ruby/bundler.rb:186:in `require'
from /home/zalex/work/junkyard_app/config/application.rb:19:in `<top (required)>'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/command/actions.rb:22:in `require'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/command/actions.rb:22:in `require_application!'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/command/actions.rb:14:in `require_application_and_environment!'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/commands/generate/generate_command.rb:10:in `help'
from /usr/share/gems/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
from /usr/share/gems/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
from /usr/share/gems/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/command/base.rb:87:in `perform'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/command.rb:48:in `invoke'
from /usr/share/gems/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
With rubygem-irb-1.3.5-160.el9.noarch system package installed:
$ bin/rails console
/usr/share/ruby/irb/ruby-lex.rb:123: warning: already initialized constant RubyLex::ERROR_TOKENS
/usr/share/gems/gems/irb-1.3.5/lib/irb/ruby-lex.rb:123: warning: previous definition of ERROR_TOKENS was here
/usr/share/ruby/irb/completion.rb:18: warning: already initialized constant IRB::InputCompletor::ReservedWords
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:18: warning: previous definition of ReservedWords was here
/usr/share/ruby/irb/completion.rb:39: warning: already initialized constant IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:39: warning: previous definition of BASIC_WORD_BREAK_CHARACTERS was here
/usr/share/ruby/irb/completion.rb:59: warning: already initialized constant IRB::InputCompletor::CompletionRequireProc
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:59: warning: previous definition of CompletionRequireProc was here
/usr/share/ruby/irb/completion.rb:94: warning: already initialized constant IRB::InputCompletor::CompletionProc
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:94: warning: previous definition of CompletionProc was here
/usr/share/ruby/irb/completion.rb:329: warning: already initialized constant IRB::InputCompletor::PerfectMatchedProc
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:329: warning: previous definition of PerfectMatchedProc was here
/usr/share/ruby/irb/completion.rb:364: warning: already initialized constant IRB::InputCompletor::Operators
/usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:364: warning: previous definition of Operators was here
Loading development environment (Rails 7.0.4)
[1] pry(main)>
Steps to reproduce the problem
- CentOS Stream 9
- system Ruby v. 3.0.4
- Rails v. 7.0.4
- Pry-Byebug v. 3.10.1
- Pry-Rails v. 0.3.9
- Byebug v. 11.1.3
- Pry v. 0.14.1
More details (bundle env & cat /etc/os-release) here:
https://gist.github.com/AlexanderZagaynov/39b71c0e25e4a59b0fe23b6a2425fbf3
Problem description
CentOS Stream 9 doesn't install
irbgem together withrubypackage, which leads to the impossibility to run rails console commands, even if I prefer to useprywithbyebug.Workarounds:
rubygem-irbsystem package. Drawbacks: it installs the oldirbversion, which spams console with warnings a lot.irbgem in theGemfile. Drawbacks: one more useless dependency to keep in mind.Expected behavior
rails consoleshould openpryconsole without errors and warnings. Other commands, such asrails generateshould work too.Actual behavior
Without any
irbWith
rubygem-irb-1.3.5-160.el9.noarchsystem package installed:$ bin/rails console /usr/share/ruby/irb/ruby-lex.rb:123: warning: already initialized constant RubyLex::ERROR_TOKENS /usr/share/gems/gems/irb-1.3.5/lib/irb/ruby-lex.rb:123: warning: previous definition of ERROR_TOKENS was here /usr/share/ruby/irb/completion.rb:18: warning: already initialized constant IRB::InputCompletor::ReservedWords /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:18: warning: previous definition of ReservedWords was here /usr/share/ruby/irb/completion.rb:39: warning: already initialized constant IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:39: warning: previous definition of BASIC_WORD_BREAK_CHARACTERS was here /usr/share/ruby/irb/completion.rb:59: warning: already initialized constant IRB::InputCompletor::CompletionRequireProc /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:59: warning: previous definition of CompletionRequireProc was here /usr/share/ruby/irb/completion.rb:94: warning: already initialized constant IRB::InputCompletor::CompletionProc /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:94: warning: previous definition of CompletionProc was here /usr/share/ruby/irb/completion.rb:329: warning: already initialized constant IRB::InputCompletor::PerfectMatchedProc /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:329: warning: previous definition of PerfectMatchedProc was here /usr/share/ruby/irb/completion.rb:364: warning: already initialized constant IRB::InputCompletor::Operators /usr/share/gems/gems/irb-1.3.5/lib/irb/completion.rb:364: warning: previous definition of Operators was here Loading development environment (Rails 7.0.4) [1] pry(main)>Steps to reproduce the problem
More details (
bundle env&cat /etc/os-release) here:https://gist.github.com/AlexanderZagaynov/39b71c0e25e4a59b0fe23b6a2425fbf3