У меня есть ruby гем, который предоставляет различные методы DSL. Я хотел бы дать информативные предупреждающие сообщения пользователям моего драгоценного камня, в частности, метод DSL в моем драгоценном камне, который они вызвали, файл и строку их кода и некоторый другой контекст.
Например:
# client_code.rb
foo :bar # foo is my DSL method
выведет предупреждение для stderr с:
[WARN] Unexpected option :bar to DSL method 'foo' at client_code.rb:2
Я мог бы представить, что в моем методе foo
я буду работать с caller_locations
, но получу чистое решение для этого ускользает от меня, не сравнивая системные пути и прочее.