kaka-rails-settings 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []