active_enum 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ [0.8.0] : 2010-07-19
2
+ - Added pluggable storage API
3
+ - Added memory store as default storage
4
+ - Added meta data storage per value has a hash
5
+ - Added enum .meta method to access meta data
@@ -167,31 +167,17 @@ Giving you the familiar enum methods
167
167
 
168
168
  There is support for Formtastic[http://github.com/justinfrench/formtastic] and SimpleForm[http://github.com/plataformatec/simple_form]
169
169
  to make it easier to use the enum values as select options. The plugins have an almost identical API which is handy.
170
- Instructions for each are below.
170
+ You just need to require the extension for the respective plugin in an initialiser:
171
171
 
172
- ==== Formtastic
173
-
174
- In an initialiser:
172
+ Formtastic:
175
173
 
176
174
  require 'active_enum/form_helpers/formtastic'
177
175
 
178
- Then declare the input for an enumerated attribute as the :enum type.
179
-
180
- <% semantic_form_for(@person) do |f| %>
181
- <%= f.input :sex, :as => :enum %>
182
- <% end %>
183
-
184
- ==== SimpleForm
185
-
186
- In an initialiser:
176
+ Or, SimpleForm:
187
177
 
188
178
  require 'active_enum/form_helpers/simple_form'
189
179
 
190
- Then declare the input for an enumerated attribute as the :enum type.
191
-
192
- <% simple_form_for(@person) do |f| %>
193
- <%= f.input :sex, :as => :enum %>
194
- <% end %>
180
+ The input type will be automatically detected for enumerated attributes. You can override with the :as option as normal.
195
181
 
196
182
 
197
183
  == TODO
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ spec = Gem::Specification.new do |s|
23
23
 
24
24
  s.require_path = 'lib'
25
25
  s.autorequire = GEM_NAME
26
- s.files = %w(MIT-LICENSE README.rdoc Rakefile) + Dir.glob("{lib,spec}/**/*")
26
+ s.files = %w(active_enum.gemspec MIT-LICENSE CHANGELOG README.rdoc Rakefile) + Dir.glob("{lib,spec}/**/*")
27
27
  end
28
28
 
29
29
  desc 'Default: run specs.'
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{active_enum}
5
+ s.version = "0.8.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Adam Meehan"]
9
+ s.autorequire = %q{active_enum}
10
+ s.date = %q{2010-07-19}
11
+ s.description = %q{Define enum classes in Rails and use them to enumerate ActiveRecord attributes}
12
+ s.email = %q{adam.meehan@gmail.com}
13
+ s.extra_rdoc_files = ["README.rdoc"]
14
+ s.files = ["active_enum.gemspec", "MIT-LICENSE", "CHANGELOG", "README.rdoc", "Rakefile", "lib/active_enum", "lib/active_enum/acts_as_enum.rb", "lib/active_enum/base.rb", "lib/active_enum/extensions.rb", "lib/active_enum/form_helpers", "lib/active_enum/form_helpers/formtastic.rb", "lib/active_enum/form_helpers/simple_form.rb", "lib/active_enum/storage", "lib/active_enum/storage/abstract_store.rb", "lib/active_enum/storage/memory_store.rb", "lib/active_enum/version.rb", "lib/active_enum.rb", "lib/generators", "spec/active_enum", "spec/active_enum/acts_as_enum_spec.rb", "spec/active_enum/base_spec.rb", "spec/active_enum/extensions_spec.rb", "spec/active_enum/form_helpers", "spec/active_enum/form_helpers/formtastic_spec.rb", "spec/active_enum/form_helpers/simple_form_spec.rb", "spec/active_enum/storage", "spec/active_enum/storage/memory_store_spec.rb", "spec/active_enum_spec.rb", "spec/schema.rb", "spec/spec_helper.rb"]
15
+ s.homepage = %q{http://github.com/adzap/active_enum}
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{active_enum}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{Define enum classes in Rails and use them to enumerate ActiveRecord attributes}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ else
27
+ end
28
+ else
29
+ end
30
+ end
@@ -1,6 +1,7 @@
1
1
  require 'active_enum/base'
2
2
  require 'active_enum/extensions'
3
3
  require 'active_enum/acts_as_enum'
4
+ require 'active_enum/storage/abstract_store'
4
5
  require 'active_enum/version'
5
6
 
6
7
  module ActiveEnum
@@ -10,6 +11,9 @@ module ActiveEnum
10
11
  mattr_accessor :use_name_as_value
11
12
  self.use_name_as_value = false
12
13
 
14
+ mattr_accessor :storage
15
+ self.storage = :memory
16
+
13
17
  class Configuration
14
18
  def enum(name, &block)
15
19
  class_name = name.to_s.camelize
@@ -5,70 +5,69 @@ module ActiveEnum
5
5
  class Base
6
6
 
7
7
  class << self
8
+ attr_accessor :store
8
9
 
9
10
  def inherited(subclass)
10
11
  ActiveEnum.enum_classes << subclass
11
12
  end
12
13
 
13
- # :name => 'Foo', implicit ID
14
14
  # :id => 1, :name => 'Foo'
15
+ # :name => 'Foo'
15
16
  # 1 => 'Foo'
16
17
  #
17
18
  def value(enum_value)
18
- @values ||= []
19
-
20
- id, name = id_and_name(enum_value)
21
- check_duplicate(id, name)
22
-
23
- @values << [id, name]
24
- sort_values! unless @order == :as_defined
19
+ store.set *id_and_name_and_meta(enum_value)
25
20
  end
26
21
 
27
- # order enum values using :asc or :desc
22
+ # Order enum values. Allowed values are :asc, :desc or :as_defined
28
23
  #
29
24
  def order(order)
30
25
  @order = order
31
26
  end
32
27
 
33
28
  def all
34
- @values || []
29
+ store.values
35
30
  end
36
31
 
37
32
  def ids
38
- @values.map {|v| v[0] }
33
+ store.values.map {|v| v[0] }
39
34
  end
40
35
 
41
36
  def names
42
- @values.map {|v| v[1] }
37
+ store.values.map {|v| v[1] }
43
38
  end
44
39
 
45
40
  def to_select
46
- @values.map {|v| [v[1], v[0]] }
41
+ store.values.map {|v| [v[1], v[0]] }
47
42
  end
48
43
 
49
44
  def [](index)
50
45
  if index.is_a?(Fixnum)
51
- row = lookup_by_id(index)
46
+ row = store.get_by_id(index)
52
47
  row[1] if row
53
48
  else
54
- row = lookup_by_name(index)
49
+ row = store.get_by_name(index)
55
50
  row[0] if row
56
51
  end
57
52
  end
58
53
 
59
- private
60
-
61
- def lookup_by_id(index)
62
- @values.assoc(index)
54
+ def meta(index)
55
+ row = if index.is_a?(Fixnum)
56
+ store.get_by_id(index)
57
+ else
58
+ store.get_by_name(index)
59
+ end
60
+ row[2] || {} if row
63
61
  end
64
62
 
65
- def lookup_by_name(index)
66
- @values.rassoc(index.to_s) || @values.rassoc(index.to_s.titleize)
67
- end
63
+ private
68
64
 
69
- def id_and_name(hash)
65
+ def id_and_name_and_meta(hash)
70
66
  if hash.has_key?(:id) || hash.has_key?(:name)
71
- return (hash[:id] || next_id), hash[:name]
67
+ id = hash.delete(:id) || next_id
68
+ name = hash.delete(:name)
69
+ meta = hash
70
+ return id, name, (meta.blank? ? nil : meta)
72
71
  elsif hash.keys.first.is_a?(Fixnum)
73
72
  return *Array(hash).first
74
73
  else
@@ -77,25 +76,16 @@ module ActiveEnum
77
76
  end
78
77
 
79
78
  def next_id
80
- (ids.max || 0) + 1
79
+ ids.max.to_i + 1
81
80
  end
82
81
 
83
- def check_duplicate(id, name)
84
- if lookup_by_id(id)
85
- raise ActiveEnum::DuplicateValue, "The id #{id} is already defined for #{self} enum."
86
- elsif lookup_by_name(name)
87
- raise ActiveEnum::DuplicateValue, "The name #{name} is already defined for #{self} enum."
88
- end
82
+ def store
83
+ @store ||= storage_class.new(self, @order || :asc)
89
84
  end
90
85
 
91
- def sort_values!
92
- case (@order || :asc)
93
- when :asc
94
- @values.sort! {|a,b| a[0] <=> b[0] }
95
- when :desc
96
- @values.sort! {|a,b| b[0] <=> a[0] }
97
- end
98
- end
86
+ def storage_class
87
+ "ActiveEnum::Storage::#{ActiveEnum.storage.to_s.classify}Store".constantize
88
+ end
99
89
 
100
90
  end
101
91
 
@@ -0,0 +1,29 @@
1
+ module ActiveEnum
2
+ module Storage
3
+ autoload :MemoryStore, "active_enum/storage/memory_store"
4
+
5
+ class NotImplemented < StandardError; end
6
+
7
+ class AbstractStore
8
+ def initialize(enum_class, order)
9
+ @enum, @order = enum_class, order
10
+ end
11
+
12
+ def set(id, name, meta=nil)
13
+ raise NotImplemented
14
+ end
15
+
16
+ def get_by_id(id)
17
+ raise NotImplemented
18
+ end
19
+
20
+ def get_by_name(name)
21
+ raise NotImplemented
22
+ end
23
+
24
+ def values
25
+ raise NotImplemented
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,39 @@
1
+ module ActiveEnum
2
+ module Storage
3
+ class MemoryStore < AbstractStore
4
+ def set(id, name, meta=nil)
5
+ check_duplicate id, name
6
+ values << [id, name, meta].compact
7
+ sort!
8
+ end
9
+
10
+ def get_by_id(id)
11
+ values.assoc(id)
12
+ end
13
+
14
+ def get_by_name(name)
15
+ values.rassoc(name.to_s) || values.rassoc(name.to_s.titleize)
16
+ end
17
+
18
+ def values
19
+ @values ||= []
20
+ end
21
+
22
+ def check_duplicate(id, name)
23
+ if get_by_id(id) || get_by_name(name)
24
+ raise ActiveEnum::DuplicateValue
25
+ end
26
+ end
27
+
28
+ def sort!
29
+ return if @order == :as_defined
30
+ case @order
31
+ when :asc
32
+ values.sort! {|a,b| a[0] <=> b[0] }
33
+ when :desc
34
+ values.sort! {|a,b| b[0] <=> a[0] }
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveEnum
2
- VERSION = '0.7.1'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -1,70 +1,106 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe ActiveEnum::Base do
4
- it 'should return empty array from :all method when no values defined' do
5
- ActiveEnum.enum_classes = []
6
- class NewEnum < ActiveEnum::Base
4
+
5
+ context ".store" do
6
+ it 'should load the storage class instance using the storage setting' do
7
+ ActiveEnum::Base.send(:store).should be_instance_of(ActiveEnum::Storage::MemoryStore)
7
8
  end
8
- ActiveEnum.enum_classes.should == [NewEnum]
9
9
  end
10
10
 
11
- it 'should return empty array from :all method when no values defined' do
12
- define_enum.all.should == []
13
- end
11
+ context ".enum_classes" do
12
+ it 'should return all enum classes defined use class definition' do
13
+ ActiveEnum.enum_classes = []
14
+ class NewEnum < ActiveEnum::Base; end
15
+ ActiveEnum.enum_classes.should == [NewEnum]
16
+ end
14
17
 
15
- it 'should allow me to define a value with an id and name' do
16
- enum = define_enum do
17
- value :id => 1, :name => 'Name'
18
+ it 'should return all enum classes defined using define block' do
19
+ ActiveEnum.enum_classes = []
20
+ ActiveEnum.define do
21
+ enum(:bulk_new_enum) { }
22
+ end
23
+ ActiveEnum.enum_classes.should == [BulkNewEnum]
18
24
  end
19
- enum.all.should == [[1,'Name']]
20
25
  end
21
26
 
22
- it 'should allow me to define a value with a name only' do
23
- enum = define_enum do
24
- value :name => 'Name'
27
+ context ".all" do
28
+ it 'should return an empty array when no values defined' do
29
+ define_enum.all.should == []
25
30
  end
26
- enum.all.should == [[1,'Name']]
27
31
  end
28
32
 
29
- it 'should allow me to define a value as hash with id as key and name as value' do
30
- enum = define_enum do
31
- value 1 => 'Name'
33
+ context ".value" do
34
+ it 'should allow me to define a value with an id and name' do
35
+ enum = define_enum do
36
+ value :id => 1, :name => 'Name'
37
+ end
38
+ enum.all.should == [[1,'Name']]
32
39
  end
33
- enum.all.should == [[1,'Name']]
34
- end
35
40
 
36
- it 'should increment value ids when defined without ids' do
37
- enum = define_enum do
38
- value :name => 'Name 1'
39
- value :name => 'Name 2'
41
+ it 'should allow me to define a value with a name only' do
42
+ enum = define_enum do
43
+ value :name => 'Name'
44
+ end
45
+ enum.all.should == [[1,'Name']]
40
46
  end
41
- enum.all.should == [[1,'Name 1'], [2, 'Name 2']]
42
- end
43
47
 
44
- it 'should raise error is the id is a duplicate' do
45
- lambda do
46
- define_enum do
47
- value :id => 1, :name => 'Name 1'
48
- value :id => 1, :name => 'Name 2'
48
+ it 'should allow me to define a value as hash with id as key and name as value' do
49
+ enum = define_enum do
50
+ value 1 => 'Name'
49
51
  end
50
- end.should raise_error(ActiveEnum::DuplicateValue)
51
- end
52
+ enum.all.should == [[1,'Name']]
53
+ end
52
54
 
53
- it 'should raise error is the name is a duplicate' do
54
- lambda do
55
- define_enum do
56
- value :id => 1, :name => 'Name'
57
- value :id => 2, :name => 'Name'
55
+ it 'should allow to define meta data value with extra key value pairs' do
56
+ enum = define_enum do
57
+ value :id => 1, :name => 'Name', :description => 'extra'
58
58
  end
59
- end.should raise_error(ActiveEnum::DuplicateValue)
59
+ enum.all.should == [[1,'Name',{:description => 'extra'}]]
60
+ end
61
+
62
+ it 'should increment value ids when defined without ids' do
63
+ enum = define_enum do
64
+ value :name => 'Name 1'
65
+ value :name => 'Name 2'
66
+ end
67
+ enum.all.should == [[1,'Name 1'], [2, 'Name 2']]
68
+ end
69
+
70
+ it 'should raise error if the id is a duplicate' do
71
+ lambda do
72
+ define_enum do
73
+ value :id => 1, :name => 'Name 1'
74
+ value :id => 1, :name => 'Name 2'
75
+ end
76
+ end.should raise_error(ActiveEnum::DuplicateValue)
77
+ end
78
+
79
+ it 'should raise error if the name is a duplicate' do
80
+ lambda do
81
+ define_enum do
82
+ value :id => 1, :name => 'Name'
83
+ value :id => 2, :name => 'Name'
84
+ end
85
+ end.should raise_error(ActiveEnum::DuplicateValue)
86
+ end
60
87
  end
61
88
 
62
- it 'should return sorted values by id from :all' do
63
- enum = define_enum do
64
- value :id => 2, :name => 'Name 2'
65
- value :id => 1, :name => 'Name 1'
89
+ context ".meta" do
90
+ it 'should return meta values hash for a given index value' do
91
+ enum = define_enum do
92
+ value :id => 1, :name => 'Name', :description => 'extra'
93
+ end
94
+ enum.meta(1).should == {:description => 'extra'}
66
95
  end
67
- enum.all.first[0].should == 1
96
+
97
+ it 'should return empty hash for index with no meta defined' do
98
+ enum = define_enum do
99
+ value :id => 1, :name => 'Name'
100
+ end
101
+ enum.meta(1).should == {}
102
+ end
103
+
68
104
  end
69
105
 
70
106
  context "sorting" do
@@ -96,23 +132,27 @@ describe ActiveEnum::Base do
96
132
  end
97
133
  end
98
134
 
99
- it 'should return array of ids' do
100
- enum = define_enum do
101
- value :id => 1, :name => 'Name 1'
102
- value :id => 2, :name => 'Name 2'
135
+ context ".ids" do
136
+ it 'should return array of ids' do
137
+ enum = define_enum do
138
+ value :id => 1, :name => 'Name 1'
139
+ value :id => 2, :name => 'Name 2'
140
+ end
141
+ enum.ids.should == [1,2]
103
142
  end
104
- enum.ids.should == [1,2]
105
143
  end
106
144
 
107
- it 'should return array of names' do
108
- enum = define_enum do
109
- value :id => 1, :name => 'Name 1'
110
- value :id => 2, :name => 'Name 2'
145
+ context ".names" do
146
+ it 'should return array of names' do
147
+ enum = define_enum do
148
+ value :id => 1, :name => 'Name 1'
149
+ value :id => 2, :name => 'Name 2'
150
+ end
151
+ enum.names.should == ['Name 1', 'Name 2']
111
152
  end
112
- enum.names.should == ['Name 1', 'Name 2']
113
153
  end
114
154
 
115
- describe "element reference method" do
155
+ context "element reference method" do
116
156
 
117
157
  it 'should return name when given an id' do
118
158
  enum = define_enum do
@@ -141,21 +181,23 @@ describe ActiveEnum::Base do
141
181
 
142
182
  end
143
183
 
144
- it 'should return array for select helpers from to_select' do
145
- enum = define_enum do
146
- value :id => 1, :name => 'Name 1'
147
- value :id => 2, :name => 'Name 2'
184
+ context ".to_select" do
185
+ it 'should return array for select helpers' do
186
+ enum = define_enum do
187
+ value :id => 1, :name => 'Name 1'
188
+ value :id => 2, :name => 'Name 2'
189
+ end
190
+ enum.to_select.should == [['Name 1',1], ['Name 2',2]]
148
191
  end
149
- enum.to_select.should == [['Name 1',1], ['Name 2',2]]
150
- end
151
192
 
152
- it 'should return array sorted using order setting from to_select' do
153
- enum = define_enum() do
154
- order :desc
155
- value :id => 1, :name => 'Name 1'
156
- value :id => 2, :name => 'Name 2'
193
+ it 'should return array sorted using order setting' do
194
+ enum = define_enum() do
195
+ order :desc
196
+ value :id => 1, :name => 'Name 1'
197
+ value :id => 2, :name => 'Name 2'
198
+ end
199
+ enum.to_select.should == [['Name 2',2], ['Name 1',1]]
157
200
  end
158
- enum.to_select.should == [['Name 2',2], ['Name 1',1]]
159
201
  end
160
202
 
161
203
  def define_enum(&block)
@@ -0,0 +1,113 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ class TestMemoryStoreEnum < ActiveEnum::Base; end
4
+ class TestOtherAREnum < ActiveEnum::Base; end
5
+
6
+ describe ActiveEnum::Storage::MemoryStore do
7
+ attr_accessor :store
8
+
9
+ context '#set' do
10
+ it 'should store value of id and name' do
11
+ store.set 1, 'test name'
12
+ store.values.should == [[1, 'test name']]
13
+ end
14
+
15
+ it 'should store value of id, name and meta hash' do
16
+ store.set 1, 'test name', :description => 'meta'
17
+ store.values.should == [[1, 'test name', {:description => 'meta'}]]
18
+ end
19
+
20
+ it 'should raise error if duplicate id' do
21
+ lambda {
22
+ store.set 1, 'Name 1'
23
+ store.set 1, 'Other Name'
24
+ }.should raise_error(ActiveEnum::DuplicateValue)
25
+ end
26
+
27
+ it 'should raise error if duplicate name' do
28
+ lambda {
29
+ store.set 1, 'Name 1'
30
+ store.set 2, 'Name 1'
31
+ }.should raise_error(ActiveEnum::DuplicateValue)
32
+ end
33
+
34
+ it 'should raise error if duplicate name matches title-case name' do
35
+ lambda {
36
+ store.set 1, 'Name 1'
37
+ store.set 2, 'name 1'
38
+ }.should raise_error(ActiveEnum::DuplicateValue)
39
+ end
40
+ end
41
+
42
+ context "#values" do
43
+ it 'should return array of stored values' do
44
+ store.set 1, 'Name 1'
45
+ store.values.should == [[1, 'Name 1']]
46
+ end
47
+
48
+ it 'should return values for set enum only' do
49
+ alt_store.set 1, 'Other Name 1'
50
+ store.set 1, 'Name 1'
51
+ store.values.should == [[1, 'Name 1']]
52
+ end
53
+ end
54
+
55
+ context "#get_by_id" do
56
+ it 'should return the value for a given id' do
57
+ store.set 1, 'test name'
58
+ store.get_by_id(1).should == [1, 'test name']
59
+ end
60
+
61
+ it 'should return nil when id not found' do
62
+ store.get_by_id(1).should be_nil
63
+ end
64
+ end
65
+
66
+ context "#get_by_name" do
67
+ it 'should return the value for a given name' do
68
+ store.set 1, 'test name'
69
+ store.get_by_name('test name').should == [1, 'test name']
70
+ end
71
+
72
+ it 'should return the value with title-cased name for a given lowercase name' do
73
+ store.set 1, 'Test Name'
74
+ store.get_by_name('test name').should == [1, 'Test Name']
75
+ end
76
+
77
+ it 'should return nil when name not found' do
78
+ store.get_by_name('test name').should be_nil
79
+ end
80
+ end
81
+
82
+ context "sort!" do
83
+ it 'should sort values ascending when passed :asc' do
84
+ @order = :asc
85
+ store.set 2, 'Name 2'
86
+ store.set 1, 'Name 1'
87
+ store.values.should == [[1,'Name 1'], [2, 'Name 2']]
88
+ end
89
+
90
+ it 'should sort values descending when passed :desc' do
91
+ @order = :desc
92
+ store.set 1, 'Name 1'
93
+ store.set 2, 'Name 2'
94
+ store.values.should == [[2, 'Name 2'], [1,'Name 1']]
95
+ end
96
+
97
+ it 'should not sort values when passed :as_defined' do
98
+ @order = :as_defined
99
+ store.set 1, 'Name 1'
100
+ store.set 3, 'Name 3'
101
+ store.set 2, 'Name 2'
102
+ store.values.should == [[1,'Name 1'], [3,'Name 3'], [2, 'Name 2']]
103
+ end
104
+ end
105
+
106
+ def store
107
+ @store ||= ActiveEnum::Storage::MemoryStore.new(TestMemoryStoreEnum, @order)
108
+ end
109
+
110
+ def alt_store
111
+ @alt_store ||= ActiveEnum::Storage::MemoryStore.new(TestOtherAREnum, :asc)
112
+ end
113
+ end
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "Bulk enum definitions" do
4
4
 
5
- it 'define enum constants using block' do
5
+ it 'should define enum constants using block' do
6
6
  ActiveEnum.define do
7
7
  enum(:foo) do
8
8
  value :id => 1, :name => 'Foo 1'
@@ -17,4 +17,8 @@ describe "Bulk enum definitions" do
17
17
  Bar.all.should == [[1,'Bar 1']]
18
18
  end
19
19
 
20
+ it 'should use the memory store by default' do
21
+ ActiveEnum.storage.should == :memory
22
+ end
23
+
20
24
  end
@@ -3,15 +3,21 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'spec'))
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rspec/autorun'
6
- require 'rspec/rails'
7
6
 
8
7
  require 'active_record'
8
+ require 'action_controller'
9
+ require 'action_view'
10
+ require 'action_mailer'
11
+
9
12
  require 'active_enum'
10
13
 
11
14
  RAILS_ROOT = File.dirname(__FILE__)
12
15
 
16
+ require 'rspec/rails'
17
+
13
18
  ActiveRecord::Migration.verbose = false
14
19
  ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
20
+ ActiveRecord::Base.logger = Logger.new('/dev/null')
15
21
 
16
22
  require 'schema'
17
23
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_enum
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 7
9
- - 1
10
- version: 0.7.1
8
+ - 8
9
+ - 0
10
+ version: 0.8.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Adam Meehan
@@ -15,7 +15,7 @@ autorequire: active_enum
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-02 00:00:00 +10:00
18
+ date: 2010-07-19 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -28,7 +28,9 @@ extensions: []
28
28
  extra_rdoc_files:
29
29
  - README.rdoc
30
30
  files:
31
+ - active_enum.gemspec
31
32
  - MIT-LICENSE
33
+ - CHANGELOG
32
34
  - README.rdoc
33
35
  - Rakefile
34
36
  - lib/active_enum/acts_as_enum.rb
@@ -36,6 +38,8 @@ files:
36
38
  - lib/active_enum/extensions.rb
37
39
  - lib/active_enum/form_helpers/formtastic.rb
38
40
  - lib/active_enum/form_helpers/simple_form.rb
41
+ - lib/active_enum/storage/abstract_store.rb
42
+ - lib/active_enum/storage/memory_store.rb
39
43
  - lib/active_enum/version.rb
40
44
  - lib/active_enum.rb
41
45
  - spec/active_enum/acts_as_enum_spec.rb
@@ -43,6 +47,7 @@ files:
43
47
  - spec/active_enum/extensions_spec.rb
44
48
  - spec/active_enum/form_helpers/formtastic_spec.rb
45
49
  - spec/active_enum/form_helpers/simple_form_spec.rb
50
+ - spec/active_enum/storage/memory_store_spec.rb
46
51
  - spec/active_enum_spec.rb
47
52
  - spec/schema.rb
48
53
  - spec/spec_helper.rb