Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
module AwesomeResource
def initialize(attributes = {})
attributes.each do |key,val|
sym = key.to_sym
reader = :"#{sym}"
writer = :"#{sym}="
unless respond_to?(reader)
self.class.send(:attr_reader, sym)
end
unless respond_to?(writer)
self.class.send(:attr_writer, sym)
end
send(writer, val)
end
end
end
describe AwesomeResource do
it "creates readers and writers for any attributes passed in during initialization" do
article_class = Class.new do
include AwesomeResource
end
article = article_class.new("title" => "Fun")
article.title.should == "Fun"
article.title = 'Fun Times!'
article.title.should == 'Fun Times!'
expect { article.unknown_attribute }.to raise_exception
end
end
@DNNX

This comment has been minimized.

Copy link

commented May 24, 2013

This is a bit shorter: https://gist.github.com/DNNX/5643769 .

I removed unnecessary conversion of strings to symbols and vice versa.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.