Получить источник, откуда была вызвана функция / Получить последнюю функцию из обратного следа - PullRequest
0 голосов
/ 23 апреля 2020

В основном тот же вопрос, который задают здесь , но затем решение Ruby.

У меня есть класс с функциями stati c, которые заполняют класс:

class Message
  attributes :message, :origin

  def initialize(params)
   self.origin = initialize_called_by
   super
  end

  def self.failed_to_save
    Message.new(message: 'Failed to save that thing!')
  end

  def self.failed_to_delete
    Message.new(message: 'Failed to delete that thing!')
  end
end

Где я ожидал бы, что origin будет содержать следующее:

Message.failed_to_save.origin # failed_to_save
Message.failed_to_delete.origin # failed_to_delete

1 Ответ

1 голос
/ 23 апреля 2020
caller_locations(1,1)[0].label

Если вы извлечете это в метод, вам может понадобиться изменить первый аргумент caller_locations, чтобы посмотреть дальше по трассировке стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...