Быстрая отладка вспомогательных методов в скрипте \ консоли - PullRequest
2 голосов
/ 22 июня 2009

Как бы я быстро отлаживал вспомогательные методы в script \ console. Я говорю о внесении изменений, а затем отладке, снова и снова.

Это намного проще с методами Model, так как все, что мне нужно сделать, это использовать перезагрузить! чтобы протестировать обновленный код, тогда как для тестирования вспомогательного метода я должен сделать что-то вроде этого

foo = ActionView :: Base.new foo.extend YourHelperModule

каждый раз, когда я хочу проверить изменение.

Что значит перезагрузить! делать? и я могу изменить его, чтобы добавить вышеупомянутые строки кода?

Ответы [ 3 ]

3 голосов
/ 22 июня 2009

Я не думаю, что вы можете сделать это без взлома Rails. Однако есть обходной путь - метод отладки в отладчике rails:

1) gem install ruby-debug

2) скрипт ruby ​​/ сервер --debugger

3) поместить <% debugger%> в какое-либо представление и открыть эту страницу в браузере

4) окно сервера «превращается» в консоль, где можно отлаживать вспомогательные методы

5) команда return завершает отладку

Если вы измените вспомогательный метод и снова запустите отладчик, вы получите последнюю версию метода.

Подробнее об отладчике можно узнать здесь: http://railscasts.com/episodes/54-debugging-with-ruby-debug

2 голосов
/ 22 июня 2009

Я бы предложил не использовать консоль сценария и писать тесты либо в Test :: Unit, либо в rspec. Google должен указать вам в правильном направлении, что существует масса информации.

0 голосов
/ 22 июня 2009

Если вы делаете что-то «снова и снова», вы должны автоматизировать это. Предполагая, что вы знаете, что должна делать ваша вспомогательная функция, как уже упоминалось ранее, вы сможете написать тест (или тесты) для нее.

Вот пример, который тестирует application_helper. Он живет в моем test/unit каталоге:

require 'test_helper'

class ApplicationHelperTest < ActiveSupport::TestCase

  include ApplicationHelper

  test "number_as_pct shows 2dp as default" do
    assert_equal "1.10%", number_as_pct(0.011)
  end
  test "number_as_pct shows more dp when required" do
    assert_equal "1.1000%", number_as_pct(0.011, :precision => 4)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...