dekiru 0.0.16 → 0.0.17
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 +4 -4
- data/.ruby-version +1 -0
- data/README.md +30 -1
- data/Rakefile +15 -0
- data/dekiru.gemspec +3 -0
- data/lib/dekiru.rb +7 -0
- data/lib/dekiru/configure.rb +14 -0
- data/lib/dekiru/rake_monitor.rb +57 -0
- data/lib/dekiru/version.rb +1 -1
- data/lib/generators/dekiru/dekiru_generator.rb +38 -0
- metadata +49 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff05387e945ee17a774a68e183fc7ffe083430fb
|
4
|
+
data.tar.gz: 581be62ea26d644bf1e19c13c6515404b11ebca9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72a811cf2cade7273accb62a2118bed7e50b730fd17c5505aaa0b64f83bea914a32b2f0d1b0aa49ff36af7c3abe6647a5c9937eec0d480cc933bb0492b4ce8b9
|
7
|
+
data.tar.gz: 7d38401d0bdf6e5132b2d3a6523f8b63a9484c8d3f244d07f2da2979c8f47aa06f35669e18a9743f2cd0ba87bff4086eef167adddb641b014a1ca350d47f1e75
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.4
|
data/README.md
CHANGED
@@ -20,7 +20,36 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
以下のコマンドを実行すると、監視のための設定ファイルが自動的に生成される。
|
24
|
+
|
25
|
+
```
|
26
|
+
bin/rails g dekiru
|
27
|
+
```
|
28
|
+
|
29
|
+
メールアドレス、例外時の処理などは必要に応じて変更する。
|
30
|
+
|
31
|
+
```
|
32
|
+
Dekiru.configure do |config|
|
33
|
+
config.monitor_email = "email@example.com"
|
34
|
+
config.monitor_api_key = "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
|
35
|
+
config.error_handle = -> (e) { Bugsnag.notify(e) }
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Rakefile にて、'dekiru/rake_monitor' を読み込む。
|
40
|
+
|
41
|
+
```
|
42
|
+
require 'dekiru/rake_monitor'
|
43
|
+
```
|
44
|
+
|
45
|
+
rake で、`task_with_monitor` を使ってタスクを記述することで、 task を監視することができます。
|
46
|
+
|
47
|
+
```
|
48
|
+
task_with_monitor job: :environment, estimate_time: 10 do
|
49
|
+
puts "execute"
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
24
53
|
|
25
54
|
## Contributing
|
26
55
|
|
data/Rakefile
CHANGED
@@ -8,3 +8,18 @@ RSpec::Core::RakeTask.new do |t|
|
|
8
8
|
t.rspec_opts = ['--color', "--format progress"]
|
9
9
|
t.pattern = 'spec/dekiru/**/*_spec.rb'
|
10
10
|
end
|
11
|
+
|
12
|
+
require 'dekiru'
|
13
|
+
require 'dekiru/rake_monitor'
|
14
|
+
|
15
|
+
Dekiru.configure do |config|
|
16
|
+
config.monitor_email = "email@example.com"
|
17
|
+
config.monitor_api_key = "0680fa6b-c014-4985-8d05-1cca2d50512b"
|
18
|
+
config.error_handle = -> (e) {
|
19
|
+
puts e
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
task_with_monitor job: nil, estimate_time: 10 do
|
24
|
+
puts "execute"
|
25
|
+
end
|
data/dekiru.gemspec
CHANGED
@@ -19,4 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.add_dependency 'rails'
|
20
20
|
gem.add_development_dependency 'rake', [">= 0"]
|
21
21
|
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'webmock', ['>= 1.19.0']
|
23
|
+
gem.add_development_dependency 'faraday'
|
24
|
+
gem.add_development_dependency 'faraday_middleware'
|
22
25
|
end
|
data/lib/dekiru.rb
CHANGED
@@ -3,5 +3,12 @@ require "dekiru/railtie" if defined?(::Rails)
|
|
3
3
|
require "dekiru/helper"
|
4
4
|
require "dekiru/controller_additions"
|
5
5
|
|
6
|
+
require 'active_support'
|
7
|
+
require 'active_support/all'
|
8
|
+
require 'faraday'
|
9
|
+
require 'faraday_middleware'
|
10
|
+
|
6
11
|
module Dekiru
|
7
12
|
end
|
13
|
+
|
14
|
+
require_relative "dekiru/configure"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Dekiru
|
2
|
+
def self.configure(&block)
|
3
|
+
@configure ||= Configure.new
|
4
|
+
yield @configure if block_given?
|
5
|
+
@configure
|
6
|
+
end
|
7
|
+
|
8
|
+
class Configure
|
9
|
+
attr_accessor :monitor_email, :monitor_api_key, :error_handle
|
10
|
+
def initialize
|
11
|
+
@error_handle = -> (e) {}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Dekiru
|
2
|
+
module RakeMonitor
|
3
|
+
def resolve_args(args)
|
4
|
+
estimate_time = args.first.delete(:estimate_time)
|
5
|
+
[args, estimate_time]
|
6
|
+
end
|
7
|
+
|
8
|
+
def conn
|
9
|
+
@conn ||= Faraday.new(:url => 'https://job-mon.herokuapp.com') do |faraday|
|
10
|
+
faraday.request :url_encoded
|
11
|
+
faraday.request :json
|
12
|
+
faraday.response :json
|
13
|
+
faraday.adapter Faraday.default_adapter
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def api_key
|
18
|
+
Dekiru.configure.monitor_api_key
|
19
|
+
end
|
20
|
+
|
21
|
+
def monitor_email
|
22
|
+
Dekiru.configure.monitor_email
|
23
|
+
end
|
24
|
+
|
25
|
+
def job_start(task, estimate_time)
|
26
|
+
body = {
|
27
|
+
job: {
|
28
|
+
name: task.name,
|
29
|
+
end_time: Time.current.since(estimate_time),
|
30
|
+
email: monitor_email
|
31
|
+
}
|
32
|
+
}
|
33
|
+
response = conn.post "/api/apps/#{api_key}/jobs.json", body
|
34
|
+
response.body["id"]
|
35
|
+
rescue => e
|
36
|
+
Dekiru.configure.error_handle.call(e)
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def job_end(job_id)
|
41
|
+
if job_id
|
42
|
+
response = conn.put "/api/apps/#{api_key}/jobs/#{job_id}/finished.json", nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def task_with_monitor(*args, &block)
|
47
|
+
args, estimate_time = resolve_args(args)
|
48
|
+
task *args do |t|
|
49
|
+
job_id = job_start(t, estimate_time)
|
50
|
+
block.call
|
51
|
+
job_end(job_id)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
self.extend Dekiru::RakeMonitor
|
data/lib/dekiru/version.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'faraday'
|
3
|
+
class DekiruGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
desc 'Configures the dekiru job monitor'
|
7
|
+
def create_initializer_file
|
8
|
+
initializer 'dekiru.rb' do
|
9
|
+
<<-EOF
|
10
|
+
Dekiru.configure do |config|
|
11
|
+
config.monitor_email = "support+#{fetch_app_name}@sonicgarden.jp"
|
12
|
+
config.monitor_api_key = "#{fetch_api_key}"
|
13
|
+
config.error_handle = -> (e) { Bugsnag.notify(e) }
|
14
|
+
end
|
15
|
+
EOF
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def fetch_api_key
|
22
|
+
res = api_conn.post '/api/apps.json', { app: { name: fetch_app_name } }
|
23
|
+
res.body['api_key']
|
24
|
+
end
|
25
|
+
|
26
|
+
def fetch_app_name
|
27
|
+
File.basename(Rails.root)
|
28
|
+
end
|
29
|
+
|
30
|
+
def api_conn
|
31
|
+
@conn ||= Faraday.new(url: 'https://job-mon.herokuapp.com') do |faraday|
|
32
|
+
faraday.request :url_encoded
|
33
|
+
faraday.request :json
|
34
|
+
faraday.response :json
|
35
|
+
faraday.adapter Faraday.default_adapter
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dekiru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akihiro Matsumura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http_accept_language
|
@@ -66,6 +66,48 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.19.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.19.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: faraday
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: faraday_middleware
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
69
111
|
description: Usefull helper methods for Ruby on Rails
|
70
112
|
email:
|
71
113
|
- matsumura.aki@gmail.com
|
@@ -74,6 +116,7 @@ extensions: []
|
|
74
116
|
extra_rdoc_files: []
|
75
117
|
files:
|
76
118
|
- ".gitignore"
|
119
|
+
- ".ruby-version"
|
77
120
|
- ".travis.yml"
|
78
121
|
- Gemfile
|
79
122
|
- LICENSE
|
@@ -81,13 +124,16 @@ files:
|
|
81
124
|
- Rakefile
|
82
125
|
- dekiru.gemspec
|
83
126
|
- lib/dekiru.rb
|
127
|
+
- lib/dekiru/configure.rb
|
84
128
|
- lib/dekiru/controller_additions.rb
|
85
129
|
- lib/dekiru/helper.rb
|
86
130
|
- lib/dekiru/railtie.rb
|
131
|
+
- lib/dekiru/rake_monitor.rb
|
87
132
|
- lib/dekiru/smtp_check_mailer.rb
|
88
133
|
- lib/dekiru/tasks/delayed_job_queue_check.rake
|
89
134
|
- lib/dekiru/tasks/smtp_check.rake
|
90
135
|
- lib/dekiru/version.rb
|
136
|
+
- lib/generators/dekiru/dekiru_generator.rb
|
91
137
|
- spec/dekiru/helper_spec.rb
|
92
138
|
- spec/spec_helper.rb
|
93
139
|
homepage: ''
|
@@ -109,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
155
|
version: '0'
|
110
156
|
requirements: []
|
111
157
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.4.5
|
158
|
+
rubygems_version: 2.4.5.1
|
113
159
|
signing_key:
|
114
160
|
specification_version: 4
|
115
161
|
summary: Usefull helper methods for Ruby on Rails
|