ruby / irb

interactive Ruby
BSD 2-Clause "Simplified" License
393 stars 119 forks source link

Config file placed at the project level at `.config/irb/irbrc` is not parsed. #904

Open artur-intech opened 8 months ago

artur-intech commented 8 months ago

The documentation states that:

The path to the configuration file is the first found among: File +.config/irb/irbrc+ in the current directory, if it exists.

https://github.com/ruby/irb/blob/master/lib/irb.rb#L148

but there seems to be no code which would do this. Creating such file does nothing in reality as well: I have a project under ~/projects/notes and if I create a config file at ~/projects/notes/.config/irb/irbrc and put something like puts "test" there, nothing is printed when I run irb being at the project root.

https://github.com/ruby/irb/blob/35b87cf8933f67cf6e9e0edd1ca7d6395595a758/lib/irb/init.rb#L451

I really see beneficial to put a config file just under .config/irb/irbrc of my project instead of polluting project root, so I would like to double-check that it is a bug, rather than misleading documentation.

tompng commented 8 months ago

The document is wrong. $XDG_CONFIG_HOME/irb/irbrc and $HOME/.config/irb/irbrc part is based on XDG Base Directory Specification

$XDG_CONFIG_HOME defines the base directory relative to which user-specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.

Project level config is a good idea, but I'd like to align with other tool's config directory name. If project level ./.config/ is not so commonly used, I think it's too early to implement it.

artur-intech commented 8 months ago

My .irbrc has require_relative 'app' (where app is a file in the project root), so in my case it is crucial to have project-specific config since I couldn't find any other option so solve it another way.

I haven't done proper research on this topic yet, but the same approach is already implemented in Rubocop.

I think it is worth removing misleading documentation until we sort out this issue.

P.S. I fixed the line number in my first comment.