From: zverok.offline@... Date: 2018-03-01T17:56:22+00:00 Subject: [ruby-core:85888] [Ruby trunk Feature#14565] Simpler, one-liner, failsafe require in ruby? [Suggested names: require_failsafe, require_safe, require_try, require_add) Issue #14565 has been updated by zverok (Victor Shepelev). @shevegen If you press "Edit", the form has `Description [Edit]` field, and you can edit description there. ---------------------------------------- Feature #14565: Simpler, one-liner, failsafe require in ruby? [Suggested names: require_failsafe, require_safe, require_try, require_add) https://bugs.ruby-lang.org/issues/14565#change-70742 * Author: shevegen (Robert A. Heiler) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hello. I have quite a bit of code like this: begin require 'x/tools/cdrskin.rb' rescue LoadError; end I also use the longer variant, e. g. begin require 'foobar' rescue LoadError puts 'project foobar is not available - consider '\ 'installing it via gem install foobar' end However had, often I really do not even want to or notneed to inform the user about a missing gem/project, because some of these gems are tiny and not very important. In my larger ruby projects I handle the cases where a smaller project is not available or available, so I can proceed either way. Notifying the user, who is usually me, is a bit pointless in these cases; that is why I would like to have a one-liner. I am thinking of API such as any of the following, belonging to the require family (we already have a bit variety in the require family such as require_relative()) require_failsafe require_safe require_try require_add This is really just the first variant, that is, loading with a rescue LoadError, without notification. (If I need to notify a user then I am fine with the longer variant.) So mostly this is just a suggestion for me to be lazy/lazier but to also get rid of a few lines in my code base. The name is of course important but the functionality is, to me, more important, so if anyone has better names, feel free to add them! I just tried to be somewhat explicit which is why I suggested the first variant. I think people are more likely to remember the require-family, e. g. require 'foo.rb' or require_relative 'bar.rb' and so forth. (I may be wrong but I think there are many more cases of require than load in ruby code bases out there in the wild.) I am not sure if others may find this semi-useful or not. In my ruby code, there are not so many instances where I use it; perhaps 100 or so. But still, it would be nice if we could have a one-liner. Anyway, I think I mentioned all I wanted to mention here about it. I also wanted to propose a stronger require/import feature of ruby, including the possibility to refer to .rb files without a hardcoded path (if the .rb file is moved, all explicit requires to it, in particular from external projects, would have to change; and my vague idea is to replace this with some kind of project-specific way to "label" files and load these files based on these "labels" but that is for another suggestion; I only want to mention it because Hiroshi Shibata made some suggestion as extension to require and I think the use case he mentioned may also be useful to see whether ruby may get a stronger "load code in files" functionality for ruby 3.x eventually) Please feel free to close this issue at any time if it is not a good fit. Thanks! -- https://bugs.ruby-lang.org/ Unsubscribe: