active_hash 0.7.9 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ rdoc
5
5
  pkg
6
6
  .idea
7
7
  junk.*
8
+ .bundle/*
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 2010-04-25
2
+ - When ActiveRecord model belongs_to an ActiveHash and the associated id is nil, returns nil instead of raising RecordNotFound (Jeremy Weiskotten)
3
+ - Merged Nakajima's "add" alias for "create" - gotta save those ASCII characters :)
4
+
1
5
  2010-03-01
2
6
  - Removed "extend"-related deprecations - they didn't play well with rails class loading
3
7
 
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source :gemcutter
2
+
3
+ gem "activerecord", "3.0.0.beta2"
4
+ gem "activesupport", "3.0.0.beta2"
5
+ gem "rspec", ">= 1.3.0"
6
+ gem "fixjour", "0.4.1"
7
+ gem "acts_as_fu", "0.0.5"
8
+ gem "jeweler", "1.4.0"
data/README.md CHANGED
@@ -40,6 +40,20 @@ A quick example would be:
40
40
  country.name # => "Mexico"
41
41
  country.name? # => true
42
42
 
43
+ You can also use _create_:
44
+
45
+ class Country < ActiveHash::Base
46
+ create :id => 1, :name => "US"
47
+ create :id => 2, :name => "Canada"
48
+ end
49
+
50
+ If you are Pat Nakajima, you probably prefer _add_:
51
+
52
+ class Country < ActiveHash::Base
53
+ add :id => 1, :name => "US"
54
+ add :id => 2, :name => "Canada"
55
+ end
56
+
43
57
  ## Auto-Defined fields
44
58
 
45
59
  ActiveHash will auto-define all fields for you when you load the hash. For example, if you have the following class:
data/Rakefile CHANGED
@@ -8,21 +8,9 @@ begin
8
8
  gem.summary = %Q{An ActiveRecord-like model that uses a hash or file as a datasource}
9
9
  gem.email = "jeff@zilkey.com"
10
10
  gem.homepage = "http://github.com/zilkey/active_hash"
11
- gem.authors = ["Jeff Dean", "Mike Dalessio", "Corey Innis", "Peter Jaros", "Brandon Keene", "Brian Takita", "Pat Nakajima", "John Pignata"]
11
+ gem.authors = ["Jeff Dean", "Mike Dalessio", "Corey Innis", "Peter Jaros", "Brandon Keene", "Brian Takita", "Pat Nakajima", "John Pignata", "Jeremy Weiskotten"]
12
12
  gem.add_dependency('activesupport', [">= 2.2.2"])
13
- gem.post_install_message = %q{NOTE: Breaking change! Please change any extend statements to include statements:
14
-
15
- extend ActiveHash::Associations
16
- extend ActiveHash::Enum
17
-
18
- becomes
19
-
20
- include ActiveHash::Associations
21
- include ActiveHash::Enum
22
-
23
- Sorry for the inconvenience.
24
-
25
- }
13
+ gem.post_install_message = ""
26
14
  end
27
15
  Jeweler::GemcutterTasks.new
28
16
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.9
1
+ 0.8.0
data/active_hash.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{active_hash}
8
- s.version = "0.7.9"
8
+ s.version = "0.8.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jeff Dean", "Mike Dalessio", "Corey Innis", "Peter Jaros", "Brandon Keene", "Brian Takita", "Pat Nakajima", "John Pignata"]
12
- s.date = %q{2010-03-01}
11
+ s.authors = ["Jeff Dean", "Mike Dalessio", "Corey Innis", "Peter Jaros", "Brandon Keene", "Brian Takita", "Pat Nakajima", "John Pignata", "Jeremy Weiskotten"]
12
+ s.date = %q{2010-04-25}
13
13
  s.email = %q{jeff@zilkey.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -19,12 +19,12 @@ Gem::Specification.new do |s|
19
19
  ".document",
20
20
  ".gitignore",
21
21
  "CHANGELOG",
22
+ "Gemfile",
22
23
  "LICENSE",
23
24
  "README.md",
24
25
  "Rakefile",
25
26
  "VERSION",
26
27
  "active_hash.gemspec",
27
- "geminstaller.yml",
28
28
  "lib/active_file/base.rb",
29
29
  "lib/active_hash.rb",
30
30
  "lib/active_hash/base.rb",
@@ -44,22 +44,10 @@ Gem::Specification.new do |s|
44
44
  "spec/spec_helper.rb"
45
45
  ]
46
46
  s.homepage = %q{http://github.com/zilkey/active_hash}
47
- s.post_install_message = %q{NOTE: Breaking change! Please change any extend statements to include statements:
48
-
49
- extend ActiveHash::Associations
50
- extend ActiveHash::Enum
51
-
52
- becomes
53
-
54
- include ActiveHash::Associations
55
- include ActiveHash::Enum
56
-
57
- Sorry for the inconvenience.
58
-
59
- }
47
+ s.post_install_message = %q{}
60
48
  s.rdoc_options = ["--charset=UTF-8"]
61
49
  s.require_paths = ["lib"]
62
- s.rubygems_version = %q{1.3.5}
50
+ s.rubygems_version = %q{1.3.6}
63
51
  s.summary = %q{An ActiveRecord-like model that uses a hash or file as a datasource}
64
52
  s.test_files = [
65
53
  "spec/active_file/base_spec.rb",
@@ -39,6 +39,7 @@ module ActiveHash
39
39
  record.save
40
40
  record
41
41
  end
42
+ alias_method :add, :create
42
43
 
43
44
  def create!(attributes = {})
44
45
  record = new(attributes)
@@ -66,6 +67,8 @@ module ActiveHash
66
67
 
67
68
  def find(id, *args)
68
69
  case id
70
+ when nil
71
+ nil
69
72
  when :all
70
73
  all
71
74
  when Array
@@ -211,13 +214,13 @@ module ActiveHash
211
214
  def base_class
212
215
  ActiveHash::Base
213
216
  end
214
-
217
+
215
218
  def reload
216
219
  self.data = read_inheritable_attribute(:data)
217
220
  end
218
-
221
+
219
222
  private :reload
220
-
223
+
221
224
  end
222
225
 
223
226
  attr_reader :attributes
@@ -68,6 +68,28 @@ describe ActiveHash, "Base" do
68
68
  end
69
69
  end
70
70
 
71
+ describe ".add" do
72
+ before do
73
+ Country.fields :name
74
+ end
75
+
76
+ it "adds a record" do
77
+ proc {
78
+ Country.add :name => "Russia"
79
+ }.should change { Country.count }
80
+ end
81
+
82
+ it "returns the record" do
83
+ record = Country.add :name => "Russia"
84
+ record.name.should == "Russia"
85
+ end
86
+
87
+ it "should populate the id" do
88
+ record = Country.add :name => "Russia"
89
+ record.id.should_not be_nil
90
+ end
91
+ end
92
+
71
93
  describe ".all" do
72
94
  before do
73
95
  Country.field :name
@@ -726,7 +748,7 @@ describe ActiveHash, "Base" do
726
748
 
727
749
  before do
728
750
  Country.field :name
729
- Fixjour do
751
+ Fixjour :allow_redundancy => true do
730
752
  define_builder(Country) do |klass, overrides|
731
753
  klass.new(:name => 'Pat')
732
754
  end
@@ -6,6 +6,10 @@ describe ActiveHash::Base, "associations" do
6
6
  build_model :countries do
7
7
  end
8
8
 
9
+ build_model :schools do
10
+ integer :city_id
11
+ end
12
+
9
13
  class City < ActiveHash::Base
10
14
  include ActiveHash::Associations
11
15
  end
@@ -65,6 +69,21 @@ describe ActiveHash::Base, "associations" do
65
69
 
66
70
  describe "#belongs_to" do
67
71
 
72
+ context "with an ActiveRecord child" do
73
+ it "finds the correct records" do
74
+ School.belongs_to :city
75
+ city = City.create
76
+ school = School.create :city_id => city.id
77
+ school.city.should == city
78
+ end
79
+
80
+ it "returns nil when the record does not exist" do
81
+ School.belongs_to :city
82
+ school = School.create :city_id => nil
83
+ school.city.should be_nil
84
+ end
85
+ end
86
+
68
87
  context "with an ActiveRecord parent" do
69
88
  it "find the correct records" do
70
89
  City.belongs_to :country
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'rubygems'
2
1
  require 'spec'
3
2
  require 'spec/autorun'
3
+ require 'activerecord'
4
4
  require 'acts_as_fu'
5
5
  require 'fixjour'
6
6
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.9
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 8
8
+ - 0
9
+ version: 0.8.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Jeff Dean
@@ -12,23 +17,28 @@ authors:
12
17
  - Brian Takita
13
18
  - Pat Nakajima
14
19
  - John Pignata
20
+ - Jeremy Weiskotten
15
21
  autorequire:
16
22
  bindir: bin
17
23
  cert_chain: []
18
24
 
19
- date: 2010-03-01 00:00:00 -05:00
25
+ date: 2010-04-25 00:00:00 -04:00
20
26
  default_executable:
21
27
  dependencies:
22
28
  - !ruby/object:Gem::Dependency
23
29
  name: activesupport
24
- type: :runtime
25
- version_requirement:
26
- version_requirements: !ruby/object:Gem::Requirement
30
+ prerelease: false
31
+ requirement: &id001 !ruby/object:Gem::Requirement
27
32
  requirements:
28
33
  - - ">="
29
34
  - !ruby/object:Gem::Version
35
+ segments:
36
+ - 2
37
+ - 2
38
+ - 2
30
39
  version: 2.2.2
31
- version:
40
+ type: :runtime
41
+ version_requirements: *id001
32
42
  description:
33
43
  email: jeff@zilkey.com
34
44
  executables: []
@@ -42,12 +52,12 @@ files:
42
52
  - .document
43
53
  - .gitignore
44
54
  - CHANGELOG
55
+ - Gemfile
45
56
  - LICENSE
46
57
  - README.md
47
58
  - Rakefile
48
59
  - VERSION
49
60
  - active_hash.gemspec
50
- - geminstaller.yml
51
61
  - lib/active_file/base.rb
52
62
  - lib/active_hash.rb
53
63
  - lib/active_hash/base.rb
@@ -69,20 +79,7 @@ has_rdoc: true
69
79
  homepage: http://github.com/zilkey/active_hash
70
80
  licenses: []
71
81
 
72
- post_install_message: |
73
- NOTE: Breaking change! Please change any extend statements to include statements:
74
-
75
- extend ActiveHash::Associations
76
- extend ActiveHash::Enum
77
-
78
- becomes
79
-
80
- include ActiveHash::Associations
81
- include ActiveHash::Enum
82
-
83
- Sorry for the inconvenience.
84
-
85
-
82
+ post_install_message: ""
86
83
  rdoc_options:
87
84
  - --charset=UTF-8
88
85
  require_paths:
@@ -91,18 +88,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
88
  requirements:
92
89
  - - ">="
93
90
  - !ruby/object:Gem::Version
91
+ segments:
92
+ - 0
94
93
  version: "0"
95
- version:
96
94
  required_rubygems_version: !ruby/object:Gem::Requirement
97
95
  requirements:
98
96
  - - ">="
99
97
  - !ruby/object:Gem::Version
98
+ segments:
99
+ - 0
100
100
  version: "0"
101
- version:
102
101
  requirements: []
103
102
 
104
103
  rubyforge_project:
105
- rubygems_version: 1.3.5
104
+ rubygems_version: 1.3.6
106
105
  signing_key:
107
106
  specification_version: 3
108
107
  summary: An ActiveRecord-like model that uses a hash or file as a datasource
data/geminstaller.yml DELETED
@@ -1,13 +0,0 @@
1
- defaults:
2
- install_options: --source=http://gemcutter.org --include-dependencies --no-ri --no-rdoc
3
- gems:
4
- - name: acts_as_fu
5
- version: 0.0.5
6
- - name: activesupport
7
- version: >= 2.2.2
8
- - name: rspec
9
- version: >= 1.3.0
10
- - name: fixjour
11
- version: 0.3.0
12
- - name: jeweler
13
- version: 1.4.0