kaka-rails-settings 1.0.0

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/lib/init.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "settings/version"
2
+ require "settings/setting_functional"
3
+ require "settings/settings"
4
+ require "settings/model_relaction"
@@ -0,0 +1,17 @@
1
+ module Mongoid
2
+ module Setting
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def has_settings
9
+ class_eval do
10
+ def settings
11
+ Settings.new(self)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,68 @@
1
+ module SettingFunctional
2
+ module Method
3
+ attr_accessor :target
4
+
5
+ def []=(key, value)
6
+ add_key(key, value)
7
+ end
8
+
9
+ def [](key)
10
+ get_key(key)
11
+ end
12
+
13
+ def destroy_all
14
+ get_setting.first.destroy_all
15
+ end
16
+
17
+ def destroy(key)
18
+ get_setting(key).first.destroy
19
+ end
20
+
21
+ def all
22
+ keys = get_setting.first
23
+ keys.map do | k |
24
+ temp = {}
25
+ temp[k.var] = k.value
26
+ temp
27
+ end
28
+ end
29
+
30
+ def method_missing(method_name, *args)
31
+ rule_method(method_name, *args)
32
+ end
33
+
34
+ private
35
+ def get_key(key)
36
+ temp = get_setting(key).first
37
+ temp.first.nil? ? nil : temp.first.value
38
+ end
39
+
40
+ def add_key(key, value)
41
+ setting = get_setting(key)
42
+ _setting = setting.first
43
+ _setting.first.nil? ? Setting.create!(setting.last.merge!({value: value})) : _setting.first.update_attribute(:value, value)
44
+ end
45
+
46
+ def rule_method(method_name, *args)
47
+ method = method_name.to_s
48
+ if self.respond_to?(method_name)
49
+ super(method_name, *args)
50
+ else
51
+ if method =~ /=$/
52
+ add_key(method.gsub(/=$/,''), args.first)
53
+ else
54
+ get_key(method)
55
+ end
56
+ end
57
+ end
58
+
59
+ def get_setting(key = nil)
60
+ options = key.nil? ? {} : {:var => key.to_s}
61
+ options.merge!({:target_id => nil, :target_type => nil})
62
+ options.merge!({:target_id => target.id, :target_type => target.class}) unless target.nil?
63
+
64
+ temp = Setting.where(options)
65
+ [temp, options]
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,8 @@
1
+ class Settings
2
+ include SettingFunctional::Method
3
+ extend SettingFunctional::Method
4
+
5
+ def initialize(target = nil)
6
+ @target = target
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module Settings
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kaka-rails-settings
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - kaka
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-29 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description:
15
+ email: ! '"huxinghai1988@gmail.com"'
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/init.rb
21
+ - lib/settings/settings.rb
22
+ - lib/settings/version.rb
23
+ - lib/settings/setting_functional.rb
24
+ - lib/settings/model_relaction.rb
25
+ homepage: https://github.com/huxinghai1988/rails-settings.git
26
+ licenses: []
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 1.8.24
46
+ signing_key:
47
+ specification_version: 3
48
+ summary: rails use settings support mysql,mongodb...
49
+ test_files: []