Все вопросы: [monkeypatching]

42 вопросов

похожие теги:
3
голосов
1ответов
270 просмотров

Можно ли переопределить реверс в проекте Django?

У меня есть некоторая настраиваемая логика, которая должна выполняться каждый раз при изменении URL-адреса, даже для сторонних приложений. Мой проект - это мультитенантное веб-приложение, и клиент определяется по URL-адресу. Не существует ни одного действительного URL-адреса, не содержащего иден...

1
голосов
5ответов
760 просмотров

Можно ли использовать псевдонимы операторов Ruby?

Мне интересно, как можно заставить это работать: me = "this is a string" class << me alias :old<< :<< def <<(text) old<<(text) puts "appended #{text}" end end Я бы хотел, чтобы при добавлении чего-либо к переменной me объект использовал переопре...

2
голосов
6ответов
783 просмотров

Extending uniq method

This is Ruby 1.8 Question: We all know how to use Array#uniq : [1,2,3,1].uniq #=> [1,2,3] However I'm wondering if we can monkey patch it in a way to work with complex objects. The current behavior is like this: [{"three"=>"3"}, {"three"=>"4"}, {"three"=>"3"}].uniq #=> [{"thr...

1
голосов
5ответов
248 просмотров

Is it possible to divert a module in python? (ResourceX diverted to ResourceXSimulated)

I want to simulate MyApp that imports a module (ResourceX) which requires a resource that is not available at the time and will not work. A solution for this is to make and import a mock module of ResourceX (named ResourceXSimulated) and divert it to MyApp as ResourceX. I want to do this in ord...

4
голосов
5ответов
1905 просмотров

Django and monkey patching issue

I have recently started experimenting with Django for some web applications in my spare time. While designing the data model for one, I came across the dilemma of using inheritance to define a user of the website or using a technique known as monkey patching with the User class already supplied b...

224
голосов
24ответов
233277 просмотров

How to add property to a class dynamically?

The goal is to create a mock class which behaves like a db resultset. So for example, if a database query returns, using a dict expression, {'ab':100, 'cd':200}, then I would like to see: >>> dummy.ab 100 At first I thought maybe I could do it this way: ks = ['ab', 'cd'] vs = [12, ...

2
голосов
1ответов
2755 просмотров

Patch a Ruby Gem

What is the best way to apply a simple patch to a Ruby gem in a Rails app? Is it possible to keep the original gem code untouched?

0
голосов
2ответов
281 просмотров

How do I get Rails to stop re-loading my gems?

I have a gem: # in /Library/Ruby/Gems/1.8/gems/my_gem-1.0.0/lib/my_gem.rb module MyGem def do_stuff .. end end And I loaded it in Rails: # in [rails_root]/config/environment.rb: config.gem 'my_gem', :version => '1.0.0' And used it: # in [rails_root]/app/controllers/application_c...

0
голосов
1ответов
930 просмотров

Переопределение методов базового класса в контроллере

Я пытаюсь обмануть очень сложный черный ящик, чтобы он отображал некоторые поплавки по-другому (это графическая библиотека Gruff, поэтому она отображается в изображение). В консоли я могу вставить это: logger = RAILS_DEFAULT_LOGGER logger.debug "Here's a float #{455.67.to_s}" eval ...

17
голосов
3ответов
7710 просмотров

Добавьте функциональность в Django FlatPages без изменения исходного приложения Django

Я хотел бы добавить поле в модель базы данных Django FlatPage, но я действительно не знаю, как расширить его, не редактируя исходное приложение. Я хочу добавить в модель следующее поле: from django.db import models from django.contrib.flatpages.models import FlatPage as FlatPageOld class...

1
голосов
3ответов
310 просмотров

Повторно объявить классы .net в IronPython

Может ли кто-нибудь сказать мне, можно ли повторно объявить класс C # в IronPython? Если у меня есть класс C #, смогу ли я исправить его с помощью IronPython?

6
голосов
1ответов
1330 просмотров

Исправление классов в Python

Предположим, у меня есть класс Python, к которому я хочу добавить дополнительное свойство. Есть ли разница между import path.MyClass MyClass.foo = bar и используя что-то вроде: import path.MyClass setattr(MyClass, 'foo', bar) ? Если нет, то почему люди делают второе, а не перв...

6
голосов
5ответов
539 просмотров

Как Smalltalk справляется с отслеживанием обезьян?

Я программист на Ruby. Для меня monkeypatching - это изменение во время выполнения методов классов или модулей во внешнем проекте. Что меня интересует, так это то, какой у вас механизм, который защитит вас от некоторых злоупотреблений этой замечательной функцией. Далее следует несколько сценарие...

1
голосов
2ответов
261 просмотров

Как вы можете повлиять на последовательность загрузки кода Ruby?

Допустим, ваш коллега-обезьяна исправляет класс Fixnum и переопределяет метод + для вычитания вместо добавления: class Fixnum def +(x) self - x end end >> 5 + 3 => 2 Ваша проблема в том, что вы хотите получить доступ к исходным функциям метода +. Таким образом, вы вставл...

4
голосов
3ответов
415 просмотров

Как сделать на Ruby безопасный и обратно совместимый «reverse-monkeypatch»?

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

1
голосов
1ответов
1727 просмотров

Как в Django изменить класс User для работы с другой таблицей db?

Мы запускаем django вместе с существующим приложением и совместно используем базу данных. И мы хотим использовать существующую «пользовательскую» таблицу (а не собственную Django) для хранения информации о пользователях. Похоже, что можно изменить имя таблицы, которую использует Django, в кла...

8
голосов
2ответов
1048 просмотров

PowerShell, методы расширения и исправление обезьян

Можно ли написать метод расширения в PowerShell? или закрепить новый метод поверх существующего типа, например [string] live во время выполнения?

11
голосов
9ответов
3241 просмотров

Есть ли способ изменить значение поля private static final в Java извне класса?

Я знаю, что это обычно довольно глупо, но не стреляйте в меня, пока не прочитаете вопрос. Обещаю, у меня есть веская причина для этого :) Можно изменить обычные частные поля в Java с помощью отражения, однако Java выдает исключение безопасности при попытке сделать то же самое для полей final....

4
голосов
2ответов
5895 просмотров

фиксированные и простые числа в рубине

Прежде чем я сам приступил к написанию этого, видел ли кто-нибудь рубиновую реализацию следующего поведения? puts 7.nextprime(); #=> 11 puts 7.previousprime(); #=> 5 puts 7.isprime(); #=> true Очевидно, что такие вещи были бы некрасивыми для больших чисел, но для целы...

15
голосов
8ответов
2508 просмотров

Если исправление обезьян разрешено и в Ruby, и в Python, почему в Ruby это вызывает больше споров?

Во многих обсуждениях, которые я слышал о Ruby, люди выражали свои сомнения по поводу языка, проблема обезьяньих исправлений поднималась как одна из их основных проблем. Однако я редко слышу такие же аргументы в контексте Python, хотя это также разрешено в языке Python. Почему это различие...

1
голосов
4ответов
439 просмотров

Ищете конкретный пример того, что не так с исправлением обезьян?

Я слышал много ох и ах о том, что исправление обезьян - это так здорово или что исправление обезьян - самое худшее на земле. У меня есть идея, что нехорошо, если вы напишете какой-то код, а затем кто-то другой изменит его функциональность, чтобы сделать что-то еще. Но я ищу конкретный пример сит...

9
голосов
6ответов
2449 просмотров

Альтернативы базовым классам обезьяны исправления

Я все еще новичок в Ruby и в основном только пишу свою первую микропрограмму после прочтения книги Купера. Мне указали, что нужно избегать исправления обезьян, но проблема в том, что я не знаю, каковы альтернативы для достижения такого же поведения. По сути, я хочу добавить новый метод, доступны...

4
голосов
7ответов
638 просмотров

Как мне получить доступ к исходному методу обезьяньего метода в Perl?

Я пытаюсь обезьяны исправлять класс Perl: я хочу изменить поведение существующего метода. Этот узел на perlmonks показывает, как добавить функцию существующего класса. Я обнаружил, что этот шаблон также можно использовать для создания новой реализации существующей функции. Однако я х...

2
голосов
2ответов
464 просмотров

Действительно ли исправление / повторное открытие класса обезьяны является примером отражения?

Приносим извинения за рекурсивный характер этого вопроса, но выбранный ответ на вопрос о SO заставил меня усомниться в моем понимании рефлексии. Я думал, что рефлексия в основном связана с запросом внутренних событий программы во время ее работы. В примере, приведенном в этом ответе, исправ...

17
голосов
6ответов
7465 просмотров

Можно ли заменить PHP-функции (monkeypatch)?

Вы можете сделать это в Python, но возможно ли это в PHP? >>> def a(): print 1 ... >>> def a(): print 2 ... >>> a() 2 например: <? function var_dump() {} ?> Fatal error: Cannot redeclare var_dump() in /tmp/- on line 1

3
голосов
3ответов
510 просмотров

Позволяет ли Perl monkey-patching видеть объем исправленного пакета?

Я, как обезьяна, исправляю пакет, используя методику, приведенную в начале " Как обезьяно исправить метод экземпляра в Perl? ". Проблема, с которой я сталкиваюсь, заключается в том, что исходная подпрограмма использовала переменную my уровня пакета, к которой исправленная подпрограмма, похоже, н...

22
голосов
8ответов
5601 просмотров

Как я могу исправить метод экземпляра в Perl?

Я пытаюсь обезьяно-патчить (утиный удар :-) экземпляр LWP::UserAgent, вот так: sub _user_agent_get_basic_credentials_patch { return ($username, $password); } my $agent = LWP::UserAgent->new(); $agent->get_basic_credentials = _user_agent_get_basic_credentials_patch; Это неправильн...

1
голосов
4ответов
412 просмотров

Синхронизация пользователей Django с Google Apps без monkeypatching

Я пишу приложение Django и хочу, чтобы учетная запись создавалась в нашей электронной почте, размещенной в Google Apps, с использованием Provisioning API всякий раз, когда учетная запись создается локально. Я бы использовал только сигналы, но поскольку я хотел бы, чтобы пароли синхронизировал...

12
голосов
4ответов
2118 просмотров

Обезьяна-патч или нет?

Это более общий вопрос, чем вопрос для конкретного языка, хотя я столкнулся с этой проблемой во время игры с модулем python ncurses. Мне нужно было отображать символы локали и распознавать их как символы, поэтому я просто быстро исправил несколько функций / методов из модуля curses. Это было ...

6
голосов
3ответов
533 просмотров

[] метод Ruby String

Когда я читал исходный код Beast, я обнаружил много такого кода: <%= 'Password'[:password_title] %> Мне кажется, что это вызов метода [] с символом в качестве входного параметра для String, но я не нашел такого типа параметра метода String [] в ruby ​​API. Что это значит? заранее сп...