dynamosaurus 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: 7c83dcc84e2df48c376bcee1bbf2b75888a2ea63
4
- data.tar.gz: a3481c7cd31a0ccce8beee8217539f0b0d993660
3
+ metadata.gz: 070ed235ecd54d002a4af5a36cb42ac7c0052c7a
4
+ data.tar.gz: 604cb47dc88d5ea6b28db9f313a43f0b55fee132
5
5
  SHA512:
6
- metadata.gz: 1156a59ba6601629bd3e773285e4dd5b6e6741633a61364e201b01fae67bb433e95ceba19e69d8c5a471a004d0b9c5742dcf78fc6358d7d87dac60283c7b2d53
7
- data.tar.gz: 6c6a0ea222c90b658d50a67b160fb6177be10946ad043b71f677661f3be55c2ada79199a87c067d67bb021f6c97e45e79bc7a6270299f7401b5c63116f00e2cb
6
+ metadata.gz: 60a53aaf8e3651d4e778c2b9c2bcbc1439819dbbba4afb475055fcc046b54c0141c6d33b20a0f8a3978a199d7159dedbe3a48cb614f9d6d448e6329a4a517272
7
+ data.tar.gz: 8bca0a468f5261405dc01dfec37c501571994018921a31bc400c0cdff40e93485d916db0b49139565fc86f0579228439cdc74aab2cad5bcb427b2a293bb3bad7
data/README.md CHANGED
@@ -44,6 +44,42 @@ Or install it yourself as:
44
44
 
45
45
  # delete
46
46
  kvs.delete
47
+
48
+ class SimpleOrderedKVS < Dynamosaurus::DynamoBase
49
+ key :simple_key, :string, :simple_id, :string
50
+ secondary_index :updated_at_index, :updated_at, :number
51
+ end
52
+
53
+ # create
54
+ SimpleOrderedKVS.put({:simple_key => "key", :simple_id => "1"})
55
+
56
+ # get
57
+ SimpleOrderedKVS.get(["key", "1"])
58
+
59
+ # force use secondary index
60
+ SimpleOrderedKVS.get({
61
+ :index => "updated_at_index",
62
+ :simple_key => "key"
63
+ },{
64
+ :scan_index_forward => false,
65
+ :limit => 50,
66
+ })
67
+
68
+ # automatically use secondary index
69
+ SimpleOrderedKVS.get({:simple_key => "key"})
70
+
71
+ class Comment < Dynamosaurus::DynamoBase
72
+ key :content_id, :string, :message_id, :string
73
+ global_index :user_index, :user_id, :string
74
+ end
75
+
76
+ Comment.put({:content_id => "1", :message_id => "1", :user_id => "abc"})
77
+ Comment.put({:content_id => "1", :message_id => "2", :user_id => "abc"})
78
+ Comment.put({:content_id => "1", :message_id => "3", :user_id => "xyz"})
79
+
80
+ # automatically use global index
81
+ comments = Comment.get({:user_id => "abc"})
82
+
47
83
 
48
84
 
49
85
  ## Contributing
data/dynamosaurus.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["isamu.a@gmail.com"]
11
11
  spec.description = %q{Dynamodb simple ORM}
12
12
  spec.summary = %q{Dynamodb simple ORM}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/isamu/dynamosaurus"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
data/lib/dynamosaurus.rb CHANGED
@@ -1,163 +1,10 @@
1
1
  require "dynamosaurus/version"
2
2
  require "dynamosaurus/dynamo_base"
3
3
  require "dynamosaurus/dynamo_class"
4
+ require "dynamosaurus/logger"
4
5
 
5
6
  module Dynamosaurus
6
7
  class << self
7
8
  attr_accessor :logger
8
9
  end
9
-
10
- class Logger
11
-
12
- attr_accessor :level
13
- attr_accessor :delimiter
14
- attr_accessor :auto_flush
15
- attr_reader :buffer
16
- attr_reader :log
17
- attr_reader :init_args
18
-
19
- Levels =
20
- {
21
- :fatal => 7,
22
- :error => 6,
23
- :warn => 4,
24
- :info => 3,
25
- :debug => 0
26
- }
27
-
28
- private
29
-
30
- # Readies a log for writing.
31
- #
32
- # ==== Parameters
33
- # log<IO, String>:: Either an IO object or a name of a logfile.
34
- def initialize_log(log)
35
- close if @log # be sure that we don't leave open files laying around.
36
-
37
- if log.respond_to?(:write)
38
- @log = log
39
- elsif File.exist?(log)
40
- @log = open(log, (File::WRONLY | File::APPEND))
41
- @log.sync = true
42
- else
43
- FileUtils.mkdir_p(File.dirname(log)) unless File.directory?(File.dirname(log))
44
- @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
45
- @log.sync = true
46
- @log.write("#{Time.now.httpdate} #{delimiter} info #{delimiter} Logfile created\n")
47
- end
48
- end
49
-
50
- public
51
-
52
- # To initialize the logger you create a new object, proxies to set_log.
53
- #
54
- # ==== Parameters
55
- # *args:: Arguments to create the log from. See set_logs for specifics.
56
- def initialize(*args)
57
- @init_args = args
58
- set_log(*args)
59
- self.auto_flush = true
60
- Dynamosaurus.logger = self
61
- end
62
-
63
- # Replaces an existing logger with a new one.
64
- #
65
- # ==== Parameters
66
- # log<IO, String>:: Either an IO object or a name of a logfile.
67
- # log_level<~to_sym>::
68
- # The log level from, e.g. :fatal or :info. Defaults to :error in the
69
- # production environment and :debug otherwise.
70
- # delimiter<String>::
71
- # Delimiter to use between message sections. Defaults to " ~ ".
72
- # auto_flush<Boolean>::
73
- # Whether the log should automatically flush after new messages are
74
- # added. Defaults to false.
75
- def set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false)
76
- if log_level && Levels[log_level.to_sym]
77
- @level = Levels[log_level.to_sym]
78
- else
79
- @level = Levels[:debug]
80
- end
81
- @buffer = []
82
- @delimiter = delimiter
83
- @auto_flush = auto_flush
84
-
85
- initialize_log(log)
86
- end
87
-
88
- # Flush the entire buffer to the log object.
89
- def flush
90
- return unless @buffer.size > 0
91
- @log.write(@buffer.slice!(0..-1).join)
92
- end
93
-
94
- # Close and remove the current log object.
95
- def close
96
- flush
97
- @log.close if @log.respond_to?(:close) && !@log.tty?
98
- @log = nil
99
- end
100
-
101
- # Appends a message to the log. The methods yield to an optional block and
102
- # the output of this block will be appended to the message.
103
- #
104
- # ==== Parameters
105
- # string<String>:: The message to be logged. Defaults to nil.
106
- #
107
- # ==== Returns
108
- # String:: The resulting message added to the log file.
109
- def <<(string = nil)
110
- message = ""
111
- message << delimiter
112
- message << string if string
113
- message << "\n" unless message[-1] == ?\n
114
- @buffer << message
115
- flush if @auto_flush
116
-
117
- message
118
- end
119
- alias_method :push, :<<
120
-
121
- # Generate the logging methods for DataMapper.logger for each log level.
122
- Levels.each_pair do |name, number|
123
- class_eval <<-LEVELMETHODS, __FILE__, __LINE__
124
-
125
- # Appends a message to the log if the log level is at least as high as
126
- # the log level of the logger.
127
- #
128
- # ==== Parameters
129
- # string<String>:: The message to be logged. Defaults to nil.
130
- #
131
- # ==== Returns
132
- # self:: The logger object for chaining.
133
- def #{name}(message = nil)
134
- self << message if #{number} >= level
135
- self
136
- end
137
-
138
- # Appends a message to the log if the log level is at least as high as
139
- # the log level of the logger. The bang! version of the method also auto
140
- # flushes the log buffer to disk.
141
- #
142
- # ==== Parameters
143
- # string<String>:: The message to be logged. Defaults to nil.
144
- #
145
- # ==== Returns
146
- # self:: The logger object for chaining.
147
- def #{name}!(message = nil)
148
- self << message if #{number} >= level
149
- flush if #{number} >= level
150
- self
151
- end
152
-
153
- # ==== Returns
154
- # Boolean:: True if this level will be logged by this logger.
155
- def #{name}?
156
- #{number} >= level
157
- end
158
- LEVELMETHODS
159
- end
160
-
161
- end
162
-
163
10
  end
@@ -0,0 +1,154 @@
1
+ module Dynamosaurus
2
+ class Logger
3
+
4
+ attr_accessor :level
5
+ attr_accessor :delimiter
6
+ attr_accessor :auto_flush
7
+ attr_reader :buffer
8
+ attr_reader :log
9
+ attr_reader :init_args
10
+
11
+ Levels =
12
+ {
13
+ :fatal => 7,
14
+ :error => 6,
15
+ :warn => 4,
16
+ :info => 3,
17
+ :debug => 0
18
+ }
19
+
20
+ private
21
+
22
+ # Readies a log for writing.
23
+ #
24
+ # ==== Parameters
25
+ # log<IO, String>:: Either an IO object or a name of a logfile.
26
+ def initialize_log(log)
27
+ close if @log # be sure that we don't leave open files laying around.
28
+
29
+ if log.respond_to?(:write)
30
+ @log = log
31
+ elsif File.exist?(log)
32
+ @log = open(log, (File::WRONLY | File::APPEND))
33
+ @log.sync = true
34
+ else
35
+ FileUtils.mkdir_p(File.dirname(log)) unless File.directory?(File.dirname(log))
36
+ @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
37
+ @log.sync = true
38
+ @log.write("#{Time.now.httpdate} #{delimiter} info #{delimiter} Logfile created\n")
39
+ end
40
+ end
41
+
42
+ public
43
+
44
+ # To initialize the logger you create a new object, proxies to set_log.
45
+ #
46
+ # ==== Parameters
47
+ # *args:: Arguments to create the log from. See set_logs for specifics.
48
+ def initialize(*args)
49
+ @init_args = args
50
+ set_log(*args)
51
+ self.auto_flush = true
52
+ Dynamosaurus.logger = self
53
+ end
54
+
55
+ # Replaces an existing logger with a new one.
56
+ #
57
+ # ==== Parameters
58
+ # log<IO, String>:: Either an IO object or a name of a logfile.
59
+ # log_level<~to_sym>::
60
+ # The log level from, e.g. :fatal or :info. Defaults to :error in the
61
+ # production environment and :debug otherwise.
62
+ # delimiter<String>::
63
+ # Delimiter to use between message sections. Defaults to " ~ ".
64
+ # auto_flush<Boolean>::
65
+ # Whether the log should automatically flush after new messages are
66
+ # added. Defaults to false.
67
+ def set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false)
68
+ if log_level && Levels[log_level.to_sym]
69
+ @level = Levels[log_level.to_sym]
70
+ else
71
+ @level = Levels[:debug]
72
+ end
73
+ @buffer = []
74
+ @delimiter = delimiter
75
+ @auto_flush = auto_flush
76
+
77
+ initialize_log(log)
78
+ end
79
+
80
+ # Flush the entire buffer to the log object.
81
+ def flush
82
+ return unless @buffer.size > 0
83
+ @log.write(@buffer.slice!(0..-1).join)
84
+ end
85
+
86
+ # Close and remove the current log object.
87
+ def close
88
+ flush
89
+ @log.close if @log.respond_to?(:close) && !@log.tty?
90
+ @log = nil
91
+ end
92
+
93
+ # Appends a message to the log. The methods yield to an optional block and
94
+ # the output of this block will be appended to the message.
95
+ #
96
+ # ==== Parameters
97
+ # string<String>:: The message to be logged. Defaults to nil.
98
+ #
99
+ # ==== Returns
100
+ # String:: The resulting message added to the log file.
101
+ def <<(string = nil)
102
+ message = ""
103
+ message << delimiter
104
+ message << string if string
105
+ message << "\n" unless message[-1] == ?\n
106
+ @buffer << message
107
+ flush if @auto_flush
108
+
109
+ message
110
+ end
111
+ alias_method :push, :<<
112
+
113
+ # Generate the logging methods for DataMapper.logger for each log level.
114
+ Levels.each_pair do |name, number|
115
+ class_eval <<-LEVELMETHODS, __FILE__, __LINE__
116
+
117
+ # Appends a message to the log if the log level is at least as high as
118
+ # the log level of the logger.
119
+ #
120
+ # ==== Parameters
121
+ # string<String>:: The message to be logged. Defaults to nil.
122
+ #
123
+ # ==== Returns
124
+ # self:: The logger object for chaining.
125
+ def #{name}(message = nil)
126
+ self << message if #{number} >= level
127
+ self
128
+ end
129
+
130
+ # Appends a message to the log if the log level is at least as high as
131
+ # the log level of the logger. The bang! version of the method also auto
132
+ # flushes the log buffer to disk.
133
+ #
134
+ # ==== Parameters
135
+ # string<String>:: The message to be logged. Defaults to nil.
136
+ #
137
+ # ==== Returns
138
+ # self:: The logger object for chaining.
139
+ def #{name}!(message = nil)
140
+ self << message if #{number} >= level
141
+ flush if #{number} >= level
142
+ self
143
+ end
144
+
145
+ # ==== Returns
146
+ # Boolean:: True if this level will be logged by this logger.
147
+ def #{name}?
148
+ #{number} >= level
149
+ end
150
+ LEVELMETHODS
151
+ end
152
+
153
+ end
154
+ end
@@ -1,3 +1,3 @@
1
1
  module Dynamosaurus
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -52,6 +52,9 @@ describe Dynamosaurus do
52
52
  expect(orderd_items[1].simple_id).to eq "3"
53
53
  expect(orderd_items[2].simple_id).to eq "1"
54
54
 
55
+ expect(SimpleOrderedKVS.get({:simple_key => "key"}).size).to eq 3
56
+
57
+
55
58
  batch_items = SimpleOrderedKVS.batch_get_item({:simple_key => ["key"], :simple_id => ["1", "2", "3"]})
56
59
  expect(orderd_items.size).to eq 3
57
60
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamosaurus
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
  - Isamu Arimoto
@@ -84,11 +84,12 @@ files:
84
84
  - lib/dynamosaurus.rb
85
85
  - lib/dynamosaurus/dynamo_base.rb
86
86
  - lib/dynamosaurus/dynamo_class.rb
87
+ - lib/dynamosaurus/logger.rb
87
88
  - lib/dynamosaurus/version.rb
88
89
  - spec/dynamosaurus_spec.rb
89
90
  - spec/spec_helper.rb
90
91
  - spec/testmodel.rb
91
- homepage: ''
92
+ homepage: https://github.com/isamu/dynamosaurus
92
93
  licenses:
93
94
  - MIT
94
95
  metadata: {}