dynamosaurus 0.0.1 → 0.0.2

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.
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: {}