mor 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65cbde4e429fed57d447b4cc8389063afceda07d
4
- data.tar.gz: 38ce870a914c548b64fd51d45d6c76ccb8a9092f
3
+ metadata.gz: ddaa2cec471c5f0c67af4bfabc0ef9753c5f8e36
4
+ data.tar.gz: a2fb5a1f529128cefa2890385608faf55154dc5a
5
5
  SHA512:
6
- metadata.gz: 6deeea91d489e2b544f2760b385a9ff0d6886e4da1cf4c8530ffe7b4d4c4c0e1b954a117136c4e0adf35537f3ae541ee5b9dcb31b775ebe8f4dc9d1dadc43ad9
7
- data.tar.gz: 48711dc97dcd8f2e682b7f90e2c5698ed0630a75c5589541bd388d2a651eb54f246a68541b01483faf41807d45c1df4cbc8a47ee7773c34a15696723416e01f7
6
+ metadata.gz: 74b5fa096acbe7deee0c2a598f62f2dc3337f34a110579a4b869548eafd98cc255cf239e08812085a7eb50d24ff7db4a7e62c361ed8b5623c4a4527e63dd8051
7
+ data.tar.gz: 4f0f4675842c82bef9112978d546ca15fefdac8090fc1490f5cd15b96cffa89463e61e43baaed5a5187ecdf4384ebb53b512eab8e84cde2bc3d6b8253880ce26
data/README.md CHANGED
@@ -18,7 +18,23 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ require 'mor'
22
+
23
+ Mor.config do |dalli|
24
+ dalli['servers'] = "localhost:11211"
25
+ end
26
+
27
+ class Person
28
+ include Mor::Model
29
+ attr_accessor :id, :name
30
+ end
31
+
32
+ frank = Person.new(id: 1, name: "Frank")
33
+ frank.persisted? # false
34
+ frank.valid? # true
35
+ frank.save # true
36
+
37
+ Person.find(1) # <Person:0x007fc510892b00 @name="Frank">
22
38
 
23
39
  ## Contributing
24
40
 
data/lib/mor.rb CHANGED
@@ -1,12 +1,29 @@
1
1
  require 'mor/version'
2
- require 'mor/client'
2
+ require 'dalli'
3
3
 
4
4
  module Mor
5
5
 
6
- def self.env
7
- ENV['RACK_ENV'] ||= "development"
6
+ @@dalli = {
7
+ compress: true,
8
+ threadsafe: true,
9
+ servers: ENV['MEMCACHIER_SERVERS'],
10
+ password: ENV['MEMCACHIER_PASSWORD'],
11
+ username: ENV['MEMCACHIER_USERNAME'],
12
+ async: true
13
+ }
14
+
15
+ def self.dalli
16
+ @@dalli
17
+ end
18
+
19
+ def self.config
20
+ yield self
8
21
  end
9
22
 
10
- extend Client
23
+ def self.cache
24
+ @@cache ||= begin
25
+ ::Dalli::Client.new self.dalli["servers"].split(","), self.dalli.reject{|k,v| k == "servers"}
26
+ end
27
+ end
11
28
 
12
29
  end
@@ -1,3 +1,3 @@
1
1
  module Mor
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,15 +1,13 @@
1
1
  require 'minitest_helper'
2
- require 'mor'
3
2
  require 'mor/model'
4
3
 
5
4
  class TestModel
6
5
  include Mor::Model
7
- attr_accessor :id,:title,:body
8
-
6
+ attr_accessor :id, :title, :body
9
7
  end
10
8
 
11
9
  describe Mor::Model do
12
-
10
+
13
11
  it "acts as active_model/model" do
14
12
  instance = TestModel.new(title: "title", body: "test body")
15
13
  instance.title.must_equal "title"
@@ -1,5 +1,4 @@
1
1
  require 'minitest_helper'
2
- require 'mor'
3
2
 
4
3
  describe Mor do
5
4
 
@@ -4,7 +4,15 @@ require 'minitest/pride'
4
4
  require 'minitest/autorun'
5
5
  require 'awesome_print'
6
6
 
7
- require_relative "../../config/env"
7
+ require 'mor'
8
+
9
+ require 'i18n'
10
+ I18n.enforce_available_locales = false
11
+
12
+ Mor.config do |mor|
13
+ mor.dalli['namespace'] = "mor:test"
14
+ mor.dalli['servers'] = "localhost:11211"
15
+ end
8
16
 
9
17
  class MiniTest::Spec
10
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Onur Uyar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -106,11 +106,7 @@ files:
106
106
  - LICENSE.txt
107
107
  - README.md
108
108
  - Rakefile
109
- - config/cache.yml
110
- - config/env.rb
111
- - lib/mor.old.rb
112
109
  - lib/mor.rb
113
- - lib/mor/client.rb
114
110
  - lib/mor/model.rb
115
111
  - lib/mor/version.rb
116
112
  - mor.gemspec
@@ -1,20 +0,0 @@
1
- development:
2
- compress: true
3
- threadsafe: true
4
- namespace: mor:development
5
- servers: localhost:11211
6
- async: true
7
- test:
8
- compress: true
9
- threadsafe: true
10
- namespace: mor:test
11
- servers: localhost:11211
12
- async: true
13
- production:
14
- compress: true
15
- threadsafe: true
16
- namespace: mor
17
- servers: <%= ENV['MEMCACHIER_SERVERS'] %>
18
- password: <%= ENV['MEMCACHIER_PASSWORD'] %>
19
- username: <%= ENV['MEMCACHIER_USERNAME'] %>
20
- async: true
@@ -1,13 +0,0 @@
1
- # real time stdout
2
- $stdout.sync = true
3
-
4
- %w(. lib).each do |dir|
5
- path = File.expand_path( "../../#{dir}", __FILE__)
6
- $LOAD_PATH.unshift(path) unless $LOAD_PATH.include?(path)
7
- end
8
-
9
- require 'bundler/setup'
10
- Bundler.setup
11
-
12
- require 'i18n'
13
- I18n.enforce_available_locales = false
@@ -1,147 +0,0 @@
1
- require 'yaml'
2
- require 'erb'
3
- require 'dalli'
4
- require 'active_model'
5
- require 'active_model/callbacks'
6
- require 'active_support/hash_with_indifferent_access'
7
- require 'active_support/concern'
8
- module Mor
9
-
10
- def self.env
11
- ENV['RACK_ENV'] ||= "development"
12
- end
13
-
14
- def self.cache=cache
15
- @@cache=cache
16
- end
17
-
18
- def self.cache
19
- @@cache ||= begin
20
- config = YAML::load(ERB.new(File.read("config/cache.yml")).result)[Mor.env]
21
- @instance = Dalli::Client.new config.delete("servers").split(","), config
22
- end
23
- end
24
-
25
- extend ActiveSupport::Concern
26
- extend ActiveModel::Callbacks
27
-
28
- module ClassMethods
29
-
30
- def attr_accessor *attrs
31
- super(*attrs)
32
- attrs.delete_if{ |a| a == :attributes }.each { |attr|
33
- define_method(:"#{attr}="){|val| self.attributes[attr]=val}
34
- define_method(attr){ self.attributes[attr] }
35
- }
36
- end
37
-
38
- def key id = primary_key
39
- :"#{self.name.downcase}:#{id}"
40
- end
41
-
42
- def primary_key
43
- :id
44
- end
45
-
46
- def create attributes = {}
47
- instance = self.new(attributes)
48
- instance.save
49
- instance
50
- end
51
-
52
- end
53
-
54
- included do
55
- include ActiveModel::Model
56
- extend ActiveModel::Callbacks
57
- include ActiveModel::Validations::Callbacks
58
- define_model_callbacks :create, :update, :destroy
59
- after_create :add_to_index
60
- after_destroy :remove_from_index
61
- validates_presence_of :id
62
- validate :validate_uniqueness_of_id
63
- end
64
-
65
- def attributes
66
- @attributes ||= ActiveSupport::HashWithIndifferentAccess.new
67
- end
68
-
69
- def initialize attributes = {}
70
- self.attributes ||= ActiveSupport::HashWithIndifferentAccess.new(attributes)
71
- end
72
-
73
- def update attributes={}
74
- self.attributes.update attributes
75
- save
76
- end
77
-
78
- def save
79
- if self.valid?
80
- if self.persisted?
81
- run_callbacks :update do
82
- cache.set(self.key,self)
83
- end
84
- else
85
- run_callbacks :create do
86
- cache.set(self.key,self)
87
- end
88
- end
89
- end
90
- end
91
-
92
- def destroy
93
- run_callbacks :destroy do
94
- cache.delete key
95
- end
96
- end
97
-
98
- def key
99
- self.class.key self.id
100
- end
101
-
102
- def persisted?
103
- self.indexed?
104
- end
105
-
106
- def id
107
- self.attributes[self.class.primary_key]
108
- end
109
-
110
- # index
111
-
112
- def indexed?
113
- @indexed ||= index.include?(self.id)
114
- end
115
-
116
- def index
117
- @index ||= begin
118
- cache.get(self.class.key) || (self.index=[])
119
- end
120
- end
121
-
122
- def index=index
123
- @index = begin
124
- cache.set(self.class.key,index) ? index : []
125
- end
126
- end
127
-
128
- private
129
-
130
- def add_to_index
131
- self.index = index.push(self.id)
132
- end
133
-
134
- def remove_from_index
135
- self.index = index.tap{ |index| index.delete(self.id) }
136
- end
137
-
138
- def validate_uniqueness_of_id
139
- self.errors.add(:id, :taken) if indexed?
140
- end
141
-
142
- def cache
143
- Mor.cache
144
- end
145
-
146
-
147
- end
@@ -1,16 +0,0 @@
1
- require 'yaml'
2
- require 'erb'
3
- require 'dalli'
4
-
5
- module Mor
6
- module Client
7
-
8
- def cache
9
- @@cache ||= begin
10
- config = YAML::load(ERB.new(File.read("config/cache.yml")).result)[Mor.env]
11
- @instance = Dalli::Client.new config.delete("servers").split(","), config
12
- end
13
- end
14
-
15
- end
16
- end