Описание тега class-eval

1 ответ

ruby method_alias в унаследованном классе

Я углубляюсь в метапрограммирование ruby ​​и у меня следующий вопрос. Пример: module ExampleAliaser def do_example_alias(prefix=:origin) class_eval <<-EOS class << self alias_method :#{prefix}_example, :example def example puts "in alias…
24 фев '12 в 12:26
0 ответов

instance_eval с пользовательским определенным контекстом

Я пытаюсь создать настройку DSL для уже существующей библиотеки, и у меня есть некоторые недоразумения о контексте блоков Ruby. Предположим, у нас есть блок, сохраненный как proc some_block = Proc.new do def testing; end puts self.inspect if self.ki…
12 янв '14 в 14:35
2 ответа

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

Я пытаюсь заново открыть класс в Rails, который исходит от движка. Я сделал следующее: module Xaaron ApiKey.class_eval do include Promiscuous::Publisher publish :xaaron_users_id, :api_key, :as => :ApiKey end end который сидит в: models/ Xaaron/ a…
26 июн '14 в 20:47
1 ответ

Как использовать хеш в выражении class_eval в Ruby

Я работал над домашним заданием, когда столкнулся с неприятной проблемой. Назначение - это упражнение в метапрограммировании Ruby, и цель состоит в том, чтобы определить attr_accessor_with_history, который выполняет все те же действия, что и attr_ac…
22 мар '17 в 07:15
1 ответ

Метапрограммирование в Ruby: добавление @variables к существующему методу initialize (используя class_eval)

Возможный дубликат: Ruby.Metaprogramming. class_eval У меня есть небольшой проект, цель которого - создать метод attr_accessor_with_history, который будет хранить записи о каждом значении, назначенном переменным, созданным им. Вот код: class Class d…
09 окт '12 в 08:52
1 ответ

Ruby/Rails: class_eval не хочет оценивать этот код

Чтобы создать макеты для Omniauth, я добавил этот метод в config/environments/development.rb def provides_mocks_for(*providers) providers.each do |provider| class_eval %Q{ OmniAuth.config.add_mock(provider, { :uid => '123456', :provider => pro…
14 янв '12 в 14:35
4 ответа

Ruby instance_eval для класса с помощью attr_accessor

Я понимаю принципиальную разницу между instance_eval а также class_eval, Однако то, что я обнаружил, когда играю, - это нечто странное attr_accessor, Вот пример: A = Class.new A.class_eval{ attr_accessor :x } a = A.new a.x = "x" a.x => "x" # ... …
20 янв '13 в 19:46
1 ответ

Как заставить массив инициализироваться только при первом вызове функции?

class Class def attr_accessor_with_history(attr_name) attr_name = attr_name.to_s # make sure it's a string attr_reader attr_name # create the attribute's attr_reader attr_name+"_history" # create bar_history class_eval %Q{ def #{attr_name}=(val) @#{…
05 мар '12 в 06:48
0 ответов

Лучший способ вызова методов в экземпляре

У моего вопроса есть пара слоев, поэтому, пожалуйста, потерпите меня? Я создал модуль, который добавляет рабочие процессы из гема Workflow в экземпляр, когда вы вызываете метод для этого экземпляра. Он должен иметь возможность получить описание в ви…
23 окт '16 в 23:56
1 ответ

Глубоко в Ruby class_eval и instance_eval

class_eval а также instance_eval вполне предсказуемы в таких случаях, как определение методов. Я также понимаю разницу между экземпляром класса и синглтоном класса (он же собственный класс). НО Я не могу понять единственную вещь, такую ​​как следующ…
07 дек '16 в 16:49
3 ответа

Ruby - использование class_eval для определения методов

Я учусь в SaaS Stanford, пытаюсь выполнить часть 5 этого задания. Мне действительно тяжело понять эту концепцию, вот что я пытался сделать: class Class def attr_accessor_with_history(attr_name) attr_name = attr_name.to_s attr_reader attr_name attr_r…
05 мар '12 в 02:52
1 ответ

Неожиданный конец ввода?

В следующем коде я сталкиваюсь с ошибкой, которая заявляет syntax error, unexpected '\n', expecting :: or '[' or '.' (SyntaxError) Но я не вижу, где проблема. module Xaaron class ApiKey.class_eval # It does not like this.... include Promiscuous::Pub…
26 июн '14 в 19:25
1 ответ

Невозможно расшифровать эту строку Ruby, содержащую оператор карты

Я только что видел эту строку кода Ruby в ruby-trello: # Returns the member who created the action. one :member_creator, :via => Member, :using => :member_creator_id Кажется, это относится к методу суперкласса, определенному как: def self.one(…
03 дек '12 в 16:39
1 ответ

class_eval выпуск Ruby

Я пытаюсь использовать class_eval для создания метода метапрограммно, если вызываемый метод начинается с "плюс". Тем не менее, у меня возникают проблемы при составлении фактического синтаксиса class_eval class Adder def initialize(my_num) @my_num = …
14 ноя '11 в 19:33
1 ответ

Как module_eval / class_eval / instance_eval считает номера строк

Я нашел, что line_number передан class_eval, module_eval а также instance_eval не совпадает с номерами строк, сообщенными ошибкой. Это поведение не объясняется документом ruby, который говорит: (используйте instance_eval В качестве примера) необязат…
1 ответ

Попытка понять использование class_eval

Я использую гем rails-settings и пытаюсь понять, как вы добавляете функции в классы ActiveRecord (я создаю свою собственную библиотеку для карточных игр), и я заметил, что этот гем использует одно из мета-программирования методы добавления функции в…
16 янв '11 в 11:29
1 ответ

Как работает этот ruby ​​custom accessor

Таким образом, метод ниже в class_eval динамически создает методы доступа для атрибутов, определенных во время выполнения. Его можно использовать, например, для создания объектов конфигурации с атрибутами, считанными из файла конфигурации (и неизвес…
31 дек '10 в 02:49
1 ответ

Явное использование `self` в имени метода в определении класса

Этот код взят из книги Rails Crash Course: class Accessor def self.accessor(attr) class_eval " def #{attr} @#{attr} end def #{attr}=(val) @#{attr} = val end " end end Идея заключается в том, что подкласс Accessor может создавать методы получения и у…
06 мар '15 в 11:45
2 ответа

class_eval vs instance_eval

Есть ли разница в том, как class_eval & instance_eval работать кроме def? внутри class_eval блок def определяет метод для самого класса (т.е. метод экземпляра) и внутри instance_eval def определяет метод для собственного класса класса (т. е. метод к…
24 апр '12 в 16:34
1 ответ

Override Controller в Spree - обнаружена циклическая зависимость при автозагрузке константы

Я пытаюсь добавить действие в Spree Admin PromotionsController, как это приложение / контроллеры / Шпрее / админ / promotions_controller.rb Spree::Admin::PromotionsController.class_eval do def users params[:q] ||= {} @search = @promotion.orders.reve…
08 авг '17 в 19:10