Как увидеть исходный код для "обновления!" метод - PullRequest
0 голосов
/ 06 мая 2018

У меня есть веб-сайт, который убит из-за переполнения памяти. Он запускается во время запроса PUT, поступающего от веб-браузера пользователя. К сожалению, логи не помогают в этом случае. Я проследил проблему до определения этого метода:

  # app/controllers/registrations/profiles_controller.rb
  def update
    update! do |success, failure|
      success.html { redirect_to edit_registration_diagnosis_path }
      failure.html do
        build_diagnosis
        render 'edit'
      end
    end
  end

Я хочу посмотреть исходный код этого update! метода. Как мне попросить ruby ​​или rails или bash / grep показать мне этот исходный код?

Я пытался:

git grep 'def update!'  # no results

Мой env: $ rails - версия Рельсы 3.2.22.5 $ ruby ​​--version рубин 1.9.3p551

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вы можете использовать byebug gem, чтобы увидеть, что происходит на каждом этапе вашего метода.

0 голосов
/ 06 мая 2018

Библиотеки не находятся в том же каталоге, что и ваше Rails-приложение, они будут там, где находятся ваши версии Ruby, которые различаются в зависимости от того, какой менеджер версий вы использовали для его установки.

Документы Rails находятся в сети по адресу http://api.rubyonrails.org/,, или вы можете использовать драгоценный камень, такой как pry-byebug, чтобы войти в метод во время выполнения. Поскольку Ruby является объектно-ориентированным и использует цепочку наследования для поиска объекта, который отвечает на данное сообщение, это лучший способ действительно узнать, какой метод вызывается в любой заданный момент выполнения приложения.

Добавьте gem 'pry-byebug' в ваш gemfile, установите пакет и затем вставьте binding.pry в начало вашего метода обновления. Как только выполнение приостановится, вы можете легко перейти к методу.

...