1 минута
Улучшаем работу с консолью в Ruby on Rails
На практике возникают случаи, когда приходится запускать rails console
на удаленной машине и переопределять методы на время сессии.
Неудобства:
- задержки при наборе
- неудобно набирать многострочный код
- неудобно редактировать выполненный ранее многострочный код
Можно, конечно, набрать необходимый код локально в любимом редакторе, копировать и вставить этот код в консоль. Но при таком подходе могут возникнуть проблемы с интерпретацией команд irb или pry.
Решение:
- Создаем локально файл
/tmp/my_patch_name.rb
class MyClassWithBug
# создаем алиас для изначального метода
alias old_my_method my_method unless defined? old_my_method
# пропатченный метод
def my_method
# fixed code
end
end
- Копируем созданный файл на удаленный хост
scp /tmp/my_patch_name.rb user@remotehost:/tmp/
- Выполняем в консоли
def load_patch; Kernel.load('/tmp/my_patch_name.rb'); end
load_patch
# тестируем
MyClassWithBug.new.my_method
Готово!
При необходимости повторного редактирования, копируем файл, вызываем load_patch
.
Дополнительно получили отсутствие многострчного кода в истории консоли.
comments powered by Disqus