Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## /lib/slice_host.rb
- module SliceHostAPI
- def self.create_api(api_key)
- SliceHost.new(api_key)
- end
- module DNS
- class DNS
- attr_accessor :zone, :record
- def initialize(api_key)
- @zone = Zone.new(api_key),
- @record = Record.new(api_key)
- end
- end
- class Zone < ActiveResource::Base
- attr_accessor :site
- def initialize(url)
- @site = url
- end
- end
- class Record < ActiveResource::Base
- attr_accessor :site
- def initialize(url)
- @site = url
- end
- end
- end
- class SliceHost
- attr_accessor :dns
- def initialize(api_key)
- @dns = DNS::DNS.new(api_key)
- end
- end
- def self.included(klass)
- klass.send(:include, InstanceMethods)
- klass.class_eval do
- attr_accessor :slice_host
- end
- end
- module InstanceMethods
- def create_slice_host_interface(api_key)
- @slice_host = SliceHost.new(api_key)
- end
- end
- end
- # a model (Make)
- class Make < ActiveRecord::Base
- include SliceHost
- end
- # console session showing how it works
- >> m = Make.new
- => #<Make id: nil, name: nil, created_at: nil, updated_at: nil>
- >> m.slice_host = SliceHostAPI.create_api("1234")
- => #<SliceHostAPI::SliceHost:0x102fa88b0 @dns=#<SliceHostAPI::DNS::DNS:0x102fa8860 @zone=[#<SliceHostAPI::DNS::Zone:0x102fa87e8 @site="1234">, #<SliceHostAPI::DNS::Record:0x102fa87c0 @site="1234">], @record=#<SliceHostAPI::DNS::Record:0x102fa87c0 @site="1234">>>
- >> m.create_slice_host_interface("1234")
- => #<SliceHostAPI::SliceHost:0x102f78db8 @dns=#<SliceHostAPI::DNS::DNS:0x102f78d68 @zone=[#<SliceHostAPI::DNS::Zone:0x102f78c50 @site="1234">, #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">], @record=#<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">>>
- >> m.slice_host.dns.record
- => #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">
- >> m.slice_host.dns.zone
- => [#<SliceHostAPI::DNS::Zone:0x102f78c50 @site="1234">, #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">]
Add Comment
Please, Sign In to add comment