ephemeral 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 1.0.0
data/ephemeral.gemspec ADDED
@@ -0,0 +1,62 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "ephemeral"
8
+ s.version = "1.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Corey Ehmke"]
12
+ s.date = "2012-08-17"
13
+ s.description = "Ephemeral lets you define one-to-many relationships between in-memory objects, with ORM-like support for where clauses and chainable scopes."
14
+ s.email = "corey@idolhands.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE.txt",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "ephemeral.gemspec",
27
+ "lib/ephemeral.rb",
28
+ "lib/ephemeral/base.rb",
29
+ "lib/ephemeral/collection.rb",
30
+ "spec/ephemeral_spec.rb"
31
+ ]
32
+ s.homepage = "http://github.com/Bantik/ephemeral"
33
+ s.licenses = ["MIT"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = "1.8.24"
36
+ s.summary = "Ephemeral is an ODM for in-memory collections of objects."
37
+
38
+ if s.respond_to? :specification_version then
39
+ s.specification_version = 3
40
+
41
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
43
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
44
+ s.add_development_dependency(%q<bundler>, [">= 0"])
45
+ s.add_development_dependency(%q<rspec>, [">= 0"])
46
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
47
+ else
48
+ s.add_dependency(%q<activesupport>, [">= 0"])
49
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
50
+ s.add_dependency(%q<bundler>, [">= 0"])
51
+ s.add_dependency(%q<rspec>, [">= 0"])
52
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<activesupport>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
57
+ s.add_dependency(%q<bundler>, [">= 0"])
58
+ s.add_dependency(%q<rspec>, [">= 0"])
59
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
60
+ end
61
+ end
62
+
@@ -7,7 +7,7 @@ module Ephemeral
7
7
 
8
8
  def self.included(base)
9
9
  base.extend ClassMethods
10
- base.send(:attr_accessor, :collection)
10
+ base.send(:attr_accessor, :collections)
11
11
  end
12
12
 
13
13
  module ClassMethods
@@ -15,10 +15,12 @@ module Ephemeral
15
15
  def collects(name, args={})
16
16
  class_name = args[:class_name] || name.to_s.classify
17
17
  self.send :define_method, name do
18
- self.collection ||= Ephemeral::Collection.new(class_name)
18
+ self.collections ||= {}
19
+ self.collections[class_name] ||= Ephemeral::Collection.new(class_name)
19
20
  end
20
21
  self.send :define_method, "#{name}=" do |objects|
21
- self.collection = Ephemeral::Collection.new(class_name, objects)
22
+ self.collections ||= {}
23
+ self.collections[class_name] = Ephemeral::Collection.new(class_name, objects)
22
24
  end
23
25
  end
24
26
 
@@ -1,6 +1,6 @@
1
1
  require 'ephemeral'
2
2
 
3
- class Collectible
3
+ class Rarity
4
4
  include Ephemeral::Base
5
5
  attr_accessor :name, :item_count
6
6
  scope :foos, {:name => 'foo'}
@@ -9,6 +9,12 @@ class Collectible
9
9
  def initialize(args={}); args.each{|k,v| self.send("#{k}=", v)}; end
10
10
  end
11
11
 
12
+ class Antique
13
+ include Ephemeral::Base
14
+ attr_accessor :name, :item_count
15
+ def initialize(args={}); args.each{|k,v| self.send("#{k}=", v)}; end
16
+ end
17
+
12
18
  class NotCollectible
13
19
  include Ephemeral::Base
14
20
  attr_accessor :name
@@ -18,7 +24,8 @@ end
18
24
  class Collector
19
25
  include Ephemeral::Base
20
26
  attr_accessor :name
21
- collects :collectibles
27
+ collects :rarities
28
+ collects :antiques
22
29
  collects :junk, :class_name => 'NotCollectible'
23
30
  def initialize(args={}); args.each{|k,v| self.send("#{k}=", v)}; end
24
31
  end
@@ -28,7 +35,8 @@ describe Ephemeral do
28
35
  context 'class methods' do
29
36
 
30
37
  it 'defines a collection' do
31
- Collector.new.collectibles.klass.should == Collectible
38
+ Collector.new.rarities.klass.should == Rarity
39
+ Collector.new.antiques.klass.should == Antique
32
40
  end
33
41
 
34
42
  it 'accepts a class name' do
@@ -36,15 +44,15 @@ describe Ephemeral do
36
44
  end
37
45
 
38
46
  it 'creates a setter' do
39
- Collector.new.respond_to?(:collectibles=).should be_true
47
+ Collector.new.respond_to?(:rarities=).should be_true
40
48
  end
41
49
 
42
50
  it 'creates a getter' do
43
- Collector.new.respond_to?(:collectibles).should be_true
51
+ Collector.new.respond_to?(:rarities).should be_true
44
52
  end
45
53
 
46
54
  it 'registers a scope' do
47
- Collectible.scopes.include?(:foos).should be_true
55
+ Rarity.scopes.include?(:foos).should be_true
48
56
  end
49
57
 
50
58
  end
@@ -53,14 +61,19 @@ describe Ephemeral do
53
61
 
54
62
  before :each do
55
63
 
56
- @collectibles = [
57
- Collectible.new(:name => 'Paychecks', :item_count => 1),
58
- Collectible.new(:name => 'Paychecks', :item_count => 3),
59
- Collectible.new(:name => 'Requisitions', :item_count => 2),
64
+ @rarities = [
65
+ Rarity.new(:name => 'Paychecks', :item_count => 1),
66
+ Rarity.new(:name => 'Paychecks', :item_count => 3),
67
+ Rarity.new(:name => 'Requisitions', :item_count => 2),
68
+ ]
69
+
70
+ @antiques = [
71
+ Antique.new(:name => 'Trading Cards', :item_count => 100)
60
72
  ]
61
73
 
62
74
  @collector = Collector.new(:name => 'Hermes')
63
- @collector.collectibles = @collectibles
75
+ @collector.rarities = @rarities
76
+ @collector.antiques = @antiques
64
77
 
65
78
  end
66
79
 
@@ -69,32 +82,33 @@ describe Ephemeral do
69
82
  it 'from a setter' do
70
83
  collector = Collector.new(
71
84
  :name => 'from_api',
72
- 'collectibles' => [
85
+ 'rarities' => [
73
86
  {'name' => 'foo'},
74
87
  {'name' => 'bar'}
75
88
  ]
76
89
  )
77
- collector.collectibles.count.should == 2
90
+ collector.rarities.count.should == 2
78
91
  end
79
92
 
80
93
  end
81
94
 
82
95
  it 'performs a where' do
83
- @collector.collectibles.where(:name => 'Paychecks').should_not be_blank
96
+ @collector.rarities.where(:name => 'Paychecks').should_not be_blank
97
+ @collector.antiques.where(:name => 'Trading Cards').should_not be_blank
84
98
  end
85
99
 
86
100
  describe 'scope method' do
87
101
 
88
102
  it 'executes a scope' do
89
- @collector.collectibles.paychecks.first.should_not be_nil
103
+ @collector.rarities.paychecks.first.should_not be_nil
90
104
  end
91
105
 
92
106
  it 'returns a collection' do
93
- @collector.collectibles.paychecks.class.name.should == 'Ephemeral::Collection'
107
+ @collector.rarities.paychecks.class.name.should == 'Ephemeral::Collection'
94
108
  end
95
109
 
96
110
  it 'chains scopes' do
97
- @collector.collectibles.paychecks.threes.count.should == 1
111
+ @collector.rarities.paychecks.threes.count.should == 1
98
112
  end
99
113
 
100
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ephemeral
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-12 00:00:00.000000000 Z
12
+ date: 2012-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -106,6 +106,7 @@ files:
106
106
  - README.md
107
107
  - Rakefile
108
108
  - VERSION
109
+ - ephemeral.gemspec
109
110
  - lib/ephemeral.rb
110
111
  - lib/ephemeral/base.rb
111
112
  - lib/ephemeral/collection.rb
@@ -125,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
126
  version: '0'
126
127
  segments:
127
128
  - 0
128
- hash: -1888990476814131903
129
+ hash: 1446140040107562774
129
130
  required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  none: false
131
132
  requirements: