groonga-client-model 0.9.5 → 0.9.6

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: 280065806b16cf11124e4ce8a5d8550c6a427f4c
4
- data.tar.gz: ea03fc0c321b8aea0df6951c94b15b5879852371
3
+ metadata.gz: 69aeb3216e670c96bb30d59565e4aab119267d6e
4
+ data.tar.gz: c30ae60d4a6ae6dc644aa01b3db6079dc8bb257f
5
5
  SHA512:
6
- metadata.gz: fc49cbe218f850a775997ae6cd937799249720e9a70ed582d10009dffa8cac3a51695e69eb10a9958d8421faa4774eb989c3ecf19071613d3490745191dbe1a8
7
- data.tar.gz: d8edfa839c110f51e7ec55978964e0de3bee6c79ffcbae99fbe5e4ed8a9facae653a895a7a1946f7103de7e66906953fbc3d2573a74c6875cdfb4e890a6a943f
6
+ metadata.gz: 6849d586cfa69b14047ddccc392db40cb4545a232d69b8df7d59163549d3ac04948064aa6b07cf6b2333a851143f8c444b644e7fb17472c26a055913dd0bc02b
7
+ data.tar.gz: f765054cdca37447290b1d5dfbd05a6406df40a4b30af4a7c187e406f99aec18b8a99239563ab9a578b342512e87f1789e4c4f81ada50ec438dd96babc5b722b
data/doc/text/news.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # NEWS
2
2
 
3
+ ## 0.9.6 - 2016-01-12
4
+
5
+ ### Improvements
6
+
7
+ * Supported logging.
8
+
9
+ ### Improvements
10
+
3
11
  ## 0.9.5 - 2016-12-27
4
12
 
5
13
  ### Improvements
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2016-2017 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -31,8 +31,22 @@ module GroongaClientModel
31
31
 
32
32
  def open
33
33
  Groonga::Client.open(url: @url) do |client|
34
+ client.extend(Notifiable)
34
35
  yield(client)
35
36
  end
36
37
  end
38
+
39
+ module Notifiable
40
+ private
41
+ def execute_command(command, &block)
42
+ name = "groonga.groonga_client_model"
43
+ payload = {
44
+ :command => command,
45
+ }
46
+ ActiveSupport::Notifications.instrument(name, payload) do
47
+ super(command, &block)
48
+ end
49
+ end
50
+ end
37
51
  end
38
52
  end
@@ -0,0 +1,90 @@
1
+ # Copyright (C) 2017 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module GroongaClientModel
18
+ class LogSubscriber < ActiveSupport::LogSubscriber
19
+ if respond_to?(:thread_cattr_accessor)
20
+ thread_cattr_accessor :runtime, instance_accessor: false
21
+ else
22
+ # For ActiveSupport < 5
23
+ class << self
24
+ def runtime
25
+ Thread.current["groonga_client_model.log_subscriber.runtime"]
26
+ end
27
+
28
+ def runtime=(value)
29
+ Thread.current["groonga_client_model.log_subscriber.runtime"] = value
30
+ end
31
+ end
32
+ end
33
+
34
+ class << self
35
+ def reset_runtime
36
+ self.runtime = 0.0
37
+ end
38
+
39
+ def measure
40
+ before_runtime = runtime
41
+ yield
42
+ runtime - before_runtime
43
+ end
44
+ end
45
+
46
+ def groonga(event)
47
+ self.class.runtime += event.duration
48
+
49
+ debug do
50
+ command = event.payload[:command]
51
+
52
+ title = color("#{command.command_name} (#{event.duration.round(1)}ms)",
53
+ title_color(command),
54
+ true)
55
+ formatted_command = color(command.to_command_format,
56
+ command_color(command),
57
+ true)
58
+ " #{title} #{formatted_command}"
59
+ end
60
+ end
61
+
62
+ private
63
+ def title_color(command)
64
+ if command.command_name == "select"
65
+ MAGENTA
66
+ else
67
+ CYAN
68
+ end
69
+ end
70
+
71
+ def command_color(command)
72
+ case command.command_name
73
+ when "select"
74
+ BLUE
75
+ when "load"
76
+ GREEN
77
+ when "delete"
78
+ RED
79
+ else
80
+ MAGENTA
81
+ end
82
+ end
83
+
84
+ def logger
85
+ GroongaClientModel.logger
86
+ end
87
+
88
+ attach_to :groonga_client_model
89
+ end
90
+ end
@@ -44,6 +44,13 @@ module GroongaClientModel
44
44
  end
45
45
  end
46
46
 
47
+ initializer "groonga_client_model.log_runtime" do
48
+ require "groonga_client_model/railties/controller_runtime"
49
+ ActiveSupport.on_load(:action_controller) do
50
+ include GroongaClientModel::Railties::ControllerRuntime
51
+ end
52
+ end
53
+
47
54
  initializer "groonga_client_model.set_configs" do |app|
48
55
  ActiveSupport.on_load(:groonga_client_model) do
49
56
  app.config.groonga_client_model.each do |key, value|
@@ -0,0 +1,56 @@
1
+ # Copyright (C) 2017 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ require "groonga_client_model/log_subscriber"
18
+
19
+ module GroongaClientModel
20
+ module Railties
21
+ module ControllerRuntime
22
+ extend ActiveSupport::Concern
23
+
24
+ attr_internal :groonga_runtime
25
+
26
+ def process_action(action, *args)
27
+ GroongaClientModel::LogSubscriber.reset_runtime
28
+ super
29
+ end
30
+
31
+ def cleanup_view_runtime
32
+ total_runtime = nil
33
+ groonga_runtime_in_view = GroongaClientModel::LogSubscriber.measure do
34
+ total_runtime = super
35
+ end
36
+ total_runtime - groonga_runtime_in_view
37
+ end
38
+
39
+ def append_info_to_payload(payload)
40
+ super
41
+ payload[:groonga_runtime] = GroongaClientModel::LogSubscriber.runtime
42
+ end
43
+
44
+ module ClassMethods
45
+ def log_process_action(payload)
46
+ messages = super
47
+ groonga_runtime = payload[:groonga_runtime]
48
+ if groonga_runtime
49
+ messages << ("Groonga: %.1fms" % groonga_runtime.to_f)
50
+ end
51
+ messages
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -15,5 +15,5 @@
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
  module GroongaClientModel
18
- VERSION = "0.9.5"
18
+ VERSION = "0.9.6"
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-client-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-27 00:00:00.000000000 Z
11
+ date: 2017-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: groonga-client
@@ -142,9 +142,11 @@ files:
142
142
  - lib/groonga_client_model/client_opener.rb
143
143
  - lib/groonga_client_model/error.rb
144
144
  - lib/groonga_client_model/load_value_generator.rb
145
+ - lib/groonga_client_model/log_subscriber.rb
145
146
  - lib/groonga_client_model/modelizable.rb
146
147
  - lib/groonga_client_model/modelize.rb
147
148
  - lib/groonga_client_model/railtie.rb
149
+ - lib/groonga_client_model/railties/controller_runtime.rb
148
150
  - lib/groonga_client_model/railties/groonga.rake
149
151
  - lib/groonga_client_model/record.rb
150
152
  - lib/groonga_client_model/schema.rb