symbolize 4.1.0 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +16 -11
- data/Rakefile +5 -2
- data/lib/symbolize/active_record.rb +9 -10
- data/lib/symbolize/mongoid.rb +14 -13
- data/lib/symbolize/version.rb +1 -1
- data/spec/locales/en.yml +10 -11
- data/spec/locales/pt.yml +20 -24
- data/spec/spec_helper_ar.rb +0 -1
- data/spec/spec_helper_mongoid.rb +2 -2
- data/spec/symbolize/active_record_spec.rb +42 -0
- data/spec/symbolize/mongoid_spec.rb +99 -24
- metadata +17 -19
- data/spec/support/ar_models.rb +0 -41
- data/spec/support/mongoid_models.rb +0 -64
data/README.rdoc
CHANGED
@@ -66,7 +66,8 @@ Other examples:
|
|
66
66
|
symbolize :browser, :in => [:firefox, :opera], :i18n => false, :methods => true
|
67
67
|
|
68
68
|
# Scopes
|
69
|
-
symbolize :angry, :in => [true, false], :scopes => true
|
69
|
+
symbolize :angry, :in => [true, false], :scopes => true # AR
|
70
|
+
symbolize :angry, :type => Boolean, :scopes => true # Mongoid
|
70
71
|
|
71
72
|
# Don`t validate
|
72
73
|
symbolize :lang, :in => [:ruby, :js, :c, :erlang], :validate => false
|
@@ -101,9 +102,14 @@ In our User example, browser has this option, so you can do:
|
|
101
102
|
|
102
103
|
=== Booleans
|
103
104
|
|
104
|
-
Its possible to use boolean fields also.
|
105
|
+
Its possible to use boolean fields also. Looks better in Mongoid.
|
106
|
+
|
107
|
+
# ActiveRecord
|
105
108
|
symbolize :switch, :in => [true, false]
|
106
109
|
|
110
|
+
# Mongoid
|
111
|
+
symbolize :switch, :type => Boolean
|
112
|
+
|
107
113
|
...
|
108
114
|
switch:
|
109
115
|
"true": On
|
@@ -118,16 +124,15 @@ If you don`t provide a hash with values, it will try i18n:
|
|
118
124
|
activerecord:
|
119
125
|
or
|
120
126
|
mongoid:
|
121
|
-
|
127
|
+
symbolizes:
|
122
128
|
user:
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
male: Boy
|
129
|
+
gui:
|
130
|
+
gnome: Gnome Desktop Enviroment
|
131
|
+
kde: K Desktop Enviroment
|
132
|
+
xfce: XFCE4
|
133
|
+
gender:
|
134
|
+
female: Girl
|
135
|
+
male: Boy
|
131
136
|
|
132
137
|
|
133
138
|
You can skip i18n lookup with :i18n => false
|
data/Rakefile
CHANGED
@@ -11,16 +11,19 @@ desc "Builds the gem"
|
|
11
11
|
task :gem => :build
|
12
12
|
task :build do
|
13
13
|
system "gem build symbolize.gemspec"
|
14
|
+
Dir.mkdir("pkg") unless Dir.exists?("pkg")
|
15
|
+
system "mv symbolize-#{Symbolize::VERSION}.gem pkg/"
|
14
16
|
end
|
15
17
|
|
16
18
|
task :install => :build do
|
17
|
-
system "sudo gem install symbolize-#{Symbolize::VERSION}.gem"
|
19
|
+
system "sudo gem install pkg/symbolize-#{Symbolize::VERSION}.gem"
|
18
20
|
end
|
19
21
|
|
22
|
+
desc "Release the gem - Gemcutter"
|
20
23
|
task :release => :build do
|
21
24
|
system "git tag -a v#{Symbolize::VERSION} -m 'Tagging #{Symbolize::VERSION}'"
|
22
25
|
system "git push --tags"
|
23
|
-
system "gem push symbolize-#{Symbolize::VERSION}.gem"
|
26
|
+
system "gem push pkg/symbolize-#{Symbolize::VERSION}.gem"
|
24
27
|
end
|
25
28
|
|
26
29
|
|
@@ -24,12 +24,11 @@ module Symbolize
|
|
24
24
|
# It will automattically lookup for i18n:
|
25
25
|
#
|
26
26
|
# activerecord:
|
27
|
-
#
|
27
|
+
# symbolizes:
|
28
28
|
# user:
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
# male: Boy
|
29
|
+
# gender:
|
30
|
+
# female: Girl
|
31
|
+
# male: Boy
|
33
32
|
#
|
34
33
|
# You can skip i18n lookup with :i18n => false
|
35
34
|
# symbolize :gender, :in => [:female, :male], :i18n => false
|
@@ -56,7 +55,7 @@ module Symbolize
|
|
56
55
|
scopes = configuration.delete :scopes
|
57
56
|
methods = configuration.delete :methods
|
58
57
|
capitalize = configuration.delete :capitalize
|
59
|
-
validation = configuration.delete(:
|
58
|
+
validation = configuration.delete(:validate) != false
|
60
59
|
default_option = configuration.delete :default
|
61
60
|
|
62
61
|
unless enum.nil?
|
@@ -80,7 +79,7 @@ module Symbolize
|
|
80
79
|
const_set const.upcase, values unless const_defined? const.upcase
|
81
80
|
ev = if i18n
|
82
81
|
# This one is a dropdown helper
|
83
|
-
code = "#{const.upcase}.map { |k,v| [I18n.translate(\"activerecord.
|
82
|
+
code = "#{const.upcase}.map { |k,v| [I18n.translate(\"activerecord.symbolizes.\#{ActiveSupport::Inflector.underscore(self.model_name)}.#{attr_name}.\#{k}\"), k] }" #.to_sym rescue nila
|
84
83
|
"def self.get_#{const}; #{code}; end;"
|
85
84
|
else
|
86
85
|
"def self.get_#{const}; #{const.upcase}.map(&:reverse); end"
|
@@ -109,8 +108,8 @@ module Symbolize
|
|
109
108
|
end
|
110
109
|
|
111
110
|
if validation
|
112
|
-
validation = "
|
113
|
-
validation += ", :in => #{values.keys.inspect}"
|
111
|
+
validation = "validates :#{attr_names.join(', :')}"
|
112
|
+
validation += ", :inclusion => { :in => #{values.keys.inspect} }"
|
114
113
|
validation += ", :allow_nil => true" if configuration[:allow_nil]
|
115
114
|
validation += ", :allow_blank => true" if configuration[:allow_blank]
|
116
115
|
class_eval validation
|
@@ -158,7 +157,7 @@ module Symbolize
|
|
158
157
|
def read_i18n_attribute attr_name
|
159
158
|
attr = read_attribute(attr_name)
|
160
159
|
return nil if attr.nil?
|
161
|
-
I18n.translate("activerecord.
|
160
|
+
I18n.translate("activerecord.symbolizes.#{ActiveSupport::Inflector.underscore(self.class.model_name)}.#{attr_name}.#{attr}") #.to_sym rescue nila
|
162
161
|
end
|
163
162
|
|
164
163
|
# Write a symbolized value. Watch out for booleans.
|
data/lib/symbolize/mongoid.rb
CHANGED
@@ -27,12 +27,11 @@ module Mongoid
|
|
27
27
|
# It will automattically lookup for i18n:
|
28
28
|
#
|
29
29
|
# models:
|
30
|
-
#
|
30
|
+
# symbolizes:
|
31
31
|
# user:
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
# male: Boy
|
32
|
+
# gender:
|
33
|
+
# female: Girl
|
34
|
+
# male: Boy
|
36
35
|
#
|
37
36
|
# You can skip i18n lookup with :i18n => false
|
38
37
|
# symbolize :gender, :in => [:female, :male], :i18n => false
|
@@ -55,12 +54,14 @@ module Mongoid
|
|
55
54
|
configuration.update(attr_names.extract_options!)
|
56
55
|
|
57
56
|
enum = configuration[:in] || configuration[:within]
|
58
|
-
i18n = configuration.delete(:i18n).nil? && !enum.instance_of?(Hash)
|
57
|
+
i18n = configuration.delete(:i18n).nil? && !enum.instance_of?(Hash) ? true : configuration[:i18n]
|
59
58
|
scopes = configuration.delete :scopes
|
60
59
|
methods = configuration.delete :methods
|
61
|
-
capitalize
|
62
|
-
validation
|
60
|
+
capitalize = configuration.delete :capitalize
|
61
|
+
validation = configuration.delete(:validate) != false
|
62
|
+
field_type = configuration.delete :type
|
63
63
|
default_opt = configuration.delete :default
|
64
|
+
enum = [true, false] if field_type == Boolean
|
64
65
|
|
65
66
|
unless enum.nil?
|
66
67
|
|
@@ -70,7 +71,7 @@ module Mongoid
|
|
70
71
|
#
|
71
72
|
# Builds Mongoid 'field :name, type: type, :default'
|
72
73
|
#
|
73
|
-
mongo_opts = ", :type => Symbol"
|
74
|
+
mongo_opts = ", :type => #{field_type || 'Symbol'}"
|
74
75
|
mongo_opts += ", :default => :#{default_opt}" if default_opt
|
75
76
|
class_eval("field :#{attr_name} #{mongo_opts}")
|
76
77
|
|
@@ -89,7 +90,7 @@ module Mongoid
|
|
89
90
|
const_set const.upcase, values unless const_defined? const.upcase
|
90
91
|
ev = if i18n
|
91
92
|
# This one is a dropdown helper
|
92
|
-
code = "#{const.upcase}.map { |k,v| [I18n.t(\"mongoid.
|
93
|
+
code = "#{const.upcase}.map { |k,v| [I18n.t(\"mongoid.symbolizes.\#{ActiveSupport::Inflector.underscore(self.model_name)}.#{attr_name}.\#{k}\"), k] }" #.to_sym rescue nila
|
93
94
|
"def self.get_#{const}; #{code}; end;"
|
94
95
|
else
|
95
96
|
"def self.get_#{const}; #{const.upcase}.map(&:reverse); end"
|
@@ -114,8 +115,8 @@ module Mongoid
|
|
114
115
|
end
|
115
116
|
|
116
117
|
if validation
|
117
|
-
validation = "
|
118
|
-
validation += ", :in => #{values.keys.inspect}"
|
118
|
+
validation = "validates :#{attr_names.join(', :')}"
|
119
|
+
validation += ", :inclusion => { :in => #{values.keys.inspect} }"
|
119
120
|
validation += ", :allow_nil => true" if configuration[:allow_nil]
|
120
121
|
validation += ", :allow_blank => true" if configuration[:allow_blank]
|
121
122
|
class_eval validation
|
@@ -130,7 +131,7 @@ module Mongoid
|
|
130
131
|
if i18n # memoize call to translate... good idea?
|
131
132
|
define_method "#{attr_name}_text" do
|
132
133
|
return nil unless attr = read_attribute(attr_name)
|
133
|
-
I18n.t("mongoid.
|
134
|
+
I18n.t("mongoid.symbolizes.#{ActiveSupport::Inflector.underscore(self.class.model_name)}.#{attr_name}.#{attr}")
|
134
135
|
end
|
135
136
|
elsif enum
|
136
137
|
class_eval("def #{attr_name}_text; #{attr_name.to_s.upcase}_VALUES[#{attr_name}]; end")
|
data/lib/symbolize/version.rb
CHANGED
data/spec/locales/en.yml
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
en:
|
2
2
|
activerecord:
|
3
3
|
attributes:
|
4
|
+
symbolizes:
|
4
5
|
user:
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
"false": Male
|
6
|
+
language:
|
7
|
+
pt: Portuguese
|
8
|
+
en: English
|
9
|
+
sex:
|
10
|
+
"true": Female
|
11
|
+
"false": Male
|
12
12
|
user_skill:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
agility: Agility
|
13
|
+
kind:
|
14
|
+
magic: Magic
|
15
|
+
agility: Agility
|
data/spec/locales/pt.yml
CHANGED
@@ -1,34 +1,30 @@
|
|
1
1
|
pt:
|
2
2
|
activerecord:
|
3
|
-
|
3
|
+
symbolizes:
|
4
4
|
user:
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
"false": Masculino
|
5
|
+
language:
|
6
|
+
pt: Português
|
7
|
+
en: Inglês
|
8
|
+
sex:
|
9
|
+
"true": Feminino
|
10
|
+
"false": Masculino
|
12
11
|
user_skill:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
agility: Agilidade
|
12
|
+
kind:
|
13
|
+
magic: Mágica
|
14
|
+
agility: Agilidade
|
17
15
|
errors:
|
18
16
|
messages: &errors_messages
|
19
17
|
record_invalid: Inválido
|
20
18
|
mongoid:
|
21
|
-
|
19
|
+
symbolizes:
|
22
20
|
person:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
"false": Masculino
|
21
|
+
language:
|
22
|
+
pt: Português
|
23
|
+
en: Inglês
|
24
|
+
sex:
|
25
|
+
"true": Feminino
|
26
|
+
"false": Masculino
|
30
27
|
person_skill:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
agility: Agilidade
|
28
|
+
kind:
|
29
|
+
magic: Mágica
|
30
|
+
agility: Agilidade
|
data/spec/spec_helper_ar.rb
CHANGED
data/spec/spec_helper_mongoid.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
require 'mongoid'
|
3
|
+
require 'mongoid/version'
|
3
4
|
|
4
5
|
Mongoid.configure do |config|
|
5
6
|
config.master = Mongo::Connection.new.db("symbolize_test")
|
@@ -11,7 +12,6 @@ Mongoid.database.collections.each do |collection|
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
puts "Running Mongoid
|
15
|
+
puts "Running Mongoid #{Mongoid::VERSION}"
|
15
16
|
|
16
17
|
require 'symbolize/mongoid'
|
17
|
-
require 'support/mongoid_models'
|
@@ -1,6 +1,48 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require File.dirname(__FILE__) + '/../spec_helper_ar'
|
3
3
|
|
4
|
+
#
|
5
|
+
# Test model
|
6
|
+
class User < ActiveRecord::Base
|
7
|
+
symbolize :other
|
8
|
+
symbolize :language, :in => [:pt, :en]
|
9
|
+
symbolize :sex, :in => [true, false], :scopes => true
|
10
|
+
symbolize :status , :in => [:active, :inactive], :i18n => false, :capitalize => true, :scopes => true, :methods => true
|
11
|
+
symbolize :so, :allow_blank => true, :in => {
|
12
|
+
:linux => 'Linux',
|
13
|
+
:mac => 'Mac OS X',
|
14
|
+
:win => 'Videogame'
|
15
|
+
}, :scopes => true
|
16
|
+
symbolize :gui, :allow_blank => true, :in => [:cocoa, :qt, :gtk], :i18n => false
|
17
|
+
symbolize :karma, :in => %w{ good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
|
18
|
+
symbolize :cool, :in => [true, false], :scopes => true
|
19
|
+
|
20
|
+
has_many :extras, :dependent => :destroy, :class_name => "UserExtra"
|
21
|
+
has_many :access, :dependent => :destroy, :class_name => "UserAccess"
|
22
|
+
end
|
23
|
+
|
24
|
+
class UserSkill < ActiveRecord::Base
|
25
|
+
symbolize :kind, :in => [:agility, :magic]
|
26
|
+
end
|
27
|
+
|
28
|
+
class UserExtra < ActiveRecord::Base
|
29
|
+
symbolize :key, :in => [:one, :another]
|
30
|
+
end
|
31
|
+
|
32
|
+
class Permission < ActiveRecord::Base
|
33
|
+
validates_presence_of :name
|
34
|
+
symbolize :kind, :in => [:temp, :perm], :default => :perm
|
35
|
+
symbolize :lvl, :in => (1..9).to_a, :i18n => false#, :default => 1
|
36
|
+
end
|
37
|
+
|
38
|
+
# Make with_scope public-usable for testing
|
39
|
+
#if ActiveRecord::VERSION::MAJOR < 3
|
40
|
+
class << ActiveRecord::Base
|
41
|
+
public :with_scope
|
42
|
+
end
|
43
|
+
#end
|
44
|
+
|
45
|
+
|
4
46
|
describe "Symbolize" do
|
5
47
|
|
6
48
|
it "should respond to symbolize" do
|
@@ -1,6 +1,73 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'spec_helper_mongoid'
|
3
3
|
|
4
|
+
#
|
5
|
+
# Test models
|
6
|
+
class Person
|
7
|
+
include Mongoid::Document
|
8
|
+
include Mongoid::Symbolize
|
9
|
+
include Mongoid::Timestamps
|
10
|
+
|
11
|
+
symbolize :other, :i18n => false
|
12
|
+
symbolize :language, :in => [:pt, :en]
|
13
|
+
symbolize :sex, :type => Boolean, :scopes => true
|
14
|
+
symbolize :status , :in => [:active, :inactive], :i18n => false, :capitalize => true, :scopes => true
|
15
|
+
symbolize :so, :allow_blank => true, :in => {
|
16
|
+
:linux => 'Linux',
|
17
|
+
:mac => 'Mac OS X',
|
18
|
+
:win => 'Videogame'
|
19
|
+
}, :scopes => true
|
20
|
+
symbolize :gui, :allow_blank => true, :in => [:cocoa, :qt, :gtk], :i18n => false
|
21
|
+
symbolize :karma, :in => %w{good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
|
22
|
+
symbolize :planet, :in => %w{earth centauri tatooine}, :default => :earth
|
23
|
+
# symbolize :cool, :in => [true, false], :scopes => true
|
24
|
+
|
25
|
+
symbolize :year, :in => Time.now.year.downto(1980).to_a, :validate => false
|
26
|
+
|
27
|
+
has_many :rights, :dependent => :destroy
|
28
|
+
has_many :extras, :dependent => :destroy, :class_name => "PersonExtra"
|
29
|
+
embeds_many :skills, :class_name => "PersonSkill"
|
30
|
+
end
|
31
|
+
|
32
|
+
class PersonSkill
|
33
|
+
include Mongoid::Document
|
34
|
+
include Mongoid::Symbolize
|
35
|
+
embedded_in :person, :inverse_of => :skills
|
36
|
+
|
37
|
+
symbolize :kind, :in => [:agility, :magic]
|
38
|
+
end
|
39
|
+
|
40
|
+
class PersonExtra
|
41
|
+
include Mongoid::Document
|
42
|
+
include Mongoid::Symbolize
|
43
|
+
belongs_to :person, :inverse_of => :extras
|
44
|
+
|
45
|
+
symbolize :key, :in => [:one, :another]
|
46
|
+
end
|
47
|
+
|
48
|
+
class Right
|
49
|
+
include Mongoid::Document
|
50
|
+
include Mongoid::Symbolize
|
51
|
+
|
52
|
+
validates :name, :presence => true
|
53
|
+
symbolize :kind, :in => [:temp, :perm], :default => :perm
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
class Project
|
58
|
+
include Mongoid::Document
|
59
|
+
|
60
|
+
field :name
|
61
|
+
field :state, :default => 'active'
|
62
|
+
|
63
|
+
# Comment 1 line and it works, both fails:
|
64
|
+
default_scope where(:state => 'active')
|
65
|
+
# scope :inactive, any_in(:state => [:done, :wip])
|
66
|
+
scope :dead, all_of(:state => :wip, :name => "zim")
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
4
71
|
describe "Symbolize" do
|
5
72
|
|
6
73
|
it "should be a module" do
|
@@ -8,9 +75,9 @@ describe "Symbolize" do
|
|
8
75
|
end
|
9
76
|
|
10
77
|
it "should instantiate" do
|
11
|
-
anna = Person.create(:name => 'Anna', :so => :mac, :gui => :cocoa, :language => :pt, :status => :active)
|
12
|
-
anna.should be_valid
|
13
|
-
|
78
|
+
anna = Person.create(:name => 'Anna', :so => :mac, :gui => :cocoa, :language => :pt, :status => :active, :sex => true)
|
79
|
+
#anna.should be_valid
|
80
|
+
anna.errors.messages.should eql({})
|
14
81
|
end
|
15
82
|
|
16
83
|
describe "Person Instantiated" do
|
@@ -38,19 +105,19 @@ describe "Symbolize" do
|
|
38
105
|
# # person.read_attribute(:status).should be_nil
|
39
106
|
# end
|
40
107
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
108
|
+
it "should acts nice with nil" do
|
109
|
+
person.karma = nil
|
110
|
+
person.karma.should be_nil
|
111
|
+
person.save
|
112
|
+
person.read_attribute(:karma).should be_nil
|
113
|
+
end
|
47
114
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
115
|
+
it "should acts nice with blank" do
|
116
|
+
person.so = ""
|
117
|
+
person.so.should be_blank
|
118
|
+
person.save
|
119
|
+
person.read_attribute(:so).should be_blank
|
120
|
+
end
|
54
121
|
|
55
122
|
it "should not validates other" do
|
56
123
|
person.other = nil
|
@@ -64,6 +131,14 @@ describe "Symbolize" do
|
|
64
131
|
Person::STATUS_VALUES.should eql({ inactive: "Inactive", active: "Active"})
|
65
132
|
end
|
66
133
|
|
134
|
+
it "should have a human _text method" do
|
135
|
+
person.status_text.should eql("Active")
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should work nice with i18n" do
|
139
|
+
person.language_text.should eql("Português")
|
140
|
+
end
|
141
|
+
|
67
142
|
it "test_symbolize_humanize" do
|
68
143
|
person.status_text.should eql("Active")
|
69
144
|
end
|
@@ -152,17 +227,17 @@ describe "Symbolize" do
|
|
152
227
|
Person::LANGUAGE_VALUES.should eql({:pt=>"pt", :en=>"en"})
|
153
228
|
end
|
154
229
|
|
155
|
-
|
156
|
-
|
157
|
-
|
230
|
+
it "should test boolean" do
|
231
|
+
person.sex_text.should eql("Feminino")
|
232
|
+
end
|
158
233
|
|
159
|
-
|
160
|
-
|
161
|
-
|
234
|
+
it "should get the correct values" do
|
235
|
+
Person.get_sex_values.should eql([["Feminino", true],["Masculino", false]])
|
236
|
+
end
|
162
237
|
|
163
|
-
|
164
|
-
|
165
|
-
|
238
|
+
it "should get the correct values" do
|
239
|
+
Person::SEX_VALUES.should eql({true=>"true", false=>"false"})
|
240
|
+
end
|
166
241
|
|
167
242
|
it "should translate a multiword classname" do
|
168
243
|
skill = PersonSkill.new(:kind => :magic)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symbolize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n
|
16
|
-
requirement: &
|
16
|
+
requirement: &16099800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.6.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *16099800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &16097600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.8.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *16097600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mongoid
|
38
|
-
requirement: &
|
38
|
+
requirement: &16110420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.3.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *16110420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bson_ext
|
49
|
-
requirement: &
|
49
|
+
requirement: &16107460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.5.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *16107460
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sqlite3
|
60
|
-
requirement: &
|
60
|
+
requirement: &16106020 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.3.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *16106020
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pg
|
71
|
-
requirement: &
|
71
|
+
requirement: &16121220 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.12.2
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *16121220
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activerecord
|
82
|
-
requirement: &
|
82
|
+
requirement: &16119380 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 3.1.0
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *16119380
|
91
91
|
description: ActiveRecord/Mongoid enums with i18n
|
92
92
|
email: x@nofxx.com
|
93
93
|
executables: []
|
@@ -99,8 +99,6 @@ files:
|
|
99
99
|
- lib/symbolize/version.rb
|
100
100
|
- lib/symbolize/active_record.rb
|
101
101
|
- lib/symbolize/railtie.rb
|
102
|
-
- spec/support/ar_models.rb
|
103
|
-
- spec/support/mongoid_models.rb
|
104
102
|
- spec/spec_helper_ar.rb
|
105
103
|
- spec/locales/en.yml
|
106
104
|
- spec/locales/pt.yml
|
@@ -126,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
124
|
version: '0'
|
127
125
|
segments:
|
128
126
|
- 0
|
129
|
-
hash:
|
127
|
+
hash: 4056837590363536346
|
130
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
129
|
none: false
|
132
130
|
requirements:
|
data/spec/support/ar_models.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Test model
|
4
|
-
class User < ActiveRecord::Base
|
5
|
-
symbolize :other
|
6
|
-
symbolize :language, :in => [:pt, :en]
|
7
|
-
symbolize :sex, :in => [true, false], :scopes => true
|
8
|
-
symbolize :status , :in => [:active, :inactive], :i18n => false, :capitalize => true, :scopes => true, :methods => true
|
9
|
-
symbolize :so, :allow_blank => true, :in => {
|
10
|
-
:linux => 'Linux',
|
11
|
-
:mac => 'Mac OS X',
|
12
|
-
:win => 'Videogame'
|
13
|
-
}, :scopes => true
|
14
|
-
symbolize :gui, :allow_blank => true, :in => [:cocoa, :qt, :gtk], :i18n => false
|
15
|
-
symbolize :karma, :in => %w{ good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
|
16
|
-
symbolize :cool, :in => [true, false], :scopes => true
|
17
|
-
|
18
|
-
has_many :extras, :dependent => :destroy, :class_name => "UserExtra"
|
19
|
-
has_many :access, :dependent => :destroy, :class_name => "UserAccess"
|
20
|
-
end
|
21
|
-
|
22
|
-
class UserSkill < ActiveRecord::Base
|
23
|
-
symbolize :kind, :in => [:agility, :magic]
|
24
|
-
end
|
25
|
-
|
26
|
-
class UserExtra < ActiveRecord::Base
|
27
|
-
symbolize :key, :in => [:one, :another]
|
28
|
-
end
|
29
|
-
|
30
|
-
class Permission < ActiveRecord::Base
|
31
|
-
validates_presence_of :name
|
32
|
-
symbolize :kind, :in => [:temp, :perm], :default => :perm
|
33
|
-
symbolize :lvl, :in => (1..9).to_a, :i18n => false#, :default => 1
|
34
|
-
end
|
35
|
-
|
36
|
-
# Make with_scope public-usable for testing
|
37
|
-
#if ActiveRecord::VERSION::MAJOR < 3
|
38
|
-
class << ActiveRecord::Base
|
39
|
-
public :with_scope
|
40
|
-
end
|
41
|
-
#end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Test model
|
4
|
-
class Person
|
5
|
-
include Mongoid::Document
|
6
|
-
include Mongoid::Symbolize
|
7
|
-
include Mongoid::Timestamps
|
8
|
-
|
9
|
-
symbolize :other
|
10
|
-
symbolize :language, :in => [:pt, :en]
|
11
|
-
# symbolize :sex, :in => [true, false], :scopes => true
|
12
|
-
symbolize :status , :in => [:active, :inactive], :i18n => false, :capitalize => true, :scopes => true
|
13
|
-
symbolize :so, :allow_blank => true, :in => {
|
14
|
-
:linux => 'Linux',
|
15
|
-
:mac => 'Mac OS X',
|
16
|
-
:win => 'Videogame'
|
17
|
-
}, :scopes => true
|
18
|
-
symbolize :gui, :allow_blank => true, :in => [:cocoa, :qt, :gtk], :i18n => false
|
19
|
-
symbolize :karma, :in => %w{good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
|
20
|
-
symbolize :planet, :in => %w{earth centauri tatooine}, :default => :earth
|
21
|
-
# symbolize :cool, :in => [true, false], :scopes => true
|
22
|
-
|
23
|
-
has_many :rights, :dependent => :destroy
|
24
|
-
has_many :extras, :dependent => :destroy, :class_name => "PersonExtra"
|
25
|
-
embeds_many :skills, :class_name => "PersonSkill"
|
26
|
-
end
|
27
|
-
|
28
|
-
class PersonSkill
|
29
|
-
include Mongoid::Document
|
30
|
-
include Mongoid::Symbolize
|
31
|
-
embedded_in :person, :inverse_of => :skills
|
32
|
-
|
33
|
-
symbolize :kind, :in => [:agility, :magic]
|
34
|
-
end
|
35
|
-
|
36
|
-
class PersonExtra
|
37
|
-
include Mongoid::Document
|
38
|
-
include Mongoid::Symbolize
|
39
|
-
belongs_to :person, :inverse_of => :extras
|
40
|
-
|
41
|
-
symbolize :key, :in => [:one, :another]
|
42
|
-
end
|
43
|
-
|
44
|
-
class Right
|
45
|
-
include Mongoid::Document
|
46
|
-
include Mongoid::Symbolize
|
47
|
-
|
48
|
-
validates_presence_of :name
|
49
|
-
symbolize :kind, :in => [:temp, :perm], :default => :perm
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
class Project
|
54
|
-
include Mongoid::Document
|
55
|
-
|
56
|
-
field :name
|
57
|
-
field :state, :default => 'active'
|
58
|
-
|
59
|
-
# Comment 1 line and it works, both fails:
|
60
|
-
default_scope where(:state => 'active')
|
61
|
-
# scope :inactive, any_in(:state => [:done, :wip])
|
62
|
-
scope :dead, all_of(:state => :wip, :name => "zim")
|
63
|
-
|
64
|
-
end
|