document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-220292\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"c1\"># Initial Rev<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"c1\"># machine.rb<\/span><\/div><div class=\"line\" id=\"LC3\"><span class=\"k\">class<\/span> <span class=\"nc\">Machine<\/span><\/div><div class=\"line\" id=\"LC4\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">initialize<\/span><span class=\"p\">(<\/span><span class=\"nb\">name<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC5\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@name<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">name<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC7\">&nbsp;<\/div><div class=\"line\" id=\"LC8\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">device<\/span><\/div><div class=\"line\" id=\"LC9\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"no\">Lot<\/span><span class=\"o\">.<\/span><span class=\"n\">find_by_tester<\/span><span class=\"p\">(<\/span><span class=\"vi\">@name<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">device<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC11\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;<\/div><div class=\"line\" id=\"LC13\"><span class=\"c1\"># 2nd Rev - Where we build a class method that will build <\/span><\/div><div class=\"line\" id=\"LC14\"><span class=\"c1\">#           an instance method.<\/span><\/div><div class=\"line\" id=\"LC15\"><span class=\"c1\"># machine.rb<\/span><\/div><div class=\"line\" id=\"LC16\"><span class=\"k\">class<\/span> <span class=\"nc\">Machine<\/span><\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">initialize<\/span><span class=\"p\">(<\/span><span class=\"nb\">name<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@name<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">name<\/span><\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;<\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nc\">self<\/span><span class=\"o\">.<\/span><span class=\"nf\">associated_to<\/span><span class=\"p\">(<\/span><span class=\"kp\">attr<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">class_eval<\/span> <span class=\"sx\">%Q*<\/span><\/div><div class=\"line\" id=\"LC23\"><span class=\"sx\">      def device<\/span><\/div><div class=\"line\" id=\"LC24\"><span class=\"sx\">        Lot.find_by_<\/span><span class=\"si\">#{<\/span><span class=\"kp\">attr<\/span><span class=\"si\">}<\/span><span class=\"sx\">(@name).device<\/span><\/div><div class=\"line\" id=\"LC25\"><span class=\"sx\">      end<\/span><\/div><div class=\"line\" id=\"LC26\"><span class=\"sx\">    *<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;<span class=\"n\">associated_to<\/span> <span class=\"ss\">:tester<\/span><\/div><div class=\"line\" id=\"LC29\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;<\/div><div class=\"line\" id=\"LC31\"><span class=\"c1\"># 3rd Rev - where we move all the methods out to a module. <\/span><\/div><div class=\"line\" id=\"LC32\"><span class=\"c1\">#           Note the gymnastics we need to go through to build <\/span><\/div><div class=\"line\" id=\"LC33\"><span class=\"c1\">#           class methods in the module.<\/span><\/div><div class=\"line\" id=\"LC34\"><span class=\"c1\"># machine.rb<\/span><\/div><div class=\"line\" id=\"LC35\"><span class=\"k\">class<\/span> <span class=\"nc\">Machine<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;<span class=\"kp\">include<\/span> <span class=\"no\">MakesAssociatedTo<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;<span class=\"n\">associated_to<\/span> <span class=\"ss\">:tester<\/span><\/div><div class=\"line\" id=\"LC38\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;<\/div><div class=\"line\" id=\"LC40\"><span class=\"c1\"># makes_associated_to.rb<\/span><\/div><div class=\"line\" id=\"LC41\"><span class=\"k\">module<\/span> <span class=\"nn\">MakesAssociatedTo<\/span><\/div><div class=\"line\" id=\"LC42\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">initialize<\/span><span class=\"p\">(<\/span><span class=\"nb\">name<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC43\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@name<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">name<\/span><\/div><div class=\"line\" id=\"LC44\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;<\/div><div class=\"line\" id=\"LC46\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nc\">self<\/span><span class=\"o\">.<\/span><span class=\"nf\">included<\/span><span class=\"p\">(<\/span><span class=\"n\">base<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">base<\/span><span class=\"o\">.<\/span><span class=\"n\">extend<\/span><span class=\"p\">(<\/span><span class=\"no\">ClassMethods<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;<\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;<span class=\"k\">module<\/span> <span class=\"nn\">ClassMethods<\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">associated_to<\/span><span class=\"p\">(<\/span><span class=\"kp\">attr<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">class_eval<\/span> <span class=\"sx\">%Q?<\/span><\/div><div class=\"line\" id=\"LC53\"><span class=\"sx\">        def device<\/span><\/div><div class=\"line\" id=\"LC54\"><span class=\"sx\">          Lot.find_by_<\/span><span class=\"si\">#{<\/span><span class=\"kp\">attr<\/span><span class=\"si\">}<\/span><span class=\"sx\">(@name).device<\/span><\/div><div class=\"line\" id=\"LC55\"><span class=\"sx\">        end<\/span><\/div><div class=\"line\" id=\"LC56\"><span class=\"sx\">      ?<\/span><\/div><div class=\"line\" id=\"LC57\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC58\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC59\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC60\">&nbsp;<\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/220292/9e74cc5dab929fd78c9d8fe55c936c4d75797930/meta.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/220292#file_meta.rb\" style=\"float:right;margin-right:10px;color:#666\">meta.rb<\/a>\n          <a href=\"http://gist.github.com/220292\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
