dekiru 0.0.16 → 0.0.17

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: 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