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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 330d70144b34832a164e57edbb711725e08427bb
4
- data.tar.gz: ce33f3ed885a4a04cb3073bedda45637399cc925
3
+ metadata.gz: ff05387e945ee17a774a68e183fc7ffe083430fb
4
+ data.tar.gz: 581be62ea26d644bf1e19c13c6515404b11ebca9
5
5
  SHA512:
6
- metadata.gz: e5ba92b4cd09f5f257d1319dfa453af492fb31af3116a1d9feeffc5285813ccea8c185feedc166e80140134810ca8a80a16c283f5b5ec663b4c551aa172e855f
7
- data.tar.gz: 32a1d76e5fbb9c6af7d2485e57a3a3ef8d66ecda220f3738408a7887694aa4ad0d154f250006a94a1fe73212d5d7f9322c99e33c4a96203da7613f8285ef5f99
6
+ metadata.gz: 72a811cf2cade7273accb62a2118bed7e50b730fd17c5505aaa0b64f83bea914a32b2f0d1b0aa49ff36af7c3abe6647a5c9937eec0d480cc933bb0492b4ce8b9
7
+ data.tar.gz: 7d38401d0bdf6e5132b2d3a6523f8b63a9484c8d3f244d07f2da2979c8f47aa06f35669e18a9743f2cd0ba87bff4086eef167adddb641b014a1ca350d47f1e75
@@ -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
- TODO: Write usage instructions here
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Dekiru
2
- VERSION = "0.0.16"
2
+ VERSION = "0.0.17"
3
3
  end
@@ -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.16
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-03-04 00:00:00.000000000 Z
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