ar_serialized_array 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. data/Rakefile +5 -68
  2. data/Readme.md +50 -0
  3. data/VERSION +1 -1
  4. data/ar_serialized_array.gemspec +47 -0
  5. data/init.rb +1 -0
  6. data/lib/ar_serialized_array.rb +37 -0
  7. data/spec/ar_serialized_array_spec.rb +84 -0
  8. data/spec/setup_test_model.rb +28 -0
  9. data/spec/spec_helper.rb +4 -2
  10. metadata +39 -183
  11. data/.gitignore +0 -3
  12. data/CHANGELOG +0 -2
  13. data/README.markdown +0 -57
  14. data/cache/file_data_provider/countries-AF.txt +0 -246
  15. data/cache/file_data_provider/countries-AM.txt +0 -246
  16. data/cache/file_data_provider/countries-AR.txt +0 -246
  17. data/cache/file_data_provider/countries-AZ.txt +0 -246
  18. data/cache/file_data_provider/countries-BE.txt +0 -246
  19. data/cache/file_data_provider/countries-BG.txt +0 -246
  20. data/cache/file_data_provider/countries-BN.txt +0 -246
  21. data/cache/file_data_provider/countries-BR.txt +0 -246
  22. data/cache/file_data_provider/countries-BS.txt +0 -246
  23. data/cache/file_data_provider/countries-CA.txt +0 -246
  24. data/cache/file_data_provider/countries-CS.txt +0 -246
  25. data/cache/file_data_provider/countries-CY.txt +0 -246
  26. data/cache/file_data_provider/countries-DA.txt +0 -246
  27. data/cache/file_data_provider/countries-DE.txt +0 -246
  28. data/cache/file_data_provider/countries-DZ.txt +0 -246
  29. data/cache/file_data_provider/countries-EL.txt +0 -246
  30. data/cache/file_data_provider/countries-EN.txt +0 -246
  31. data/cache/file_data_provider/countries-EO.txt +0 -246
  32. data/cache/file_data_provider/countries-ES.txt +0 -246
  33. data/cache/file_data_provider/countries-ET.txt +0 -246
  34. data/cache/file_data_provider/countries-EU.txt +0 -246
  35. data/cache/file_data_provider/countries-FA.txt +0 -246
  36. data/cache/file_data_provider/countries-FI.txt +0 -246
  37. data/cache/file_data_provider/countries-FO.txt +0 -246
  38. data/cache/file_data_provider/countries-FR.txt +0 -246
  39. data/cache/file_data_provider/countries-GA.txt +0 -246
  40. data/cache/file_data_provider/countries-GL.txt +0 -246
  41. data/cache/file_data_provider/countries-GU.txt +0 -246
  42. data/cache/file_data_provider/countries-HE.txt +0 -246
  43. data/cache/file_data_provider/countries-HI.txt +0 -246
  44. data/cache/file_data_provider/countries-HR.txt +0 -246
  45. data/cache/file_data_provider/countries-HU.txt +0 -246
  46. data/cache/file_data_provider/countries-HY.txt +0 -246
  47. data/cache/file_data_provider/countries-ID.txt +0 -246
  48. data/cache/file_data_provider/countries-IS.txt +0 -246
  49. data/cache/file_data_provider/countries-IT.txt +0 -246
  50. data/cache/file_data_provider/countries-JA.txt +0 -246
  51. data/cache/file_data_provider/countries-KA.txt +0 -246
  52. data/cache/file_data_provider/countries-KK.txt +0 -246
  53. data/cache/file_data_provider/countries-KM.txt +0 -246
  54. data/cache/file_data_provider/countries-KN.txt +0 -246
  55. data/cache/file_data_provider/countries-KO.txt +0 -246
  56. data/cache/file_data_provider/countries-KU.txt +0 -246
  57. data/cache/file_data_provider/countries-LT.txt +0 -246
  58. data/cache/file_data_provider/countries-LV.txt +0 -246
  59. data/cache/file_data_provider/countries-MI.txt +0 -246
  60. data/cache/file_data_provider/countries-MK.txt +0 -246
  61. data/cache/file_data_provider/countries-ML.txt +0 -246
  62. data/cache/file_data_provider/countries-MN.txt +0 -246
  63. data/cache/file_data_provider/countries-MR.txt +0 -246
  64. data/cache/file_data_provider/countries-MS.txt +0 -246
  65. data/cache/file_data_provider/countries-MT.txt +0 -246
  66. data/cache/file_data_provider/countries-NB.txt +0 -246
  67. data/cache/file_data_provider/countries-NE.txt +0 -246
  68. data/cache/file_data_provider/countries-NL.txt +0 -246
  69. data/cache/file_data_provider/countries-NN.txt +0 -246
  70. data/cache/file_data_provider/countries-OC.txt +0 -246
  71. data/cache/file_data_provider/countries-PA.txt +0 -246
  72. data/cache/file_data_provider/countries-PL.txt +0 -246
  73. data/cache/file_data_provider/countries-PS.txt +0 -246
  74. data/cache/file_data_provider/countries-PT.txt +0 -246
  75. data/cache/file_data_provider/countries-RO.txt +0 -246
  76. data/cache/file_data_provider/countries-RU.txt +0 -246
  77. data/cache/file_data_provider/countries-RW.txt +0 -246
  78. data/cache/file_data_provider/countries-SK.txt +0 -246
  79. data/cache/file_data_provider/countries-SL.txt +0 -246
  80. data/cache/file_data_provider/countries-SO.txt +0 -246
  81. data/cache/file_data_provider/countries-SQ.txt +0 -246
  82. data/cache/file_data_provider/countries-SR.txt +0 -246
  83. data/cache/file_data_provider/countries-SV.txt +0 -246
  84. data/cache/file_data_provider/countries-SW.txt +0 -246
  85. data/cache/file_data_provider/countries-TA.txt +0 -246
  86. data/cache/file_data_provider/countries-TH.txt +0 -246
  87. data/cache/file_data_provider/countries-TI.txt +0 -246
  88. data/cache/file_data_provider/countries-TK.txt +0 -246
  89. data/cache/file_data_provider/countries-TL.txt +0 -246
  90. data/cache/file_data_provider/countries-TR.txt +0 -246
  91. data/cache/file_data_provider/countries-TT.txt +0 -246
  92. data/cache/file_data_provider/countries-UK.txt +0 -246
  93. data/cache/file_data_provider/countries-VE.txt +0 -246
  94. data/cache/file_data_provider/countries-VI.txt +0 -246
  95. data/cache/file_data_provider/countries-WA.txt +0 -246
  96. data/cache/file_data_provider/countries-WO.txt +0 -246
  97. data/cache/file_data_provider/countries-XH.txt +0 -246
  98. data/cache/file_data_provider/countries-ZU.txt +0 -246
  99. data/cache/file_data_provider/languages-AF.txt +0 -185
  100. data/cache/file_data_provider/languages-AM.txt +0 -185
  101. data/cache/file_data_provider/languages-AR.txt +0 -185
  102. data/cache/file_data_provider/languages-AZ.txt +0 -185
  103. data/cache/file_data_provider/languages-BE.txt +0 -185
  104. data/cache/file_data_provider/languages-BG.txt +0 -185
  105. data/cache/file_data_provider/languages-BR.txt +0 -185
  106. data/cache/file_data_provider/languages-BS.txt +0 -185
  107. data/cache/file_data_provider/languages-CA.txt +0 -185
  108. data/cache/file_data_provider/languages-CS.txt +0 -185
  109. data/cache/file_data_provider/languages-CY.txt +0 -185
  110. data/cache/file_data_provider/languages-DA.txt +0 -185
  111. data/cache/file_data_provider/languages-DE.txt +0 -185
  112. data/cache/file_data_provider/languages-EL.txt +0 -185
  113. data/cache/file_data_provider/languages-EN.txt +0 -185
  114. data/cache/file_data_provider/languages-EO.txt +0 -185
  115. data/cache/file_data_provider/languages-ES.txt +0 -185
  116. data/cache/file_data_provider/languages-ET.txt +0 -185
  117. data/cache/file_data_provider/languages-EU.txt +0 -185
  118. data/cache/file_data_provider/languages-FA.txt +0 -185
  119. data/cache/file_data_provider/languages-FI.txt +0 -185
  120. data/cache/file_data_provider/languages-FR.txt +0 -185
  121. data/cache/file_data_provider/languages-GA.txt +0 -185
  122. data/cache/file_data_provider/languages-GL.txt +0 -185
  123. data/cache/file_data_provider/languages-HE.txt +0 -185
  124. data/cache/file_data_provider/languages-HI.txt +0 -185
  125. data/cache/file_data_provider/languages-HR.txt +0 -185
  126. data/cache/file_data_provider/languages-HU.txt +0 -185
  127. data/cache/file_data_provider/languages-ID.txt +0 -185
  128. data/cache/file_data_provider/languages-IS.txt +0 -185
  129. data/cache/file_data_provider/languages-IT.txt +0 -185
  130. data/cache/file_data_provider/languages-JA.txt +0 -185
  131. data/cache/file_data_provider/languages-KO.txt +0 -185
  132. data/cache/file_data_provider/languages-LT.txt +0 -185
  133. data/cache/file_data_provider/languages-LV.txt +0 -185
  134. data/cache/file_data_provider/languages-MI.txt +0 -185
  135. data/cache/file_data_provider/languages-MK.txt +0 -185
  136. data/cache/file_data_provider/languages-MN.txt +0 -185
  137. data/cache/file_data_provider/languages-MR.txt +0 -185
  138. data/cache/file_data_provider/languages-MS.txt +0 -185
  139. data/cache/file_data_provider/languages-MT.txt +0 -185
  140. data/cache/file_data_provider/languages-NB.txt +0 -185
  141. data/cache/file_data_provider/languages-NL.txt +0 -185
  142. data/cache/file_data_provider/languages-NN.txt +0 -185
  143. data/cache/file_data_provider/languages-OC.txt +0 -185
  144. data/cache/file_data_provider/languages-PL.txt +0 -185
  145. data/cache/file_data_provider/languages-PS.txt +0 -185
  146. data/cache/file_data_provider/languages-PT.txt +0 -185
  147. data/cache/file_data_provider/languages-RO.txt +0 -185
  148. data/cache/file_data_provider/languages-RU.txt +0 -185
  149. data/cache/file_data_provider/languages-RW.txt +0 -185
  150. data/cache/file_data_provider/languages-SK.txt +0 -185
  151. data/cache/file_data_provider/languages-SL.txt +0 -185
  152. data/cache/file_data_provider/languages-SR.txt +0 -185
  153. data/cache/file_data_provider/languages-SV.txt +0 -185
  154. data/cache/file_data_provider/languages-TA.txt +0 -185
  155. data/cache/file_data_provider/languages-TH.txt +0 -185
  156. data/cache/file_data_provider/languages-TI.txt +0 -185
  157. data/cache/file_data_provider/languages-TR.txt +0 -185
  158. data/cache/file_data_provider/languages-TT.txt +0 -185
  159. data/cache/file_data_provider/languages-UK.txt +0 -185
  160. data/cache/file_data_provider/languages-VE.txt +0 -185
  161. data/cache/file_data_provider/languages-VI.txt +0 -185
  162. data/cache/file_data_provider/languages-WA.txt +0 -185
  163. data/cache/file_data_provider/languages-XH.txt +0 -185
  164. data/cache/file_data_provider/languages-ZU.txt +0 -185
  165. data/example_output/all_names_for_DE.txt +0 -85
  166. data/example_output/all_names_for_FR.txt +0 -85
  167. data/example_output/all_names_for_GB.txt +0 -85
  168. data/example_output/all_names_for_US.txt +0 -85
  169. data/i18n_data.gemspec +0 -31
  170. data/lib/i18n_data.rb +0 -34
  171. data/lib/i18n_data/file_data_provider.rb +0 -56
  172. data/lib/i18n_data/live_data_provider.rb +0 -97
  173. data/spec/i18n_data/file_data_provider_spec.rb +0 -23
  174. data/spec/i18n_data/live_data_provider_spec.rb +0 -44
  175. data/spec/i18n_data_spec.rb +0 -101
data/Rakefile CHANGED
@@ -1,80 +1,17 @@
1
- $LOAD_PATH << File.join(File.dirname(__FILE__),"..","lib")
2
- require 'lib/i18n_data'#TODO should not be necessary but is :/
3
- require 'yaml'
4
-
5
- desc "Run all specs in spec directory"
6
- task :default do |t|
7
- options = "--colour --format progress --loadby --reverse"
8
- files = FileList['spec/**/*_spec.rb']
9
- system("spec #{options} #{files}")
10
- end
11
-
12
- desc "write all languages to output"
13
- task :all_languages do
14
- I18nData.languages.keys.each do |lc|
15
- `rake languages LANGUAGE=#{lc}`
16
- end
17
- end
18
-
19
- desc "write languages to output/languages_{language}"
20
- task :languages do
21
- raise unless language = ENV['LANGUAGE']
22
- `mkdir output -p`
23
- data = I18nData.languages(language.upcase)
24
- File.open("output/languages_#{language.downcase}.yml",'w') {|f|f.puts data.to_yaml}
25
- end
26
-
27
- desc "write all countries to output"
28
- task :all_countries do
29
- I18nData.languages.keys.each do |lc|
30
- `rake countries LANGUAGE=#{lc}`
31
- end
32
- end
33
-
34
- desc "write countries to output/countries_{language}"
35
- task :countries do
36
- raise unless language = ENV['LANGUAGE']
37
- `mkdir output -p`
38
- data = I18nData.countries(language.upcase)
39
- File.open("output/countries_#{language.downcase}.yml",'w') {|f|f.puts data.to_yaml}
40
- end
41
-
42
- desc "write example output, just to show off :D"
43
- task :example_output do
44
- `mkdir example_output -p`
45
-
46
- #all names for germany, france, united kingdom and unites states
47
- ['DE','FR','GB','US'].each do |cc|
48
- names = I18nData.languages.keys.map do |lc|
49
- begin
50
- [I18nData.countries(lc)[cc], I18nData.languages[lc]]
51
- rescue I18nData::NoOnlineTranslationAvaiable
52
- nil
53
- end
54
- end
55
- File.open("example_output/all_names_for_#{cc}.txt",'w') {|f|
56
- f.puts names.reject(&:nil?).map{|x|x*" ---- "} * "\n"
57
- }
58
- end
59
- end
60
-
61
- desc "write cache for I18nData::FileDataProvider"
62
- task :write_cache_for_file_data_provider do
63
- require 'i18n_data/file_data_provider'
64
- require 'i18n_data/live_data_provider'
65
- I18nData::FileDataProvider.write_cache(I18nData::LiveDataProvider)
66
- end
1
+ task :default => :spec
2
+ require 'spec/rake/spectask'
3
+ Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']}
67
4
 
68
5
  begin
69
6
  require 'jeweler'
70
7
  project_name = 'ar_serialized_array'
71
8
  Jeweler::Tasks.new do |gem|
72
9
  gem.name = project_name
73
- gem.summary = "country/language names and 2-letter-code pairs, in 85 languages"
10
+ gem.summary = "Serialize an array in a column, [] when no set, xx_as_text accessors and more."
74
11
  gem.email = "grosser.michael@gmail.com"
75
12
  gem.homepage = "http://github.com/grosser/#{project_name}"
76
13
  gem.authors = ["Michael Grosser"]
77
- gem.add_dependency ['activesupport']
14
+ gem.add_dependency ['activerecord']
78
15
  end
79
16
 
80
17
  Jeweler::GemcutterTasks.new
@@ -0,0 +1,50 @@
1
+ Serialize an array in one column.
2
+
3
+ - [] when not set
4
+ - `xxx_as_text` / `xxx_as_text=` accessors to edit in forms
5
+ - `:on_set` callback for cleanup
6
+ - stores NULL when given array was empty (all empty -> `IS NULL`)
7
+
8
+ Install
9
+ =======
10
+ - As Rails plugin: `rails plugin install git://github.com/grosser/ar_serialized_array.git `
11
+ - As gem: ` sudo gem install ar_serialized_array `
12
+
13
+
14
+ Usage
15
+ =====
16
+
17
+ # basic / forms
18
+ class User < ActiveRecord::Base
19
+ serialized_array :product_ids, :accessor => :product_ids_as_text
20
+ end
21
+
22
+ <%= form_for @user do |f| %>
23
+ <%= f.text_field :product_ids_as_text %>
24
+ <% end %>
25
+
26
+ # set / get
27
+ User.new.product_ids # []
28
+
29
+ user.product_ids_as_text = "1, , 12323 , 23, 1"
30
+ user.product_ids # [1, 12323, 23]
31
+ user.product_ids_as_text # "1, 12323, 23"
32
+
33
+ # find ...
34
+ filled = User.all(:conditions => {:product_ids=>[1,3].to_yaml})
35
+ empty = User.all(:conditions => {:product_ids=>nil})
36
+
37
+ # with cleanup (unique integers)
38
+ class User < ActiveRecord::Base
39
+ serialized_array :product_ids, :on_set=>lambda{|x| x.map(&:to_i).uniq }
40
+ end
41
+
42
+ TODO
43
+ ====
44
+ - add support for `user.product_ids << 1`
45
+
46
+ Author
47
+ ======
48
+ [Michael Grosser](http://grosser.it)
49
+ michael@grosser.it
50
+ Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.3.0
@@ -0,0 +1,47 @@
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 = %q{ar_serialized_array}
8
+ s.version = "0.3.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael Grosser"]
12
+ s.date = %q{2011-01-17}
13
+ s.email = %q{grosser.michael@gmail.com}
14
+ s.files = [
15
+ "Rakefile",
16
+ "Readme.md",
17
+ "VERSION",
18
+ "ar_serialized_array.gemspec",
19
+ "init.rb",
20
+ "lib/ar_serialized_array.rb",
21
+ "spec/ar_serialized_array_spec.rb",
22
+ "spec/setup_test_model.rb",
23
+ "spec/spec_helper.rb"
24
+ ]
25
+ s.homepage = %q{http://github.com/grosser/ar_serialized_array}
26
+ s.require_paths = ["lib"]
27
+ s.rubygems_version = %q{1.4.2}
28
+ s.summary = %q{Serialize an array in a column, [] when no set, xx_as_text accessors and more.}
29
+ s.test_files = [
30
+ "spec/ar_serialized_array_spec.rb",
31
+ "spec/setup_test_model.rb",
32
+ "spec/spec_helper.rb"
33
+ ]
34
+
35
+ if s.respond_to? :specification_version then
36
+ s.specification_version = 3
37
+
38
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
39
+ s.add_runtime_dependency(%q<activerecord>, [">= 0"])
40
+ else
41
+ s.add_dependency(%q<activerecord>, [">= 0"])
42
+ end
43
+ else
44
+ s.add_dependency(%q<activerecord>, [">= 0"])
45
+ end
46
+ end
47
+
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'ar_serialized_array'
@@ -0,0 +1,37 @@
1
+ require 'active_record'
2
+
3
+ module ARSerializedArray
4
+ VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
5
+
6
+ def serialized_array(attr_name, options={})
7
+ options[:on_set] ||= lambda{|x|x}
8
+
9
+ # getter
10
+ define_method attr_name do
11
+ YAML.load(read_attribute(attr_name).to_s) || []
12
+ end
13
+
14
+ # setter
15
+ define_method "#{attr_name}=" do |value|
16
+ value = options[:on_set].call(value) || []
17
+ raise "Expected an Array, got: #{value.inspect}" unless value.is_a? Array
18
+ value = (value.empty? ? nil : value.to_yaml)
19
+ write_attribute attr_name, value
20
+ end
21
+
22
+ # accessors e.g. xxx_as_text
23
+ if options[:accessor]
24
+ #getter
25
+ define_method options[:accessor] do
26
+ send(attr_name) * ", "
27
+ end
28
+
29
+ #setter
30
+ define_method "#{options[:accessor]}=" do |value|
31
+ send "#{attr_name}=", value.to_s.split(',').reject(&:blank?).map(&:strip)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ ActiveRecord::Base.send(:extend, ARSerializedArray)
@@ -0,0 +1,84 @@
1
+ require "spec/spec_helper"
2
+
3
+ describe 'ar_serialized_array' do
4
+ describe 'basics' do
5
+ it "is an empty array by default" do
6
+ UserPlain.new.product_ids.should == []
7
+ end
8
+
9
+ it "serializes on set" do
10
+ user = UserPlain.create!(:product_ids => [1, 2])
11
+ UserPlain.find(user.id).product_ids.should == [1, 2]
12
+ end
13
+
14
+ it "can save an empty array" do
15
+ user = UserPlain.create!(:product_ids => [])
16
+ UserPlain.find(user.id).product_ids.should == []
17
+ end
18
+
19
+ it "can save nil" do
20
+ user = UserPlain.create!(:product_ids => nil)
21
+ UserPlain.find(user.id).product_ids.should == []
22
+ end
23
+
24
+ it "stores nil when nil is saved" do
25
+ user = UserPlain.create!(:product_ids => nil)
26
+ UserPlain.first(:conditions => {:id => user.id, :product_ids => nil}).should == user
27
+ end
28
+
29
+ it "stores empty arrays as NULL" do
30
+ user = UserPlain.create!(:product_ids => [])
31
+ UserPlain.first(:conditions => {:id => user.id, :product_ids => nil}).should == user
32
+ end
33
+
34
+ it "can search by array" do
35
+ user = UserPlain.create!(:product_ids => [1])
36
+ UserPlain.first(:conditions => {:id => user.id, :product_ids => [1].to_yaml}).should == user
37
+ end
38
+
39
+ it "raises when non-array is given" do
40
+ lambda{ UserPlain.create!(:product_ids => '') }.should raise_error
41
+ end
42
+ end
43
+
44
+ describe 'with accessor' do
45
+ it "can access the array as text" do
46
+ UserWithAccessor.new(:product_ids => [1,2,3]).product_ids_as_text.should == '1, 2, 3'
47
+ end
48
+
49
+ it "can set arrays via text" do
50
+ UserWithAccessor.new(:product_ids_as_text => '1, 2, 3').product_ids.should == ['1','2','3']
51
+ end
52
+
53
+ it "is symetric" do
54
+ text = '1, 2, 3'
55
+ UserWithAccessor.new(:product_ids_as_text => text).product_ids_as_text.should == text
56
+ end
57
+
58
+ it "accepts nil as empty" do
59
+ UserWithAccessor.new(:product_ids_as_text => nil).product_ids.should == []
60
+ end
61
+
62
+ it "is blank when unset" do
63
+ UserWithAccessor.new.product_ids_as_text.should == ''
64
+ end
65
+
66
+ it "is blank when empty" do
67
+ UserWithAccessor.new(:product_ids => []).product_ids_as_text.should == ''
68
+ end
69
+ end
70
+
71
+ describe 'with on_set' do
72
+ it "is used when storing normally" do
73
+ User.new(:product_ids => ['1','2','2']).product_ids.should == [1,2]
74
+ end
75
+
76
+ it "is used when storing through accessor" do
77
+ User.new(:product_ids_as_text => '1,2,2').product_ids.should == [1,2]
78
+ end
79
+ end
80
+
81
+ it "has a VERSION" do
82
+ ARSerializedArray::VERSION.should =~ /^\d+\.\d+\.\d+$/
83
+ end
84
+ end
@@ -0,0 +1,28 @@
1
+ # connect
2
+ ActiveRecord::Base.establish_connection(
3
+ :adapter => "sqlite3",
4
+ :database => ":memory:"
5
+ )
6
+
7
+ # create tables
8
+ ActiveRecord::Schema.define(:version => 1) do
9
+ create_table :users do |t|
10
+ t.string :product_ids
11
+ end
12
+ end
13
+
14
+ # create models
15
+ class User < ActiveRecord::Base
16
+ serialized_array :product_ids, :accessor => :product_ids_as_text, :on_set=>lambda{|x| x.map(&:to_i).uniq}
17
+ end
18
+
19
+ class UserWithAccessor < ActiveRecord::Base
20
+ self.table_name = 'users'
21
+ serialized_array :product_ids, :accessor => :product_ids_as_text
22
+ end
23
+
24
+
25
+ class UserPlain < ActiveRecord::Base
26
+ self.table_name = 'users'
27
+ serialized_array :product_ids
28
+ end
@@ -1,2 +1,4 @@
1
- $LOAD_PATH << 'lib'
2
- require 'i18n_data'
1
+ require 'rubygems'
2
+ $LOAD_PATH << "lib"
3
+ require "init"
4
+ require "spec/setup_test_model"
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_serialized_array
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ hash: 19
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Michael Grosser
@@ -9,226 +15,76 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-11-16 00:00:00 +01:00
18
+ date: 2011-01-17 00:00:00 +01:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
- name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ name: activerecord
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  description:
26
36
  email: grosser.michael@gmail.com
27
37
  executables: []
28
38
 
29
39
  extensions: []
30
40
 
31
- extra_rdoc_files:
32
- - README.markdown
41
+ extra_rdoc_files: []
42
+
33
43
  files:
34
- - .gitignore
35
- - CHANGELOG
36
- - README.markdown
37
44
  - Rakefile
45
+ - Readme.md
38
46
  - VERSION
39
- - cache/file_data_provider/countries-AF.txt
40
- - cache/file_data_provider/countries-AM.txt
41
- - cache/file_data_provider/countries-AR.txt
42
- - cache/file_data_provider/countries-AZ.txt
43
- - cache/file_data_provider/countries-BE.txt
44
- - cache/file_data_provider/countries-BG.txt
45
- - cache/file_data_provider/countries-BN.txt
46
- - cache/file_data_provider/countries-BR.txt
47
- - cache/file_data_provider/countries-BS.txt
48
- - cache/file_data_provider/countries-CA.txt
49
- - cache/file_data_provider/countries-CS.txt
50
- - cache/file_data_provider/countries-CY.txt
51
- - cache/file_data_provider/countries-DA.txt
52
- - cache/file_data_provider/countries-DE.txt
53
- - cache/file_data_provider/countries-DZ.txt
54
- - cache/file_data_provider/countries-EL.txt
55
- - cache/file_data_provider/countries-EN.txt
56
- - cache/file_data_provider/countries-EO.txt
57
- - cache/file_data_provider/countries-ES.txt
58
- - cache/file_data_provider/countries-ET.txt
59
- - cache/file_data_provider/countries-EU.txt
60
- - cache/file_data_provider/countries-FA.txt
61
- - cache/file_data_provider/countries-FI.txt
62
- - cache/file_data_provider/countries-FO.txt
63
- - cache/file_data_provider/countries-FR.txt
64
- - cache/file_data_provider/countries-GA.txt
65
- - cache/file_data_provider/countries-GL.txt
66
- - cache/file_data_provider/countries-GU.txt
67
- - cache/file_data_provider/countries-HE.txt
68
- - cache/file_data_provider/countries-HI.txt
69
- - cache/file_data_provider/countries-HR.txt
70
- - cache/file_data_provider/countries-HU.txt
71
- - cache/file_data_provider/countries-HY.txt
72
- - cache/file_data_provider/countries-ID.txt
73
- - cache/file_data_provider/countries-IS.txt
74
- - cache/file_data_provider/countries-IT.txt
75
- - cache/file_data_provider/countries-JA.txt
76
- - cache/file_data_provider/countries-KA.txt
77
- - cache/file_data_provider/countries-KK.txt
78
- - cache/file_data_provider/countries-KM.txt
79
- - cache/file_data_provider/countries-KN.txt
80
- - cache/file_data_provider/countries-KO.txt
81
- - cache/file_data_provider/countries-KU.txt
82
- - cache/file_data_provider/countries-LT.txt
83
- - cache/file_data_provider/countries-LV.txt
84
- - cache/file_data_provider/countries-MI.txt
85
- - cache/file_data_provider/countries-MK.txt
86
- - cache/file_data_provider/countries-ML.txt
87
- - cache/file_data_provider/countries-MN.txt
88
- - cache/file_data_provider/countries-MR.txt
89
- - cache/file_data_provider/countries-MS.txt
90
- - cache/file_data_provider/countries-MT.txt
91
- - cache/file_data_provider/countries-NB.txt
92
- - cache/file_data_provider/countries-NE.txt
93
- - cache/file_data_provider/countries-NL.txt
94
- - cache/file_data_provider/countries-NN.txt
95
- - cache/file_data_provider/countries-OC.txt
96
- - cache/file_data_provider/countries-PA.txt
97
- - cache/file_data_provider/countries-PL.txt
98
- - cache/file_data_provider/countries-PS.txt
99
- - cache/file_data_provider/countries-PT.txt
100
- - cache/file_data_provider/countries-RO.txt
101
- - cache/file_data_provider/countries-RU.txt
102
- - cache/file_data_provider/countries-RW.txt
103
- - cache/file_data_provider/countries-SK.txt
104
- - cache/file_data_provider/countries-SL.txt
105
- - cache/file_data_provider/countries-SO.txt
106
- - cache/file_data_provider/countries-SQ.txt
107
- - cache/file_data_provider/countries-SR.txt
108
- - cache/file_data_provider/countries-SV.txt
109
- - cache/file_data_provider/countries-SW.txt
110
- - cache/file_data_provider/countries-TA.txt
111
- - cache/file_data_provider/countries-TH.txt
112
- - cache/file_data_provider/countries-TI.txt
113
- - cache/file_data_provider/countries-TK.txt
114
- - cache/file_data_provider/countries-TL.txt
115
- - cache/file_data_provider/countries-TR.txt
116
- - cache/file_data_provider/countries-TT.txt
117
- - cache/file_data_provider/countries-UK.txt
118
- - cache/file_data_provider/countries-VE.txt
119
- - cache/file_data_provider/countries-VI.txt
120
- - cache/file_data_provider/countries-WA.txt
121
- - cache/file_data_provider/countries-WO.txt
122
- - cache/file_data_provider/countries-XH.txt
123
- - cache/file_data_provider/countries-ZU.txt
124
- - cache/file_data_provider/languages-AF.txt
125
- - cache/file_data_provider/languages-AM.txt
126
- - cache/file_data_provider/languages-AR.txt
127
- - cache/file_data_provider/languages-AZ.txt
128
- - cache/file_data_provider/languages-BE.txt
129
- - cache/file_data_provider/languages-BG.txt
130
- - cache/file_data_provider/languages-BR.txt
131
- - cache/file_data_provider/languages-BS.txt
132
- - cache/file_data_provider/languages-CA.txt
133
- - cache/file_data_provider/languages-CS.txt
134
- - cache/file_data_provider/languages-CY.txt
135
- - cache/file_data_provider/languages-DA.txt
136
- - cache/file_data_provider/languages-DE.txt
137
- - cache/file_data_provider/languages-EL.txt
138
- - cache/file_data_provider/languages-EN.txt
139
- - cache/file_data_provider/languages-EO.txt
140
- - cache/file_data_provider/languages-ES.txt
141
- - cache/file_data_provider/languages-ET.txt
142
- - cache/file_data_provider/languages-EU.txt
143
- - cache/file_data_provider/languages-FA.txt
144
- - cache/file_data_provider/languages-FI.txt
145
- - cache/file_data_provider/languages-FR.txt
146
- - cache/file_data_provider/languages-GA.txt
147
- - cache/file_data_provider/languages-GL.txt
148
- - cache/file_data_provider/languages-HE.txt
149
- - cache/file_data_provider/languages-HI.txt
150
- - cache/file_data_provider/languages-HR.txt
151
- - cache/file_data_provider/languages-HU.txt
152
- - cache/file_data_provider/languages-ID.txt
153
- - cache/file_data_provider/languages-IS.txt
154
- - cache/file_data_provider/languages-IT.txt
155
- - cache/file_data_provider/languages-JA.txt
156
- - cache/file_data_provider/languages-KO.txt
157
- - cache/file_data_provider/languages-LT.txt
158
- - cache/file_data_provider/languages-LV.txt
159
- - cache/file_data_provider/languages-MI.txt
160
- - cache/file_data_provider/languages-MK.txt
161
- - cache/file_data_provider/languages-MN.txt
162
- - cache/file_data_provider/languages-MR.txt
163
- - cache/file_data_provider/languages-MS.txt
164
- - cache/file_data_provider/languages-MT.txt
165
- - cache/file_data_provider/languages-NB.txt
166
- - cache/file_data_provider/languages-NL.txt
167
- - cache/file_data_provider/languages-NN.txt
168
- - cache/file_data_provider/languages-OC.txt
169
- - cache/file_data_provider/languages-PL.txt
170
- - cache/file_data_provider/languages-PS.txt
171
- - cache/file_data_provider/languages-PT.txt
172
- - cache/file_data_provider/languages-RO.txt
173
- - cache/file_data_provider/languages-RU.txt
174
- - cache/file_data_provider/languages-RW.txt
175
- - cache/file_data_provider/languages-SK.txt
176
- - cache/file_data_provider/languages-SL.txt
177
- - cache/file_data_provider/languages-SR.txt
178
- - cache/file_data_provider/languages-SV.txt
179
- - cache/file_data_provider/languages-TA.txt
180
- - cache/file_data_provider/languages-TH.txt
181
- - cache/file_data_provider/languages-TI.txt
182
- - cache/file_data_provider/languages-TR.txt
183
- - cache/file_data_provider/languages-TT.txt
184
- - cache/file_data_provider/languages-UK.txt
185
- - cache/file_data_provider/languages-VE.txt
186
- - cache/file_data_provider/languages-VI.txt
187
- - cache/file_data_provider/languages-WA.txt
188
- - cache/file_data_provider/languages-XH.txt
189
- - cache/file_data_provider/languages-ZU.txt
190
- - example_output/all_names_for_DE.txt
191
- - example_output/all_names_for_FR.txt
192
- - example_output/all_names_for_GB.txt
193
- - example_output/all_names_for_US.txt
194
- - i18n_data.gemspec
195
- - lib/i18n_data.rb
196
- - lib/i18n_data/file_data_provider.rb
197
- - lib/i18n_data/live_data_provider.rb
198
- - spec/i18n_data/file_data_provider_spec.rb
199
- - spec/i18n_data/live_data_provider_spec.rb
200
- - spec/i18n_data_spec.rb
47
+ - ar_serialized_array.gemspec
48
+ - init.rb
49
+ - lib/ar_serialized_array.rb
50
+ - spec/ar_serialized_array_spec.rb
51
+ - spec/setup_test_model.rb
201
52
  - spec/spec_helper.rb
202
53
  has_rdoc: true
203
54
  homepage: http://github.com/grosser/ar_serialized_array
204
55
  licenses: []
205
56
 
206
57
  post_install_message:
207
- rdoc_options:
208
- - --charset=UTF-8
58
+ rdoc_options: []
59
+
209
60
  require_paths:
210
61
  - lib
211
62
  required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
212
64
  requirements:
213
65
  - - ">="
214
66
  - !ruby/object:Gem::Version
67
+ hash: 3
68
+ segments:
69
+ - 0
215
70
  version: "0"
216
- version:
217
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
218
73
  requirements:
219
74
  - - ">="
220
75
  - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
221
79
  version: "0"
222
- version:
223
80
  requirements: []
224
81
 
225
82
  rubyforge_project:
226
- rubygems_version: 1.3.5
83
+ rubygems_version: 1.4.2
227
84
  signing_key:
228
85
  specification_version: 3
229
- summary: country/language names and 2-letter-code pairs, in 85 languages
86
+ summary: Serialize an array in a column, [] when no set, xx_as_text accessors and more.
230
87
  test_files:
88
+ - spec/ar_serialized_array_spec.rb
89
+ - spec/setup_test_model.rb
231
90
  - spec/spec_helper.rb
232
- - spec/i18n_data/file_data_provider_spec.rb
233
- - spec/i18n_data/live_data_provider_spec.rb
234
- - spec/i18n_data_spec.rb