Онлайн-руководство по метапрограммированию Ruby

Я только начал изучать Ruby и хорошо разобрался с основами. Я постоянно слышу, что одна из замечательных вещей, которые Ruby делает очень хорошо, — это метапрограммирование, но ни одно из руководств, которые я читал, не освещает это. В поиске в Google я могу найти только платные скринкасты рубинового метапрограммирования.

Итак, где я могу найти хорошее онлайн-руководство по метапрограммированию Ruby?


person Robin Barnes    schedule 25.04.2009    source источник


Ответы (6)


Вышеупомянутая статья относится к этому, но я опубликую ее для ясности: http://viewsourcecode.org/why/hacking/seeingMetaclassesClearly.html

person Community    schedule 25.04.2009
comment
Образец Dwemthy's Array, связанный оттуда, является отличным (хотя и не совсем практичным) примером метапрограммирования. - person Chuck; 26.04.2009
comment
Эта ссылка кажется битой :( - person Kev; 10.06.2010
comment
Теперь это можно найти здесь: dannytatom.github.com/metaid Удивительно. - person Edward Anderson; 12.06.2010
comment
краткое введение alfreddd.com/2013/02/metaprogramming -in-ruby-in-nutshell.html - person Alfreddd; 21.02.2013
comment
И не забывайте mislav.uniqpath.com/poignant-guide, который является ответом на вопрос "Почему?" ) Путеводитель по Руби - person Douglas G. Allen; 25.05.2013
comment
Хотя это классический пример метапрограммирования в Ruby, он довольно устарел. Во-первых, он использует созданную _why нотацию (metaclass, meta_def, meta_eval и т. д.), а не более новую официальную терминологию (singleton_class, define_singleton_method и т. д.). - person Max; 20.08.2013

Если вы готовы потратить немного денег, то на на веб-сайте Pragmatic Programmers есть отличная серия видеороликов об объектной модели Ruby. и метапрограммирование. Это не очень дорого, и это очень обширная серия, в которой рассказывается много интересных вещей, и она стоит каждого цента.

Мне нужно посмотреть его еще раз, чтобы попытаться понять некоторые концепции, тогда я смогу быть одним из крутой мета-толпы :)

person nitecoder    schedule 27.04.2009
comment
действительно отличная серия скринкастов PragProg! pragprog.com/screencasts/v-dtrubyom/ - person Tilo; 08.05.2011

Эта ссылка очень систематически объясняет различные концепции (синглтон, динамическое программирование и т. д.) метапрограммирования Ruby.

http://ruby-metaprogramming.rubylearning.com/

person vireshas    schedule 16.01.2012

Эти 2 книги должны вас заинтересовать...

«Язык программирования Ruby» Матца и Фланагана.

«Метапрограммирование Ruby: программируйте как профессионалы Ruby», Паоло Перрота

person user528306    schedule 11.02.2011
comment
+1 за метапрограммирование Ruby. Книга в основном является наставником, раскрывающим, как используются эти «уловки» / «заклинания». Помимо конструкций Ruby, связанных с метапрограммированием, он также показывает, как эти функции ИСПОЛЬЗУЮТСЯ в Rails для создания всех этих Rails-Magic/соглашений. - person GuruM; 06.04.2014
comment
Второе издание Metaprogramming Ruby для Ruby 2.x находится в стадии бета-тестирования в апреле 2014 года. Электронная книга с бета-версией доступна здесь: pragprog.com/book/ppmetr2/metaprogramming-ruby См. также: форумы. pragprog.com/forums/288/topics/12582 - person GuruM; 06.04.2014

Вы можете взглянуть на http://rubymonk.com/learning/books/2-metaprogramming-in-ruby — это вторая бесплатная книга по программированию на Ruby, которую мы выпустили на RubyMonk.com.

person Kai Wren    schedule 02.08.2012

Я удивлен, что никто не упомянул Code School. Их курс «Ruby Bits Part 2» следует материалу, аналогичному второй половине превосходной книги «Eloquent Ruby», с хорошим набором интерактивных тестов, которые помогут вам усвоить материал.

Ссылка: http://www.codeschool.com/courses/ruby-bits-part -2

Уровни:

  1. Блоки, процессы и лямбда-выражения
  2. Динамические классы и методы
  3. Понимание себя
  4. Отсутствующие методы 5 и 6. DSL

Подписка стоит 20 долларов в месяц (за которую вы также получаете доступ ко всем другим их курсам), но для меня это того стоило.

person Ozzie Gooen    schedule 13.07.2013