Как бы вы узнали о драгоценных камнях в незнакомом проекте Rails? - PullRequest
2 голосов
/ 10 ноября 2010

Я новый разработчик Rails и только что присоединился к команде разработчиков.Ведущий разработчик помогает мне в создании приложения, и мы используем много новых для меня драгоценных камней.Часто для меня не очевидно, из какого источника происходит метод.

Например, при тестировании мы получим объект, используя что-то вроде Factory(:client).Этот метод происходит от factory_girl ;Я знаю это, потому что ведущий разработчик сказал мне.Если бы я этого не знал, я мог бы просмотреть файл Gem и предположить, что заводской драгоценный камень был вероятным кандидатом, и, возможно, собрать воедино некоторые результаты с самоанализом для подтверждения.Но это не так очевидно, как если бы это было пространство имен, как FactoryGirl :: Factory или что-то в этом роде.То же самое верно для наших тестов, которые используют огуречные рельсы : слово «огурец» не появляется в файлах.

Если вы получили это приложение и не были знакомы с этими драгоценными камнями, как вы могли бы выяснить, откуда взялись все методы? Это проблема в мире разработки Rails?

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010

Если rake gems недостаточно для вас, есть ли у вас какие-либо возражения против использования IDE?Мне нравится писать Ruby на Netbeans;щелчок правой кнопкой мыши по имени метода вызывает параметры, такие как «Перейти к -> Определение».

1 голос
/ 18 мая 2012

Использование метода # source_location

Отвечая на мой собственный вопрос намного позже, я могу, по крайней мере, подробно рассказать о том, как, как я сказал, «собрать воедино некоторые результаты с помощью самоанализа».

Один способполучите эту информацию, если вы можете определить, к какому объекту вызывается метод, то использовать Method#source_location.

Например, если вы используете мой гем, Authority, вы будете вызывать методы вваши контроллеры вроде этого:

class WidgetsController < ActionController::Base
  #...
  authorize_actions_for Widget
  #...
end

Глядя на этот код, становится ясно, что authorize_actions_for является методом класса на WidgetsController, но как он туда попал?Вы можете определить это из консоли Rails:

method = WidgetsController.method(:authorize_actions_for)
method.source_location

Это даст вам что-то вроде ["/Users/yourname/.rvm/gems/ruby-1.9.3-p125@yourproject/gems/authority-2.0.0/lib/authority/controller.rb", 27], что точно скажет вам, что это было определено в геме Authority.

1 голос
/ 10 ноября 2010

Если бы я был новичком в проекте, я бы прочитал все используемые драгоценные камни и провел бы исследование тех, с которыми я не был знаком.Google "gem_name rdoc" и в 99% случаев вы сможете найти достойный API.Поскольку вы новичок в рельсах, вам, вероятно, придется потратить немного больше времени на аванс, но ваша команда оценит ваше стремление учиться.

1 голос
/ 10 ноября 2010

AckMate, ack, grep, Поиск в проекте ← в зависимости от вашего редактора, это ваши друзья.

Также, https://github.com/adamsanderson/open_gem (если не в Bundler) или bundle open, если вы, для навигации по драгоценным камням.

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