Описание тега monkeypatching

Динамическое изменение поведения во время выполнения путем замены элементов программы новыми элементами программы
1 ответ

Как обезьяна пропатчить класс с помощью модуля?

У меня есть несколько файлов. В одном я хотел бы расширить некоторые классы Ruby, например module Stylable class Array def styled "\n" << "*"*72 << self.to_s << "*"*72 << "\n" end end end В другом файле я определяю класс и см…
30 янв '15 в 14:44
2 ответа

Как сделать monkeypatch встроенной функцией datetime.datetime.now?

Я хотел бы убедиться, что datetime.datetime.now() возвращает конкретную дату и время для тестирования. Как мне это сделать? Я пробовал с pytest's monkeypatch monkeypatch.setattr(datetime.datetime,"now", nowfunc) Но это дает мне ошибку TypeError: can…
2 ответа

Как мне сделать метод URI.parse?

Некоторые популярные сайты блогов обычно используют квадратные скобки в своих URL-адресах, но встроенный в ruby ​​метод URI.parse() блокирует их, вызывая неприятное исключение, согласно: http://redmine.ruby-lang.org/issues/show/1466 Я пытаюсь написа…
08 окт '10 в 13:46
0 ответов

Прокси-вызовы с использованием XMLHttpRequest в пользовательском скрипте / расширении

У меня возникли проблемы с патчированием XMLHttpRequest в моем пользовательском скрипте. Интересно, что если я открою консоль и скопирую содержимое скрипта, строка Intercepted будет напечатана в консоли. Это почему? Есть какая-то песочница? Если ест…
1 ответ

Патч обезьяны ActiveRecord метод PostgreSQLAdapter

По этому вопросу я пытаюсь переопределить postgresql_version метод, определенный в ActiveRecord::ConnectionAdapters::PostgreSQLAdapter который возвращает версию PostgreSQL: module ActiveRecord module ConnectionAdapters class PostgreSQLAdapter < A…
1 ответ

Как monkeypatch подключение к реестру с pytest

В настоящее время я пишу юнит-тесты для моего скрипта Python. Одна из моих функций имеет следующий код: from _winreg import * aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE) aKey = OpenKey(aReg, LIBRARIES_REG_KEY) count, value, type = QueryInfoKey(…
07 май '16 в 21:59
4 ответа

Каков механизм, позволяющий исправлениям Python Monkey в этом случае?

Может кто-нибудь объяснить логику, как это работает с интерпретатором Python? Является ли это поведение только локальным потоком? Почему назначение при импорте первого модуля сохраняется после импорта второго модуля? У меня просто была долгая сессия…
1 ответ

Как изменить (monkey-patching) стороннюю функцию в конкретной строке

Интересно, можно ли изменить стороннюю функцию (например, monkey-patching [ wiki], [ nice article]) таким образом, чтобы добавить несколько строк в середине этих функций? Пример того, что я хочу: Сторонний (исправление цели): var obj = { sum: functi…
26 май '16 в 06:08
2 ответа

Куда помещать код при исправлении обезьян

Все, что я читал об исправлении обезьян, говорит о том, чтобы сделать что-то вроде этого: class String def foo #your special code end end Но я не могу найти никаких инструкций о том, где разместить этот код. В приложении rails я могу просто поместит…
17 янв '17 в 19:29
1 ответ

Уточнения и пространства имен

Попытка исправить net/http и применить его только к одному классу обслуживания. Уточнения, кажется, путь. Патч обезьяны ниже работает, а уточнение - нет. Это проблема пространства имен? Проект на ruby ​​2.3.0, но пробовал и с 2.4.1, и, кажется, толь…
22 ноя '17 в 17:43
2 ответа

Обезьяна исправила логин Django Auth, теперь его тесты не пройдены

Мое приложение стремится обернуть представления входа и выхода из django.contrib.auth.views некоторыми базовыми возможностями аудита / ведения журнала. Я следую рецепту, как описано в проекте django-axes, и при запуске на сервере и некоторых других …
1 ответ

Добавление методов в sudsobject. Исправление обезьяны или импорт в новый объект?

Я пишу некоторый код на Python, который использует suds для подключения к устройству, получения wsdl и запроса некоторой информации об устройстве. Эта часть кода работает, и похоже, что suds создает и размещает данные в этом объекте. Я хотел бы доба…
16 мар '12 в 20:12
1 ответ

Переменная $1 в блоке с псевдонимом

Как я могу создать метод с псевдонимом, который оборачивает метод, который приводит к блоку, который использует $1 переменные? Более конкретно, я хочу, чтобы monkeypatch String#sub (да, я знаю, что это не очень хорошая практика) изменять переданные …
16 фев '13 в 16:37
1 ответ

Обезьяна исправляет метод экземпляра Python, используя оригинальный метод из класса

Я хочу, чтобы обезьяна исправила метод библиотечного класса, чтобы определить другое значение по умолчанию для параметра. Это не удается: from functools import partial class A(object): def meth(self, foo=1): print(foo) A.meth = partial(A.meth, foo=2…
31 янв '19 в 12:23
1 ответ

Исправление обезьян на уровне пакета npm?

Я бы хотел расширить пакет npm "трюфель", но в настоящее время в версии 4 (и версии 5) "трюфель" не имеет механизма расширения плагинов. Таким образом, широкий вопрос - как это сделать. Одной из возможностей было бы перечислить трюфельный пакет как …
18 сен '18 в 19:20
4 ответа

Обезьяноподобный рубиновый метод с ударом

Возможно ли обезьяна-патч метод с ударом в конце? Я хочу обезьяну-патч String.upcase!, но я не знаю, как этого добиться. Проблема в том, что я хочу изменить исходный строковый объект. Вот пример: class String def upcase! self.mb_chars.upcase.to_s en…
14 окт '13 в 15:29
1 ответ

Какой monkeypatch создает частный метод split?

Вопросы Ruby: закрытый метод для 3:Fixnum и закрытый метод split для nil:NilClass (NoMethodError) упоминают приватные методы split за Fixnum а также NilClass объекты соответственно. Это личное split метод псевдо-ключевое слово (например, print а так…
18 апр '11 в 00:15
1 ответ

Динамически добавлять ограничение на маршруты рельсов

Я хочу написать плагин, который должен сделать патч обезьяны, чтобы добавить ограничение на все маршруты, определенные в rails application routs.rb я пытаюсь сделать следующий код в моем патче обезьяны, но это не работает. Какой правильный путь? Rai…
2 ответа

Автозагрузка рельсов не выбирает залатанный обезьяной класс

Я работаю над приложением Rails 3 (в частности, 3.2.13) на ruby ​​1.9.3-p392. В одном из моих контроллеров действие "создать" может получить изображение (как ActionDispatch::Http::UploadedFile) Я пытаюсь monkeypatch ActionDispatch::Http::UploadedFil…
28 апр '13 в 21:47
2 ответа

Открытые занятия в модуле

Я знаю, что могу выполнить следующее, чтобы добавить методы в класс String class String def do_something puts self.size end end var = "test" var.do_something и это вернется 4 Я хочу иметь возможность иметь модуль с функцией, которая принимает строку…
16 апр '11 в 18:24