real_settings 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +1 -0
 - data/CHANGELOG.md +18 -0
 - data/README.md +48 -4
 - data/Rakefile +6 -0
 - data/lib/generators/real_settings/install/templates/real_settings.rb +6 -2
 - data/lib/real_settings.rb +2 -0
 - data/lib/real_settings/fake_column.rb +23 -0
 - data/lib/real_settings/settings.rb +39 -6
 - data/lib/real_settings/smart_convert.rb +27 -0
 - data/lib/real_settings/version.rb +1 -1
 - data/real_settings.gemspec +6 -1
 - data/spec/real_settings_spec.rb +85 -6
 - data/spec/spec_helper.rb +1 -1
 - metadata +75 -7
 
    
        data/.rspec
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --color --format documentation
         
     | 
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ### 0.0.1
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Initial release
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ### 0.0.2
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Fix bugs
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### 0.0.3
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            * Fix bugs
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### 0.0.4
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            * Add 'db_config_default' config method
         
     | 
| 
      
 16 
     | 
    
         
            +
            * change 'config' to 'file_config' for file config
         
     | 
| 
      
 17 
     | 
    
         
            +
            * Add smart convert setting type
         
     | 
| 
      
 18 
     | 
    
         
            +
            * Add column aut detect for simple_form
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # RealSettings
         
     | 
| 
      
 1 
     | 
    
         
            +
            # RealSettings [](http://travis-ci.org/Macrow/real_settings)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            RealSettings is a real settings tool for Rails3.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -30,17 +30,23 @@ Run install command and migrate database: 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            ## Configuration in config/initializers/real_settings.rb
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            Caution: settings in 'file_config' can't store in database.
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       33 
35 
     | 
    
         
             
            ```ruby
         
     | 
| 
       34 
     | 
    
         
            -
            Settings. 
     | 
| 
      
 36 
     | 
    
         
            +
            Settings.file_config do |settings|
         
     | 
| 
       35 
37 
     | 
    
         
             
              settings.app_name = "My Application Name"
         
     | 
| 
       36 
38 
     | 
    
         
             
              settings.app_url = "http://www.my-application.com"
         
     | 
| 
       37 
39 
     | 
    
         
             
              settings.default_meta_keywords = "default meta keywords"
         
     | 
| 
       38 
40 
     | 
    
         
             
              settings.default_meta_description = "default meta description"
         
     | 
| 
       39 
41 
     | 
    
         
             
              # add some settings here
         
     | 
| 
       40 
42 
     | 
    
         
             
            end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            Settings.db_config_default do |settings|
         
     | 
| 
      
 45 
     | 
    
         
            +
              settings.paginate_count = 10
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
       41 
47 
     | 
    
         
             
            ```
         
     | 
| 
       42 
48 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            ## Caution: settings in config/initializers/real_settings.rb can't store in database.
         
     | 
| 
      
 49 
     | 
    
         
            +
            ## Caution: settings set by 'file_config' in config/initializers/real_settings.rb can't store in database.
         
     | 
| 
       44 
50 
     | 
    
         | 
| 
       45 
51 
     | 
    
         
             
            ```ruby
         
     | 
| 
       46 
52 
     | 
    
         
             
            Settings.app_name # => "real_settings"
         
     | 
| 
         @@ -48,6 +54,11 @@ Settings.app_name = "new app name" 
     | 
|
| 
       48 
54 
     | 
    
         
             
            Settings.app_name # => "new app name"
         
     | 
| 
       49 
55 
     | 
    
         
             
            Settings.save!
         
     | 
| 
       50 
56 
     | 
    
         
             
            Settings.app_name # => "real_settings"
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            Settings.paginate_count # => 10
         
     | 
| 
      
 59 
     | 
    
         
            +
            Settings.paginate_count = 20
         
     | 
| 
      
 60 
     | 
    
         
            +
            Settings.save!
         
     | 
| 
      
 61 
     | 
    
         
            +
            Setttings.paginate_count # => 20
         
     | 
| 
       51 
62 
     | 
    
         
             
            ```
         
     | 
| 
       52 
63 
     | 
    
         | 
| 
       53 
64 
     | 
    
         
             
            ## Features & Usage
         
     | 
| 
         @@ -77,6 +88,27 @@ Settings.admin_name = "Macrow" 
     | 
|
| 
       77 
88 
     | 
    
         
             
            Settings.save!
         
     | 
| 
       78 
89 
     | 
    
         
             
            ```
         
     | 
| 
       79 
90 
     | 
    
         | 
| 
      
 91 
     | 
    
         
            +
            ### Smart Convert setting type
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 94 
     | 
    
         
            +
            Settings.a = 123
         
     | 
| 
      
 95 
     | 
    
         
            +
            Settings.b = 'string'
         
     | 
| 
      
 96 
     | 
    
         
            +
            Settings.c = [1,2,3]
         
     | 
| 
      
 97 
     | 
    
         
            +
            Settings.d = Time.now
         
     | 
| 
      
 98 
     | 
    
         
            +
            Settings.e = 12.345
         
     | 
| 
      
 99 
     | 
    
         
            +
            Settings.f = false
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            Settings.save!
         
     | 
| 
      
 102 
     | 
    
         
            +
            Settings.reload!
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            Settings.a # 123 # Fixnum
         
     | 
| 
      
 105 
     | 
    
         
            +
            Settings.b # 'string' # String
         
     | 
| 
      
 106 
     | 
    
         
            +
            Settings.c # [1,2,3] # Array
         
     | 
| 
      
 107 
     | 
    
         
            +
            Settings.d # Time.now # Time
         
     | 
| 
      
 108 
     | 
    
         
            +
            Settings.e # 12.345 # Float
         
     | 
| 
      
 109 
     | 
    
         
            +
            Settings.f # false # Boolean
         
     | 
| 
      
 110 
     | 
    
         
            +
            ```
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
       80 
112 
     | 
    
         
             
            ### Support has_settings method
         
     | 
| 
       81 
113 
     | 
    
         | 
| 
       82 
114 
     | 
    
         
             
            ```ruby    
         
     | 
| 
         @@ -147,10 +179,16 @@ form_for Settings, :as => :settings, :url => settings_update_path, :method => :p 
     | 
|
| 
       147 
179 
     | 
    
         
             
              ......
         
     | 
| 
       148 
180 
     | 
    
         
             
            end
         
     | 
| 
       149 
181 
     | 
    
         | 
| 
      
 182 
     | 
    
         
            +
            simple_form_for Settings, :as => :settings, :url => settings_update_path, :method => :put do |f|
         
     | 
| 
      
 183 
     | 
    
         
            +
              f.input :app_name
         
     | 
| 
      
 184 
     | 
    
         
            +
              f.input :app_url
         
     | 
| 
      
 185 
     | 
    
         
            +
              ......
         
     | 
| 
      
 186 
     | 
    
         
            +
            end
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
       150 
188 
     | 
    
         
             
            # Update Action:
         
     | 
| 
       151 
189 
     | 
    
         
             
            Settings.update_settings(params[:settings])
         
     | 
| 
       152 
190 
     | 
    
         
             
            ```
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
       154 
192 
     | 
    
         
             
            ### Editing User's settings
         
     | 
| 
       155 
193 
     | 
    
         | 
| 
       156 
194 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -167,6 +205,12 @@ form_for @user.settings, :as => :settings, :url => user_settings_update_path(@us 
     | 
|
| 
       167 
205 
     | 
    
         
             
              ......
         
     | 
| 
       168 
206 
     | 
    
         
             
            end
         
     | 
| 
       169 
207 
     | 
    
         | 
| 
      
 208 
     | 
    
         
            +
            simple_form_for @user.settings, :as => :settings, :url => user_settings_update_path(@user), :method => :put do |f|
         
     | 
| 
      
 209 
     | 
    
         
            +
              f.input :notebook
         
     | 
| 
      
 210 
     | 
    
         
            +
              f.input :mobile
         
     | 
| 
      
 211 
     | 
    
         
            +
              ......
         
     | 
| 
      
 212 
     | 
    
         
            +
            end
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
       170 
214 
     | 
    
         
             
            # Update Action:
         
     | 
| 
       171 
215 
     | 
    
         
             
            @user = User.find(params[:user_id])
         
     | 
| 
       172 
216 
     | 
    
         
             
            @user.settings.update_settings(params[:settings])
         
     | 
    
        data/Rakefile
    CHANGED
    
    
| 
         @@ -1,6 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Caution: settings in  
     | 
| 
      
 1 
     | 
    
         
            +
            # Caution: settings in 'file_config' can't store in database.
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            Settings. 
     | 
| 
      
 3 
     | 
    
         
            +
            Settings.file_config do |settings|
         
     | 
| 
       4 
4 
     | 
    
         
             
              # settings.app_name = "My Application Name"
         
     | 
| 
       5 
5 
     | 
    
         
             
              # settings.app_url = "http://www.my-application.com"
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            Settings.db_config_default do |settings|
         
     | 
| 
      
 9 
     | 
    
         
            +
              # settings.paginate_count = 10
         
     | 
| 
       6 
10 
     | 
    
         
             
            end
         
     | 
    
        data/lib/real_settings.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Hack for simple_form auto column type detectation
         
     | 
| 
      
 2 
     | 
    
         
            +
            module RealSettings
         
     | 
| 
      
 3 
     | 
    
         
            +
              class FakeColumn
         
     | 
| 
      
 4 
     | 
    
         
            +
                attr_accessor :type, :number
         
     | 
| 
      
 5 
     | 
    
         
            +
                
         
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize(type, number = false)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  self.type = type.downcase.to_sym
         
     | 
| 
      
 8 
     | 
    
         
            +
                  self.number = number
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                def number?
         
     | 
| 
      
 12 
     | 
    
         
            +
                  number
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                
         
     | 
| 
      
 15 
     | 
    
         
            +
                def limit
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if type == 'string'
         
     | 
| 
      
 17 
     | 
    
         
            +
                    255
         
     | 
| 
      
 18 
     | 
    
         
            +
                  else
         
     | 
| 
      
 19 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -4,12 +4,23 @@ class Settings < ActiveRecord::Base 
     | 
|
| 
       4 
4 
     | 
    
         
             
              cattr_accessor :__settings, :__file_settings, :__db_settings, :__temp_settings
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              class << self
         
     | 
| 
       7 
     | 
    
         
            -
                def  
     | 
| 
      
 7 
     | 
    
         
            +
                def file_config
         
     | 
| 
       8 
8 
     | 
    
         
             
                  yield self
         
     | 
| 
       9 
9 
     | 
    
         
             
                  self.__file_settings = __temp_settings
         
     | 
| 
       10 
10 
     | 
    
         
             
                  reload!
         
     | 
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
                def db_config_default
         
     | 
| 
      
 14 
     | 
    
         
            +
                  yield self
         
     | 
| 
      
 15 
     | 
    
         
            +
                  db_default = __temp_settings
         
     | 
| 
      
 16 
     | 
    
         
            +
                  reload!
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.__settings = db_default.merge(__db_settings)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  save!
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                # config method should be deprecated in future version
         
     | 
| 
      
 22 
     | 
    
         
            +
                alias_method :config, :file_config
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
       13 
24 
     | 
    
         
             
                def to_hash
         
     | 
| 
       14 
25 
     | 
    
         
             
                  __settings.dup
         
     | 
| 
       15 
26 
     | 
    
         
             
                end
         
     | 
| 
         @@ -33,9 +44,9 @@ class Settings < ActiveRecord::Base 
     | 
|
| 
       33 
44 
     | 
    
         
             
                  __settings.delete_if { |key, value| value == __db_settings[key] || __hook_for_delete_owner_default_settings(key, value) }
         
     | 
| 
       34 
45 
     | 
    
         
             
                  __settings.each do |key, value|
         
     | 
| 
       35 
46 
     | 
    
         
             
                    if __db_settings.has_key?(key)
         
     | 
| 
       36 
     | 
    
         
            -
                      where(:key => key).first.update_attribute(:value, value)
         
     | 
| 
      
 47 
     | 
    
         
            +
                      where(:key => key).first.update_attribute(:value, value.to_s)
         
     | 
| 
       37 
48 
     | 
    
         
             
                    else
         
     | 
| 
       38 
     | 
    
         
            -
                      create!(:key => key, :value => value, :target_id => target_id, :target_type => target_type)
         
     | 
| 
      
 49 
     | 
    
         
            +
                      create!(:key => key, :value => value.to_s, :target_id => target_id, :target_type => target_type)
         
     | 
| 
       39 
50 
     | 
    
         
             
                    end
         
     | 
| 
       40 
51 
     | 
    
         
             
                  end
         
     | 
| 
       41 
52 
     | 
    
         
             
                  __db_settings.merge!(__settings)
         
     | 
| 
         @@ -56,20 +67,42 @@ class Settings < ActiveRecord::Base 
     | 
|
| 
       56 
67 
     | 
    
         
             
                end
         
     | 
| 
       57 
68 
     | 
    
         | 
| 
       58 
69 
     | 
    
         
             
                def method_missing(name, *args)
         
     | 
| 
       59 
     | 
    
         
            -
                  if  
     | 
| 
      
 70 
     | 
    
         
            +
                  if respond_to?(name)
         
     | 
| 
       60 
71 
     | 
    
         
             
                    super(name, args)
         
     | 
| 
       61 
72 
     | 
    
         
             
                  else
         
     | 
| 
       62 
73 
     | 
    
         
             
                    if name =~ /\w+=$/
         
     | 
| 
       63 
74 
     | 
    
         
             
                      __temp_settings[name.to_s.downcase.gsub('=', '').to_sym] = args.first
         
     | 
| 
       64 
75 
     | 
    
         
             
                      __settings[name.to_s.downcase.gsub('=', '').to_sym] = args.first
         
     | 
| 
       65 
76 
     | 
    
         
             
                    elsif name =~ /\w+/
         
     | 
| 
       66 
     | 
    
         
            -
                      __settings[name.to_s.downcase.to_sym] 
     | 
| 
      
 77 
     | 
    
         
            +
                      if __settings[name.to_s.downcase.to_sym].nil?
         
     | 
| 
      
 78 
     | 
    
         
            +
                        __hook_for_load_owner_default_settings(name.to_s.downcase.to_sym)
         
     | 
| 
      
 79 
     | 
    
         
            +
                      else
         
     | 
| 
      
 80 
     | 
    
         
            +
                        __settings[name.to_s.downcase.to_sym]
         
     | 
| 
      
 81 
     | 
    
         
            +
                      end
         
     | 
| 
       67 
82 
     | 
    
         
             
                    else
         
     | 
| 
       68 
83 
     | 
    
         
             
                      raise NoMethodError
         
     | 
| 
       69 
84 
     | 
    
         
             
                    end
         
     | 
| 
       70 
85 
     | 
    
         
             
                  end
         
     | 
| 
       71 
86 
     | 
    
         
             
                end
         
     | 
| 
       72 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
                # Hack for simple_form auto column type detectation
         
     | 
| 
      
 89 
     | 
    
         
            +
                def column_for_attribute(name)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  if __settings[name].nil?
         
     | 
| 
      
 91 
     | 
    
         
            +
                    RealSettings::FakeColumn.new('string')
         
     | 
| 
      
 92 
     | 
    
         
            +
                  else
         
     | 
| 
      
 93 
     | 
    
         
            +
                    case __settings[name].class.to_s
         
     | 
| 
      
 94 
     | 
    
         
            +
                    when 'Fixnum', 'Bignum'
         
     | 
| 
      
 95 
     | 
    
         
            +
                      RealSettings::FakeColumn.new('integer', true)
         
     | 
| 
      
 96 
     | 
    
         
            +
                    when 'Float'
         
     | 
| 
      
 97 
     | 
    
         
            +
                      RealSettings::FakeColumn.new('float', true)
         
     | 
| 
      
 98 
     | 
    
         
            +
                    when 'TrueClass', 'FalseClass'
         
     | 
| 
      
 99 
     | 
    
         
            +
                      RealSettings::FakeColumn.new('boolean')
         
     | 
| 
      
 100 
     | 
    
         
            +
                    else
         
     | 
| 
      
 101 
     | 
    
         
            +
                      RealSettings::FakeColumn.new('string')
         
     | 
| 
      
 102 
     | 
    
         
            +
                    end
         
     | 
| 
      
 103 
     | 
    
         
            +
                  end
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
                
         
     | 
| 
       73 
106 
     | 
    
         
             
                protected
         
     | 
| 
       74 
107 
     | 
    
         | 
| 
       75 
108 
     | 
    
         
             
                def __hook_for_load_owner_default_settings(key)
         
     | 
| 
         @@ -94,7 +127,7 @@ class Settings < ActiveRecord::Base 
     | 
|
| 
       94 
127 
     | 
    
         
             
                def load_from_database!
         
     | 
| 
       95 
128 
     | 
    
         
             
                  begin
         
     | 
| 
       96 
129 
     | 
    
         
             
                    __db_settings = {}
         
     | 
| 
       97 
     | 
    
         
            -
                    where(:target_type => target_type, :target_id => target_id).order(:key). 
     | 
| 
      
 130 
     | 
    
         
            +
                    where(:target_type => target_type, :target_id => target_id).order(:key).each { |s| self.__db_settings[s.key.to_sym] = RealSettings::SmartConvert.convert(s.value) }
         
     | 
| 
       98 
131 
     | 
    
         
             
                  rescue
         
     | 
| 
       99 
132 
     | 
    
         
             
                    __db_settings = {}
         
     | 
| 
       100 
133 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'time'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module RealSettings
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Just convert simple format for : Time, Array(simple), Float, Fixnum, Boolean, String
         
     | 
| 
      
 5 
     | 
    
         
            +
              class SmartConvert
         
     | 
| 
      
 6 
     | 
    
         
            +
                def self.convert(value)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  case value.strip
         
     | 
| 
      
 8 
     | 
    
         
            +
                  when /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} \+\d{4}$/ # Time
         
     | 
| 
      
 9 
     | 
    
         
            +
                    Time.parse(value)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  when /^\[.+\]$/ # Array
         
     | 
| 
      
 11 
     | 
    
         
            +
                    array = []
         
     | 
| 
      
 12 
     | 
    
         
            +
                    value.gsub(/\[|\]/,'').split(',').each {|v| array << RealSettings::SmartConvert.convert(v)}
         
     | 
| 
      
 13 
     | 
    
         
            +
                    array
         
     | 
| 
      
 14 
     | 
    
         
            +
                  when /^\d+\.\d+$/ # Float
         
     | 
| 
      
 15 
     | 
    
         
            +
                    value.to_f
         
     | 
| 
      
 16 
     | 
    
         
            +
                  when /^\d+$/ # Fixnum
         
     | 
| 
      
 17 
     | 
    
         
            +
                    value.to_i
         
     | 
| 
      
 18 
     | 
    
         
            +
                  when 'true'
         
     | 
| 
      
 19 
     | 
    
         
            +
                    true
         
     | 
| 
      
 20 
     | 
    
         
            +
                  when 'false'
         
     | 
| 
      
 21 
     | 
    
         
            +
                    false
         
     | 
| 
      
 22 
     | 
    
         
            +
                  else # String and Others
         
     | 
| 
      
 23 
     | 
    
         
            +
                    value
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
    
        data/real_settings.gemspec
    CHANGED
    
    | 
         @@ -6,7 +6,7 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       6 
6 
     | 
    
         
             
              gem.email         = ["Macrow_wh@163.com"]
         
     | 
| 
       7 
7 
     | 
    
         
             
              gem.description   = %q{A real settings tool for Rails3}
         
     | 
| 
       8 
8 
     | 
    
         
             
              gem.summary       = %q{A real settings tool for Rails3}
         
     | 
| 
       9 
     | 
    
         
            -
              gem.homepage      = ""
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem.homepage      = "https://github.com/Macrow/real_settings"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              gem.files         = `git ls-files`.split($\)
         
     | 
| 
       12 
12 
     | 
    
         
             
              gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
         
     | 
| 
         @@ -14,4 +14,9 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       14 
14 
     | 
    
         
             
              gem.name          = "real_settings"
         
     | 
| 
       15 
15 
     | 
    
         
             
              gem.require_paths = ["lib"]
         
     | 
| 
       16 
16 
     | 
    
         
             
              gem.version       = RealSettings::VERSION
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
| 
      
 18 
     | 
    
         
            +
              gem.add_dependency 'rails'
         
     | 
| 
      
 19 
     | 
    
         
            +
              gem.add_development_dependency 'rspec'
         
     | 
| 
      
 20 
     | 
    
         
            +
              gem.add_development_dependency 'rake'
         
     | 
| 
      
 21 
     | 
    
         
            +
              gem.add_development_dependency 'sqlite3'
         
     | 
| 
       17 
22 
     | 
    
         
             
            end
         
     | 
    
        data/spec/real_settings_spec.rb
    CHANGED
    
    | 
         @@ -6,22 +6,74 @@ describe "RealSettings" do 
     | 
|
| 
       6 
6 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       7 
7 
     | 
    
         
             
                @app_name = "real_settings"
         
     | 
| 
       8 
8 
     | 
    
         
             
                @app_url = "http://github.real_settings.com"
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                @app_online_at = Time.now
         
     | 
| 
      
 10 
     | 
    
         
            +
                @paginate_count = 10
         
     | 
| 
      
 11 
     | 
    
         
            +
                @app_open = true
         
     | 
| 
      
 12 
     | 
    
         
            +
                Settings.file_config do |settings|
         
     | 
| 
       10 
13 
     | 
    
         
             
                  settings.app_name = @app_name
         
     | 
| 
       11 
14 
     | 
    
         
             
                  settings.app_url = @app_url
         
     | 
| 
      
 15 
     | 
    
         
            +
                  settings.app_online_at = @app_online_at
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
                Settings.db_config_default do |settings|
         
     | 
| 
      
 18 
     | 
    
         
            +
                  settings.paginate_count = @paginate_count
         
     | 
| 
      
 19 
     | 
    
         
            +
                  settings.app_open = @app_open
         
     | 
| 
       12 
20 
     | 
    
         
             
                end
         
     | 
| 
       13 
21 
     | 
    
         
             
                @user1 = User.create!(:name => 'admin1')
         
     | 
| 
       14 
22 
     | 
    
         
             
                @user2 = User.create!(:name => 'admin2')
         
     | 
| 
       15 
23 
     | 
    
         
             
              end
         
     | 
| 
       16 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              it "save value and get right value type" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                at = Time.now
         
     | 
| 
      
 27 
     | 
    
         
            +
                Settings.a_array = [1,2,3,4,5]
         
     | 
| 
      
 28 
     | 
    
         
            +
                Settings.a_string = 'abc'
         
     | 
| 
      
 29 
     | 
    
         
            +
                Settings.a_time = at
         
     | 
| 
      
 30 
     | 
    
         
            +
                Settings.a_number = 123456
         
     | 
| 
      
 31 
     | 
    
         
            +
                Settings.a_float = 123.456
         
     | 
| 
      
 32 
     | 
    
         
            +
                Settings.a_bool_true = true
         
     | 
| 
      
 33 
     | 
    
         
            +
                Settings.a_bool_false = false
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                Settings.save!
         
     | 
| 
      
 36 
     | 
    
         
            +
                Settings.reload!
         
     | 
| 
      
 37 
     | 
    
         
            +
                  
         
     | 
| 
      
 38 
     | 
    
         
            +
                Settings.a_array.should == [1,2,3,4,5]
         
     | 
| 
      
 39 
     | 
    
         
            +
                Settings.a_string.should == 'abc'
         
     | 
| 
      
 40 
     | 
    
         
            +
                Settings.a_time.should.eql? at
         
     | 
| 
      
 41 
     | 
    
         
            +
                Settings.a_number.should == 123456
         
     | 
| 
      
 42 
     | 
    
         
            +
                Settings.a_float.should == 123.456
         
     | 
| 
      
 43 
     | 
    
         
            +
                Settings.a_bool_true.should == true
         
     | 
| 
      
 44 
     | 
    
         
            +
                Settings.a_bool_false.should == false
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
              
         
     | 
| 
      
 47 
     | 
    
         
            +
              it "db_config_default load for default only" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                Settings.save!
         
     | 
| 
      
 49 
     | 
    
         
            +
                Settings.reload!
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
                Settings.paginate_count.should == @paginate_count
         
     | 
| 
      
 52 
     | 
    
         
            +
                Settings.app_open.should == @app_open
         
     | 
| 
      
 53 
     | 
    
         
            +
                
         
     | 
| 
      
 54 
     | 
    
         
            +
                Settings.db_config_default do |settings|
         
     | 
| 
      
 55 
     | 
    
         
            +
                  settings.paginate_count = 50
         
     | 
| 
      
 56 
     | 
    
         
            +
                  settings.app_open = false
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
                
         
     | 
| 
      
 59 
     | 
    
         
            +
                Settings.save!
         
     | 
| 
      
 60 
     | 
    
         
            +
                Settings.reload!
         
     | 
| 
      
 61 
     | 
    
         
            +
                
         
     | 
| 
      
 62 
     | 
    
         
            +
                Settings.paginate_count.should == @paginate_count
         
     | 
| 
      
 63 
     | 
    
         
            +
                Settings.app_open.should == @app_open
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
              
         
     | 
| 
       17 
66 
     | 
    
         
             
              it "load default settings from config file" do
         
     | 
| 
       18 
67 
     | 
    
         
             
                Settings.app_name.should == @app_name
         
     | 
| 
       19 
68 
     | 
    
         
             
                Settings.app_url.should == @app_url
         
     | 
| 
      
 69 
     | 
    
         
            +
                Settings.app_online_at.should == @app_online_at
         
     | 
| 
      
 70 
     | 
    
         
            +
                Settings.paginate_count.should == @paginate_count
         
     | 
| 
      
 71 
     | 
    
         
            +
                Settings.app_open.should == @app_open
         
     | 
| 
       20 
72 
     | 
    
         
             
              end
         
     | 
| 
       21 
73 
     | 
    
         | 
| 
       22 
74 
     | 
    
         
             
              it "load settings priority is file > database > temp" do
         
     | 
| 
       23 
     | 
    
         
            -
                Settings. 
     | 
| 
       24 
     | 
    
         
            -
                Settings. 
     | 
| 
      
 75 
     | 
    
         
            +
                Settings.app_name = 'name from database'
         
     | 
| 
      
 76 
     | 
    
         
            +
                Settings.app_url = 'url from database'
         
     | 
| 
       25 
77 
     | 
    
         
             
                Settings.reload!
         
     | 
| 
       26 
78 
     | 
    
         
             
                Settings.app_name.should == @app_name
         
     | 
| 
       27 
79 
     | 
    
         
             
                Settings.app_url.should == @app_url
         
     | 
| 
         @@ -32,9 +84,26 @@ describe "RealSettings" do 
     | 
|
| 
       32 
84 
     | 
    
         
             
                Settings.app_name.should == @app_name
         
     | 
| 
       33 
85 
     | 
    
         
             
              end
         
     | 
| 
       34 
86 
     | 
    
         | 
| 
      
 87 
     | 
    
         
            +
              it "load db default config" do
         
     | 
| 
      
 88 
     | 
    
         
            +
                Settings.paginate_count.should == @paginate_count
         
     | 
| 
      
 89 
     | 
    
         
            +
                Settings.app_open.should == @app_open
         
     | 
| 
      
 90 
     | 
    
         
            +
                Settings.reload!
         
     | 
| 
      
 91 
     | 
    
         
            +
                Settings.paginate_count.should == @paginate_count
         
     | 
| 
      
 92 
     | 
    
         
            +
                Settings.app_open.should.eql? @app_open
         
     | 
| 
      
 93 
     | 
    
         
            +
                Settings.paginate_count = 30
         
     | 
| 
      
 94 
     | 
    
         
            +
                new_open_time = Time.now
         
     | 
| 
      
 95 
     | 
    
         
            +
                Settings.app_open = new_open_time
         
     | 
| 
      
 96 
     | 
    
         
            +
                Settings.paginate_count.should == 30
         
     | 
| 
      
 97 
     | 
    
         
            +
                Settings.app_open.should == new_open_time
         
     | 
| 
      
 98 
     | 
    
         
            +
                Settings.save!
         
     | 
| 
      
 99 
     | 
    
         
            +
                Settings.paginate_count.should == 30
         
     | 
| 
      
 100 
     | 
    
         
            +
                Settings.app_open.should == new_open_time    
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
              
         
     | 
| 
       35 
103 
     | 
    
         
             
              it "load default settings from database" do
         
     | 
| 
       36 
     | 
    
         
            -
                Settings. 
     | 
| 
       37 
     | 
    
         
            -
                Settings. 
     | 
| 
      
 104 
     | 
    
         
            +
                Settings.another_name = 'name from database'
         
     | 
| 
      
 105 
     | 
    
         
            +
                Settings.another_url = 'url from database'    
         
     | 
| 
      
 106 
     | 
    
         
            +
                Settings.save!
         
     | 
| 
       38 
107 
     | 
    
         
             
                Settings.reload!
         
     | 
| 
       39 
108 
     | 
    
         
             
                Settings.another_name.should == 'name from database'
         
     | 
| 
       40 
109 
     | 
    
         
             
                Settings.another_url.should == 'url from database'
         
     | 
| 
         @@ -133,30 +202,40 @@ describe "RealSettings" do 
     | 
|
| 
       133 
202 
     | 
    
         
             
              end
         
     | 
| 
       134 
203 
     | 
    
         | 
| 
       135 
204 
     | 
    
         
             
              it "user has default settings" do
         
     | 
| 
       136 
     | 
    
         
            -
                # has_settings :defaults => { :notebook => 'Macbook Pro', :mobile => 'iPhone 4' }
         
     | 
| 
      
 205 
     | 
    
         
            +
                # has_settings :defaults => { :notebook => 'Macbook Pro', :mobile => 'iPhone 4', :page_count => 20 }
         
     | 
| 
       137 
206 
     | 
    
         
             
                @user1.settings.to_hash[:notebook].should == 'Macbook Pro'
         
     | 
| 
       138 
207 
     | 
    
         
             
                @user1.settings.to_hash[:mobile].should == 'iPhone 4'    
         
     | 
| 
      
 208 
     | 
    
         
            +
                @user1.settings.to_hash[:page_count].should == 20
         
     | 
| 
       139 
209 
     | 
    
         
             
                @user1.settings.notebook.should == 'Macbook Pro'
         
     | 
| 
       140 
210 
     | 
    
         
             
                @user1.settings.mobile.should == 'iPhone 4'
         
     | 
| 
      
 211 
     | 
    
         
            +
                @user1.settings.page_count.should == 20
         
     | 
| 
      
 212 
     | 
    
         
            +
                
         
     | 
| 
       141 
213 
     | 
    
         
             
                @user1.settings.notebook = 'Macbook Air'
         
     | 
| 
       142 
214 
     | 
    
         
             
                @user1.settings.mobile = 'iPhone 4S'
         
     | 
| 
      
 215 
     | 
    
         
            +
                @user1.settings.page_count = 10
         
     | 
| 
       143 
216 
     | 
    
         
             
                @user1.settings.notebook.should == 'Macbook Air'
         
     | 
| 
       144 
217 
     | 
    
         
             
                @user1.settings.mobile.should == 'iPhone 4S'    
         
     | 
| 
      
 218 
     | 
    
         
            +
                @user1.settings.page_count.should == 10 
         
     | 
| 
       145 
219 
     | 
    
         
             
                @user1.settings.reload!
         
     | 
| 
       146 
220 
     | 
    
         
             
                @user1.settings.notebook.should == 'Macbook Pro'
         
     | 
| 
       147 
221 
     | 
    
         
             
                @user1.settings.mobile.should == 'iPhone 4'
         
     | 
| 
      
 222 
     | 
    
         
            +
                @user1.settings.page_count.should == 20
         
     | 
| 
       148 
223 
     | 
    
         | 
| 
       149 
224 
     | 
    
         
             
                @user1.settings.notebook = 'Macbook Air'
         
     | 
| 
       150 
225 
     | 
    
         
             
                @user1.settings.mobile = 'iPhone 4S'
         
     | 
| 
      
 226 
     | 
    
         
            +
                @user1.settings.page_count = 10
         
     | 
| 
       151 
227 
     | 
    
         
             
                @user1.save!
         
     | 
| 
       152 
228 
     | 
    
         
             
                @user1.settings.notebook.should == 'Macbook Air'
         
     | 
| 
       153 
229 
     | 
    
         
             
                @user1.settings.mobile.should == 'iPhone 4S'
         
     | 
| 
      
 230 
     | 
    
         
            +
                @user1.settings.page_count.should == 10
         
     | 
| 
       154 
231 
     | 
    
         
             
                @user1.settings.reload!
         
     | 
| 
       155 
232 
     | 
    
         
             
                @user1.settings.notebook.should == 'Macbook Air'
         
     | 
| 
       156 
233 
     | 
    
         
             
                @user1.settings.mobile.should == 'iPhone 4S'
         
     | 
| 
      
 234 
     | 
    
         
            +
                @user1.settings.page_count.should == 10
         
     | 
| 
       157 
235 
     | 
    
         | 
| 
       158 
236 
     | 
    
         
             
                @user2.settings.notebook.should == 'Macbook Pro'
         
     | 
| 
       159 
237 
     | 
    
         
             
                @user2.settings.mobile.should == 'iPhone 4'
         
     | 
| 
      
 238 
     | 
    
         
            +
                @user2.settings.page_count.should == 20
         
     | 
| 
       160 
239 
     | 
    
         
             
              end
         
     | 
| 
       161 
240 
     | 
    
         | 
| 
       162 
241 
     | 
    
         
             
              it "be sure destroy settings after destroy user" do
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":me 
     | 
|
| 
       7 
7 
     | 
    
         
             
            ActiveRecord::Migration.verbose = false
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            class User < ActiveRecord::Base
         
     | 
| 
       10 
     | 
    
         
            -
              has_settings :defaults => { :notebook => 'Macbook Pro', :mobile => 'iPhone 4' }
         
     | 
| 
      
 10 
     | 
    
         
            +
              has_settings :defaults => { :notebook => 'Macbook Pro', :mobile => 'iPhone 4', :page_count => 20 }
         
     | 
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            class Account < ActiveRecord::Base
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: real_settings
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.4
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,8 +9,72 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
       13 
     | 
    
         
            -
            dependencies: 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-03-01 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 15 
     | 
    
         
            +
              name: rails
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 17 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 18 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 19 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 21 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 22 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 23 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 30 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 31 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 33 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 34 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 35 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 36 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 37 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 38 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 39 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 46 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 47 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 49 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 50 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 51 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 52 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 54 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 55 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 63 
     | 
    
         
            +
              name: sqlite3
         
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 66 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 67 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 68 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 69 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 70 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 71 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       14 
78 
     | 
    
         
             
            description: A real settings tool for Rails3
         
     | 
| 
       15 
79 
     | 
    
         
             
            email:
         
     | 
| 
       16 
80 
     | 
    
         
             
            - Macrow_wh@163.com
         
     | 
| 
         @@ -19,6 +83,8 @@ extensions: [] 
     | 
|
| 
       19 
83 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       20 
84 
     | 
    
         
             
            files:
         
     | 
| 
       21 
85 
     | 
    
         
             
            - .gitignore
         
     | 
| 
      
 86 
     | 
    
         
            +
            - .rspec
         
     | 
| 
      
 87 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       22 
88 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       23 
89 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       24 
90 
     | 
    
         
             
            - README.md
         
     | 
| 
         @@ -30,14 +96,16 @@ files: 
     | 
|
| 
       30 
96 
     | 
    
         
             
            - lib/generators/real_settings/install/templates/migration.rb
         
     | 
| 
       31 
97 
     | 
    
         
             
            - lib/generators/real_settings/install/templates/real_settings.rb
         
     | 
| 
       32 
98 
     | 
    
         
             
            - lib/real_settings.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/real_settings/fake_column.rb
         
     | 
| 
       33 
100 
     | 
    
         
             
            - lib/real_settings/owner_settings.rb
         
     | 
| 
       34 
101 
     | 
    
         
             
            - lib/real_settings/relations.rb
         
     | 
| 
       35 
102 
     | 
    
         
             
            - lib/real_settings/settings.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/real_settings/smart_convert.rb
         
     | 
| 
       36 
104 
     | 
    
         
             
            - lib/real_settings/version.rb
         
     | 
| 
       37 
105 
     | 
    
         
             
            - real_settings.gemspec
         
     | 
| 
       38 
106 
     | 
    
         
             
            - spec/real_settings_spec.rb
         
     | 
| 
       39 
107 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       40 
     | 
    
         
            -
            homepage:  
     | 
| 
      
 108 
     | 
    
         
            +
            homepage: https://github.com/Macrow/real_settings
         
     | 
| 
       41 
109 
     | 
    
         
             
            licenses: []
         
     | 
| 
       42 
110 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       43 
111 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -51,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       51 
119 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       52 
120 
     | 
    
         
             
                  segments:
         
     | 
| 
       53 
121 
     | 
    
         
             
                  - 0
         
     | 
| 
       54 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 122 
     | 
    
         
            +
                  hash: 77739245330383594
         
     | 
| 
       55 
123 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       56 
124 
     | 
    
         
             
              none: false
         
     | 
| 
       57 
125 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -60,10 +128,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       60 
128 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       61 
129 
     | 
    
         
             
                  segments:
         
     | 
| 
       62 
130 
     | 
    
         
             
                  - 0
         
     | 
| 
       63 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 131 
     | 
    
         
            +
                  hash: 77739245330383594
         
     | 
| 
       64 
132 
     | 
    
         
             
            requirements: []
         
     | 
| 
       65 
133 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       66 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 134 
     | 
    
         
            +
            rubygems_version: 1.8.25
         
     | 
| 
       67 
135 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       68 
136 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       69 
137 
     | 
    
         
             
            summary: A real settings tool for Rails3
         
     |