active_hash 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 2012-04-05
2
+ - Allow gems like simple_form to read metadata about belongs_to associations that point to active hash objects (kbrock)
3
+
4
+ 2012-01-19
5
+ - Move specs to appraisal (flavorjones)
6
+
1
7
  2012-01-18 (v0.9.8)
2
8
  - Make ActiveHash.find with array raise an exception when record cannot be found (mocoso)
3
9
 
data/Gemfile CHANGED
@@ -1,22 +1,3 @@
1
- source :gemcutter
1
+ source "http://rubygems.org/"
2
2
 
3
3
  gemspec
4
-
5
- group :development do
6
- activerecord_version = ENV['ACTIVE_HASH_ACTIVERECORD_VERSION']
7
-
8
- if activerecord_version == "edge"
9
- git "git://github.com/rails/rails.git" do
10
- gem "activerecord"
11
- gem "activesupport"
12
- end
13
- elsif activerecord_version && activerecord_version.strip != ""
14
- gem "activerecord", activerecord_version
15
- else
16
- gem "activerecord"
17
- end
18
-
19
- gem "rake", "0.8.7"
20
- gem "rspec", "2.2.0"
21
- gem "sqlite3-ruby", ">= 1.3.2"
22
- end
data/README.md CHANGED
@@ -54,6 +54,10 @@ If you are Pat Nakajima, you probably prefer _add_:
54
54
  add :id => 2, :name => "Canada"
55
55
  end
56
56
 
57
+ ## WARNING
58
+
59
+ If you add data to an ActiveHash file during an initializer, it will not be reloaded in development in Rails.
60
+
57
61
  ## Auto-Defined fields
58
62
 
59
63
  ActiveHash will auto-define all fields for you when you load the hash. For example, if you have the following class:
@@ -359,28 +363,16 @@ To make users' lives easier, please maintain support for:
359
363
  * Ruby 1.92
360
364
  * ActiveRecord/ActiveSupport from 2.3.2 through edge
361
365
 
362
- To that end, there is a prerelease script that will run the tests against those 3 rubies, and against multiple versions of ActiveRecord/ActiveSupport.
363
- Before releasing a new version of ActiveHash, please run the prelease shell script like so:
364
-
365
- ./prerelease
366
-
367
- It requires you to have rvm installed, and it requires the latest patch-versions of 1.8.7, ree and 1.9.2. The prerelease script will:
368
-
369
- * switch to rvm's ruby-1.8.7
370
- * check for an active_hash gemset, and create one if it's not there
371
- * check for bundler and install it if it's not there
372
- * run `bundle exec rspec spec` against AR versions 2.3.2, 2.3.5, 2.3.11, the currently released version and edge
373
- * switch to ree-1.8.7 and do the same
374
- * switch to ruby-1.9.2 and do the same
366
+ To that end, run specs against all rubies before committing:
375
367
 
376
- Needless to say, this script takes some time to run. If you have to update your rubies, the first time you run this might take 45 minutes,
377
- but it will save users lots of headaches, and save me from dealing with the bug reports :)
368
+ rake appraisal:install
369
+ rake appraisal spec
378
370
 
379
- Once `prerelease` passes, follow these steps to release a new version of active_hash:
371
+ Once appraisal passes in all supported rubies, follow these steps to release a new version of active_hash:
380
372
 
381
373
  * update the changelog with a brief summary of the changes that are included in the release
382
374
  * bump the gem version by editing the `version.rb` file
383
- * if there are new contributors, add them to the list of authors in the Rakefile
375
+ * if there are new contributors, add them to the list of authors in the gemspec
384
376
  * run `rake build`
385
377
  * commit those changes
386
378
  * run `rake install` and verify that the gem loads correctly from an irb session
data/active_hash.gemspec CHANGED
@@ -24,7 +24,8 @@ Gem::Specification.new do |s|
24
24
  "Joel Chippindale",
25
25
  "Kevin Olsen",
26
26
  "Vladimir Andrijevik",
27
- "Adam Anderson"
27
+ "Adam Anderson",
28
+ "Keenan Brock"
28
29
  ]
29
30
  s.date = %q{2012-01-18}
30
31
  s.email = %q{jeff@zilkey.com}
@@ -60,11 +61,22 @@ Gem::Specification.new do |s|
60
61
 
61
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
63
  s.add_runtime_dependency(%q<activesupport>, [">= 2.2.2"])
64
+ s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
65
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
66
+ s.add_development_dependency(%q<activerecord>, [">= 2.2.2"])
67
+ s.add_development_dependency(%q<appraisal>, [">= 0"])
63
68
  else
64
69
  s.add_dependency(%q<activesupport>, [">= 2.2.2"])
70
+ s.add_dependency(%q<rspec>, ["~> 2.2.0"])
71
+ s.add_dependency(%q<sqlite3>, [">= 0"])
72
+ s.add_dependency(%q<activerecord>, [">= 2.2.2"])
73
+ s.add_dependency(%q<appraisal>, [">= 0"])
65
74
  end
66
75
  else
67
76
  s.add_dependency(%q<activesupport>, [">= 2.2.2"])
77
+ s.add_dependency(%q<rspec>, ["~> 2.2.0"])
78
+ s.add_dependency(%q<sqlite3>, [">= 0"])
79
+ s.add_dependency(%q<activerecord>, [">= 2.2.2"])
80
+ s.add_dependency(%q<appraisal>, [">= 0"])
68
81
  end
69
82
  end
70
-
data/lib/active_hash.rb CHANGED
@@ -2,13 +2,13 @@ require 'active_support'
2
2
 
3
3
  begin
4
4
  require 'active_support/core_ext'
5
- rescue MissingSourceFile
5
+ rescue
6
6
  end
7
7
 
8
8
  begin
9
9
  require 'active_model'
10
10
  require 'active_model/naming'
11
- rescue MissingSourceFile
11
+ rescue LoadError
12
12
  end
13
13
 
14
14
  require 'active_hash/base'
@@ -39,6 +39,14 @@ module ActiveHash
39
39
  end
40
40
  end
41
41
 
42
+ def compute_type(type_name)
43
+ self
44
+ end
45
+
46
+ def pluralize_table_names
47
+ true
48
+ end
49
+
42
50
  def data
43
51
  _data
44
52
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveHash
2
2
  module Gem
3
- VERSION = "0.9.8"
3
+ VERSION = "0.9.9"
4
4
  end
5
5
  end
@@ -16,6 +16,13 @@ module ActiveHash
16
16
  define_method("#{association_id}=") do |new_value|
17
17
  send "#{options[:foreign_key]}=", new_value ? new_value.id : nil
18
18
  end
19
+
20
+ create_reflection(
21
+ :belongs_to,
22
+ association_id.to_sym,
23
+ options,
24
+ options[:class_name].constantize
25
+ )
19
26
  end
20
27
 
21
28
  end
@@ -813,6 +813,7 @@ describe ActiveHash, "Base" do
813
813
  connection.create_table(:books, :force => true) do |t|
814
814
  t.text :subject_type
815
815
  t.integer :subject_id
816
+ t.integer :country_id
816
817
  end
817
818
  belongs_to :subject, :polymorphic => true
818
819
  belongs_to :country
@@ -126,6 +126,13 @@ describe ActiveHash::Base, "associations" do
126
126
  school.city.should be_nil
127
127
  end
128
128
  end
129
+
130
+ it "finds active record metadata for this association" do
131
+ School.belongs_to_active_hash :city
132
+ association = School.reflect_on_association(:city)
133
+ association.should_not be_nil
134
+ association.klass.name.should == City.name
135
+ end
129
136
  end
130
137
  end
131
138
 
metadata CHANGED
@@ -1,10 +1,15 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: active_hash
3
- version: !ruby/object:Gem::Version
4
- version: 0.9.8
3
+ version: !ruby/object:Gem::Version
4
+ hash: 41
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 9
9
+ - 9
10
+ version: 0.9.9
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jeff Dean
9
14
  - Mike Dalessio
10
15
  - Corey Innis
@@ -21,30 +26,99 @@ authors:
21
26
  - Kevin Olsen
22
27
  - Vladimir Andrijevik
23
28
  - Adam Anderson
29
+ - Keenan Brock
24
30
  autorequire:
25
31
  bindir: bin
26
32
  cert_chain: []
27
- date: 2012-01-18 00:00:00.000000000Z
28
- dependencies:
29
- - !ruby/object:Gem::Dependency
33
+
34
+ date: 2012-01-18 00:00:00 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
30
37
  name: activesupport
31
- requirement: &70110988966800 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id001 !ruby/object:Gem::Requirement
32
40
  none: false
33
- requirements:
34
- - - ! '>='
35
- - !ruby/object:Gem::Version
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 2
47
+ - 2
48
+ - 2
36
49
  version: 2.2.2
37
50
  type: :runtime
51
+ version_requirements: *id001
52
+ - !ruby/object:Gem::Dependency
53
+ name: rspec
54
+ prerelease: false
55
+ requirement: &id002 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 7
61
+ segments:
62
+ - 2
63
+ - 2
64
+ - 0
65
+ version: 2.2.0
66
+ type: :development
67
+ version_requirements: *id002
68
+ - !ruby/object:Gem::Dependency
69
+ name: sqlite3
70
+ prerelease: false
71
+ requirement: &id003 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ type: :development
81
+ version_requirements: *id003
82
+ - !ruby/object:Gem::Dependency
83
+ name: activerecord
38
84
  prerelease: false
39
- version_requirements: *70110988966800
85
+ requirement: &id004 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 2
93
+ - 2
94
+ - 2
95
+ version: 2.2.2
96
+ type: :development
97
+ version_requirements: *id004
98
+ - !ruby/object:Gem::Dependency
99
+ name: appraisal
100
+ prerelease: false
101
+ requirement: &id005 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ type: :development
111
+ version_requirements: *id005
40
112
  description:
41
113
  email: jeff@zilkey.com
42
114
  executables: []
115
+
43
116
  extensions: []
44
- extra_rdoc_files:
117
+
118
+ extra_rdoc_files:
45
119
  - LICENSE
46
120
  - README.md
47
- files:
121
+ files:
48
122
  - CHANGELOG
49
123
  - LICENSE
50
124
  - README.md
@@ -66,29 +140,38 @@ files:
66
140
  - spec/spec_helper.rb
67
141
  homepage: http://github.com/zilkey/active_hash
68
142
  licenses: []
143
+
69
144
  post_install_message:
70
145
  rdoc_options: []
71
- require_paths:
146
+
147
+ require_paths:
72
148
  - lib
73
- required_ruby_version: !ruby/object:Gem::Requirement
149
+ required_ruby_version: !ruby/object:Gem::Requirement
74
150
  none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
159
  none: false
81
- requirements:
82
- - - ! '>='
83
- - !ruby/object:Gem::Version
84
- version: '0'
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
166
+ version: "0"
85
167
  requirements: []
168
+
86
169
  rubyforge_project:
87
- rubygems_version: 1.8.10
170
+ rubygems_version: 1.8.17
88
171
  signing_key:
89
172
  specification_version: 3
90
173
  summary: An ActiveRecord-like model that uses a hash or file as a datasource
91
- test_files:
174
+ test_files:
92
175
  - Gemfile
93
176
  - spec/active_file/base_spec.rb
94
177
  - spec/active_hash/base_spec.rb