2013-04-30 4 views
0

Я хочу хранить краткие фрагменты кода в базе данных (после стандартной подписи) и «вставлять» их во время выполнения. Один из способов - использовать eval(my_code). Есть ли способ отлаживать введенный код с помощью точек останова и т. Д.? (Я использую Rubymine)Можно ли отлаживать динамически добавленный метод Ruby?

Я знаю, что могу просто войти в консоль и т. Д., Но я бы предпочел отладку в стиле IDE, если это возможно.

+0

Я не думаю, что это возможно. – Linuxios

+0

Кажется, Linuxios прав - это кажется невозможным на основе моего ограниченного тестирования с IntelliJ. –

ответ

0

Hm. Давайте проанализируем ваш вопрос. Во-первых, он, похоже, не имеет ничего общего с базами данных: вы просто храните блок кода в исходной форме где-то. Это может быть файл или база данных. Во-вторых, вам не нужна «отладка» в стиле IDE, но TDD-style. (Но не концентрируйтесь на этом вопросе сейчас.)

Что вам нужно, это утверждения о вашем коде. То есть вам нужно описать, какой результат должен получить ваш код, с учетом некоторых примеров ввода. И тогда вам нужно запустить этот код и посмотреть, соответствует ли его функция ожиданиям. Кроме того, если вы не уверены в источнике своих фрагментов, run them in a sandbox (with $SAFE = 4). Если ваш код не оправдал ожиданий, поднимите приятные ошибки (TypeError или, что еще лучше, сделанное вами исключение), а затем вы можете, например. спасать эти исключения и, например. используйте некоторые фрагменты кода по умолчанию ...

... но, возможно, я не отвечаю на тот же вопрос, который вы задаете. Если это так, то позвольте мне поделиться одной ссылкой на этот sourcify gem, который даст вам знать источник, так что вы можете вставить точку останова, указав, например. требуют «rdebug» в середине кода или могут даже конвертировать код в sexps. Это все, что я знаю.

+0

Я упомянул базу данных как хранилище для кода, чтобы обеспечить контекст (я не помещал этот вопрос в качестве вопроса о базе данных). Я также знаю о TDD и т. Д. Связка gem, которую вы предоставили, выглядит многообещающей, поэтому я буду исследовать ее сегодня. Благодаря! –

Смежные вопросы