{"id":13723248,"url":"https://github.com/sathish316/metaprogramming_koans","last_synced_at":"2025-05-07T16:32:37.280Z","repository":{"id":66932460,"uuid":"2283135","full_name":"sathish316/metaprogramming_koans","owner":"sathish316","description":"Ruby Metaprograaming Koans (Inspired by EdgeCase RubyKoans).","archived":false,"fork":false,"pushed_at":"2018-03-09T21:16:41.000Z","size":139,"stargazers_count":64,"open_issues_count":2,"forks_count":23,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-01-28T23:09:16.399Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubymetakoans.heroku.com/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sathish316.png","metadata":{"files":{"readme":"README.rdoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2011-08-28T12:07:17.000Z","updated_at":"2023-11-09T03:47:02.000Z","dependencies_parsed_at":"2023-06-05T18:00:39.219Z","dependency_job_id":null,"html_url":"https://github.com/sathish316/metaprogramming_koans","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sathish316%2Fmetaprogramming_koans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sathish316%2Fmetaprogramming_koans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sathish316%2Fmetaprogramming_koans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sathish316%2Fmetaprogramming_koans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sathish316","download_url":"https://codeload.github.com/sathish316/metaprogramming_koans/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252915487,"owners_count":21824575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T01:01:37.784Z","updated_at":"2025-05-07T16:32:32.229Z","avatar_url":"https://github.com/sathish316.png","language":"Ruby","funding_links":[],"categories":["Languages"],"sub_categories":["Ruby"],"readme":"= Ruby Metaprogramming Koans\n\nRuby Metaprogramming Koans walk you along the path to enlightenment in order to learn Metaprogramming in Ruby.\nIt is inspired by the original Ruby koans (http://rubykoans.com) by Jim Weirich which can be forked here: https://github.com/edgecase/ruby_koans\n\nKoans teach you a programming language using Tests/TDD.\nMetaprogramming koans attempts to teach Ruby metaprogramming using the same philosophy of koans used for programming languages.\n\n== Metaprogramming examples\n\nThe metaprogramming examples used in the koans are derived from the following sources:\n\n1. Seeing Metaclasses clearly by _why\nhttp://dannytatom.github.com/metaid/\n2. Metaprogramming in Ruby: It’s All About the Self by Yehuda Katz\nhttp://yehudakatz.com/2009/11/15/metaprogramming-in-ruby-its-all-about-the-self/\n3. Ruby Object model and Metaprogramming screencasts by Dave Thomas\nhttp://pragprog.com/screencasts/v-dtrubyom/the-ruby-object-model-and-metaprogramming\n\n\nThe koans are a starting point and only supplement the above articles/books/videos.\nPlease use the original source for more enlightenment.\n\n== The Structure\n\nThe koans are broken out into areas by file, metaclasses are covered in about_metaclasses.rb,\ndefine_method is covered in about_define_method.rb, etc. They are presented in order in the\npath_to_enlightenment.rb file.\n\nEach koan builds up your knowledge of Ruby metaprogramming and builds upon itself. Koans will\nhave __ or ___ which you need to fill in with the correct answer to progress.\n\n== Installing Ruby\n\nThe koans require Ruby 1.9.2. To install Ruby:\n\n1. Install RVM http://beginrescueend.com/rvm/install/\n2. Install Ruby http://beginrescueend.com/rvm/install/\n\n$ rvm install ruby-1.9.2\n\nAll the koans are in Test::Unit and don't require additional gems\n\n== The Path To Enlightenment\n\nTo start working your way through the koans, run rake\n\nmetaprogramming_koans$ rake\n\nTo run a specific koan, run it with ruby:\n\nmetaprogramming_koans$ ruby about_metaclasses.rb\n\nFollow the instructions and keep filling the answers to start your journey towards mastering metaprogramming in Ruby\n\n== Inspiration\n\nThe Little Schemer (http://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992)\nby Daniel Friedman is one of my all time favorite programming books.\nIt follows the socratic instruction method, which is teaching\nby way of asking progressively complex questions. You can learn the basic concepts\nof Lisp/Scheme in a few hours.\n\nI checked out Ruby Koans (http://rubykoans.com/) by JimWeirich and solved it.\nThe idea of learning a new language using Test driven development was fascinating.\nIt was very similar to the approach in Little Schemer, except that instead of a book,\nit is an automated testsuite that's asking you questions.\n\nIf you're learning Ruby, you should check out the original koans (http://github.com/edgecase/ruby_koans) first:\n\n== Other Resources\n\nTo get more insight on the Ruby koans way of learning, check out the EdgeCase Ruby koans (http://github.com/edgecase/ruby_koans):\n\nFollowing are some more resources to learn Metaprogramming in Ruby:\n1. Seeing Metaclasses early http://dannytatom.github.com/metaid/\n2. Ruby Object model and metaprogramming screencasts http://pragprog.com/screencasts/v-dtrubyom/the-ruby-object-model-and-metaprogramming\n3. Metaprogramming Ruby http://pragprog.com/book/ppmetr/metaprogramming-ruby\n\n== How do i add my own koans?\n\nTo add your own koans and contribute to the community:\n1. Fork this repo\n2. Copy src/about_template.rb to src/about_foo.rb\n3. Add src/about_foo to src/path_to_enlightenment.rb\n4. Start adding your koans as test cases\n5. Make sure the solved koans work by running: ruby about_foo.rb\n6. Execute $rake gen to generate koans/about_foo.rb with all assertions replaced with __\n7. Create pull request\n\n== License\n\nYou're free to copy, add, change or distribute the koans here.\nThe structure of this whole project is forked from Edgecase Ruby koans (https://github.com/edgecase/ruby_koans)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsathish316%2Fmetaprogramming_koans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsathish316%2Fmetaprogramming_koans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsathish316%2Fmetaprogramming_koans/lists"}