SERIES

Metaprogramming Ruby

10 Posts·Last updated on May 31, 2021

M Ruby - 1

April 01, 2021

회사에서 조만간 루비를 안 쓰게 될 것 같다. 루비를 보내주는 마지막 공부..... 아니면 언젠가 이직하면 레일즈를 쓰는 회사로 이직을 하게될까? Metaprogramming Ruby 아무튼 Metaprogramming Ruby라는 책을 읽어 보려한다. 올리는 글은 챕터별 정리와 사견 되도록 우리나라에 출판된 번역본 책은 안 올리려고 하는데 이 책은 번역…


M Ruby - 2. The Object Model

April 08, 2021

이제 시작이지만 재밌다. The Object Model 클래스, 모듈, 인스턴스 변수 등과 같은 언어의 구성 요소들은 Object Model이라는 시스템 모델에서 살아간다. Object Model에서 우린 "이 메서드는 어떤 클래스의 것 인가요?" 혹은 "이 모듈을 포함하면 어떻게 되나요?" 같은 답을 찾을 수 있다. 루비의 핵심인 Object Model…


M Ruby - 3. Methods

April 15, 2021

Methods 자바나 C처럼 강타입 언어는 컴파일러가 모든 메서드 호출에 대해 수신 객체가 일치하는 메서드를 갖고있는지 확인한다. 정적 유형 검사라고 하며 정적 타입 언어가 이를 채택해서 사용함 파이썬이나 루비같은 동적 언어들은 컴파일러가 확인하지 않음 루비에서는 boilerplate method가 문제가 안되는데 이에 대해 알아보자~ 중복 문제 99$를…


M Ruby - 4. Blocks

April 22, 2021

Blocks 블록은 스코프를 제어하기 위한 강력한 도구 블록은 단지 호출 가능한 객체의 큰 구성원 블록을 저장하고 나중에 실행하는 등 이런 객체와 다른 호출 가능한 객체를 최대한 활용하는 방법 설명 예정 The Day of the Blocks Roadmap 블록 기초 범위 개요 및 블록 클로져를 사용한 변수의 범위 이동 블록을 호출 가능한 객체로 변환하여…


M Ruby - 5. Class Definitions

April 29, 2021

Class Definitions 일반적인 프로그래밍 언어에서의 클래스는 클래스의 객체를 만든 다음 해당 객체의 메서드를 호출할 때까지 실제로 아무 일도 일어나지 않는다. 루비에서는 다르다, 객체의 향후 동작 방식만 지시하는 것이 아닌 코드를 실제로 싱행한다. 클래스 매크로와 별칭에 대한 것을 배울 예정 싱글톤 클래스에 대해서도 설명 클래스 정의 이해하기 …


M Ruby - 6. Code That Writes Code

May 02, 2021

메타프로그래밍은 단문장으로 정의할 수 있는 접근법이 아니다. 여태 배운 트릭들을 잘 조합해서 어떻게 문제들을 해결하는지에 대한 장 과제 attraccessor 처럼 클래스 매크로 `attrchecked` 모든 클래스에서 사용하여 더럽게 만드는 것 보단... CheckedAttributes모듈을 포함하는 경우에 클래스가 사용 가능 계획 addchecked…


M Ruby - 9. The Design of Active Record

May 10, 2021

ActiveRecord는 루비의 객체를 데이터베이스 레코드에 매칭하는 Rails 라이브러리이다. 이러한 기능을 object relational mapping이라고 하고, 관계형 데이터베이스와 객체지향 프로그래밍을 모두 잘 활용 가능하다. 액티브 레코드가 하는 일 보다는 어떻게 하는지에 대해 관심있게 확인! 짧은 예시 는 데이터베이스 연결같은 클래스 메서…


M Ruby - 10. Active Support's Concern Module

May 16, 2021

이전 장에서 모듈을 포함하면 인스턴스와 클래스 메서드 모두를 얻는 것을 알게되었다. Active Support 라이브러리에 있는 Concern 덕분에 가능 한 것 이전에 어떻게 되어있었고 어떤식으로 진화하는지 알아보자 Concern 이전의 레일즈 레일즈는 수년동안 많이 변경되었지만 기본 아이디어는 크게 변경되지 않았다 그 중 하나가 ActiveRecord…


M Ruby - 11.alias_method_chain의 흥망성쇠

May 25, 2021

이전 두 장에서 Rails의 모듈 설계와 그 설계가 시간이 지남에 따라 어떻게 변했는지 살펴봤다. 이 장에서는 Rails 역사의 더 극적인 변화에 대해 이야기 해보도록 하겠다. 결국 Rails 코드베이스에서 거의 완전히 폐기된 이라는 메서드가 어떻게 흥하고 망했는지 aliasmethodchain의 부흥 Include - Extend 트릭에서 흥미로운 코드…


M Ruby - 12. Attribute Methods의 진화

May 31, 2021

대규모 시스템에서 메타크로그래밍을 사용할 때 어떤일이 발생하는지 여전히 궁금하다!! 이를 살펴보기 위해 Rails의 가장 인기 있는 기능중 하나인 attribute method에 대해 살펴본다. 참고로 모든 라인을 이해하려고 하지 말고 아이디어 만을 이해하려고 하자 Attribute Methods의 사용 위 처럼 데이터베이스에 tasks라는 테이블을 만든…