snowman-io 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +4 -6
  4. data/bin/snowman +1 -1
  5. data/lib/config/mongoid.yml +5 -0
  6. data/lib/snowman-io.rb +62 -30
  7. data/lib/snowman-io/aggregate.rb +97 -0
  8. data/lib/snowman-io/api.rb +33 -65
  9. data/lib/snowman-io/api/agent.rb +27 -0
  10. data/lib/snowman-io/api/apps.rb +45 -0
  11. data/lib/snowman-io/api/auth_helpers.rb +76 -0
  12. data/lib/snowman-io/api/checks.rb +59 -0
  13. data/lib/snowman-io/api/extra/meteor.rb +45 -0
  14. data/lib/snowman-io/api/fridge.rb +14 -0
  15. data/lib/snowman-io/api/info.rb +30 -0
  16. data/lib/snowman-io/api/metrics.rb +115 -0
  17. data/lib/snowman-io/api/users.rb +231 -0
  18. data/lib/snowman-io/cli.rb +69 -0
  19. data/lib/snowman-io/launcher.rb +12 -11
  20. data/lib/snowman-io/loop/check_processor.rb +29 -0
  21. data/lib/snowman-io/loop/checks.rb +59 -0
  22. data/lib/snowman-io/loop/main.rb +43 -0
  23. data/lib/snowman-io/loop/ping.rb +25 -0
  24. data/lib/snowman-io/migration.rb +79 -0
  25. data/lib/snowman-io/models/aggregation.rb +15 -0
  26. data/lib/snowman-io/models/app.rb +61 -0
  27. data/lib/snowman-io/models/check.rb +48 -0
  28. data/lib/snowman-io/models/concerns/tokenable.rb +15 -0
  29. data/lib/snowman-io/models/data_point.rb +9 -0
  30. data/lib/snowman-io/models/deleted.rb +9 -0
  31. data/lib/snowman-io/models/following.rb +8 -0
  32. data/lib/snowman-io/models/metric.rb +36 -0
  33. data/lib/snowman-io/models/setting.rb +24 -0
  34. data/lib/snowman-io/models/user.rb +73 -0
  35. data/lib/snowman-io/options.rb +11 -3
  36. data/lib/snowman-io/report_mailer.rb +88 -0
  37. data/lib/snowman-io/reports.rb +16 -0
  38. data/lib/snowman-io/ui/AUTO_GENERATED_FOLDER +2 -0
  39. data/lib/snowman-io/ui/assets/ui-0e39dafcb798020fb855e325931c8451.css +1 -0
  40. data/lib/snowman-io/ui/assets/ui-d30809d0ae0a003d841fa95a352d624b.js +9 -0
  41. data/lib/snowman-io/ui/assets/vendor-7edfd1432c1bbd806306d5583c75b1fc.css +5 -0
  42. data/lib/snowman-io/ui/assets/vendor-c22e2ccc87c9bc7609b95939c308bc7f.js +24 -0
  43. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap-theme.css +0 -0
  44. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap-theme.css.map +0 -0
  45. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap-theme.min.css +0 -0
  46. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap.css +0 -0
  47. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap.css.map +0 -0
  48. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/css/bootstrap.min.css +0 -0
  49. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/fonts/glyphicons-halflings-regular.eot +0 -0
  50. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/fonts/glyphicons-halflings-regular.svg +0 -0
  51. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/fonts/glyphicons-halflings-regular.ttf +0 -0
  52. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/fonts/glyphicons-halflings-regular.woff +0 -0
  53. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/js/bootstrap.js +0 -0
  54. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/js/bootstrap.min.js +0 -0
  55. data/lib/snowman-io/{api/public/bootstrap → ui/bootstrap-3.3.1}/js/npm.js +0 -0
  56. data/lib/snowman-io/ui/crossdomain.xml +15 -0
  57. data/lib/snowman-io/ui/fonts/glyphicons-halflings-regular.eot +0 -0
  58. data/lib/snowman-io/ui/fonts/glyphicons-halflings-regular.svg +229 -0
  59. data/lib/snowman-io/ui/fonts/glyphicons-halflings-regular.ttf +0 -0
  60. data/lib/snowman-io/ui/fonts/glyphicons-halflings-regular.woff +0 -0
  61. data/lib/snowman-io/ui/index.html +175 -0
  62. data/lib/snowman-io/ui/robots.txt +2 -0
  63. data/lib/snowman-io/utils.rb +66 -0
  64. data/lib/snowman-io/version.rb +1 -1
  65. data/lib/snowman-io/views/layouts/custom.css +42 -0
  66. data/lib/snowman-io/views/layouts/main.html.erb +38 -0
  67. data/lib/snowman-io/views/layouts/styles.css +264 -0
  68. data/lib/snowman-io/views/layouts/transactional-email-templates-LICENSE +21 -0
  69. data/lib/snowman-io/views/report_mailer/check_triggered.html.erb +16 -0
  70. data/lib/snowman-io/views/report_mailer/checks/_human_last_value_limit.html.erb +2 -0
  71. data/lib/snowman-io/views/report_mailer/checks/_human_prev_day_datapoints_limit.html.erb +2 -0
  72. data/lib/snowman-io/views/report_mailer/daily_report.html.erb +40 -0
  73. data/lib/snowman-io/views/report_mailer/restore_password.html.erb +28 -0
  74. data/lib/snowman-io/views/report_mailer/send_invite.html.erb +32 -0
  75. data/lib/snowman-io/web.rb +28 -0
  76. data/lib/snowman-io/web_server.rb +107 -0
  77. data/snowman-io.gemspec +15 -5
  78. metadata +220 -49
  79. data/lib/snowman-io/api/public/README.md +0 -36
  80. data/lib/snowman-io/api/public/css/normalize.css +0 -406
  81. data/lib/snowman-io/api/public/css/style.css +0 -4
  82. data/lib/snowman-io/api/public/js/app.js +0 -13
  83. data/lib/snowman-io/api/public/js/libs/ember-1.8.1.js +0 -49740
  84. data/lib/snowman-io/api/public/js/libs/handlebars-v1.3.0.js +0 -2746
  85. data/lib/snowman-io/api/public/js/libs/jquery-1.10.2.js +0 -9789
  86. data/lib/snowman-io/api/public/tests/runner.css +0 -14
  87. data/lib/snowman-io/api/public/tests/runner.js +0 -13
  88. data/lib/snowman-io/api/public/tests/tests.js +0 -30
  89. data/lib/snowman-io/api/public/tests/vendor/qunit-1.12.0.css +0 -244
  90. data/lib/snowman-io/api/public/tests/vendor/qunit-1.12.0.js +0 -2212
  91. data/lib/snowman-io/api/views/index.erb +0 -26
  92. data/lib/snowman-io/api/views/layout.erb +0 -24
  93. data/lib/snowman-io/api/views/login.erb +0 -21
  94. data/lib/snowman-io/api/views/unpacking.erb +0 -21
  95. data/lib/snowman-io/check.rb +0 -49
  96. data/lib/snowman-io/check_result.rb +0 -15
  97. data/lib/snowman-io/checks/hosted_graphite.rb +0 -23
  98. data/lib/snowman-io/handler.rb +0 -27
  99. data/lib/snowman-io/notifiers/slack.rb +0 -76
  100. data/lib/snowman-io/processor.rb +0 -32
  101. data/lib/snowman-io/scheduler.rb +0 -42
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Mailgun
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,16 @@
1
+ <% content_for :header do %>
2
+ <tr>
3
+ <td class="alert <%= @danger ? "alert-bad" : "alert-warning" %>">
4
+ SnowmanIO: failed check at <%= @at.strftime("%Y-%m-%d %H:%M:%S") %>
5
+ </td>
6
+ </tr>
7
+ <% end %>
8
+
9
+ <table width="100%" cellpadding="0" cellspacing="0">
10
+ <tr><td class="content-block">
11
+ <%= render "report_mailer/checks/human_" + @check.template, check: @check %>
12
+ </td></tr>
13
+ <tr><td class="content-block center">
14
+ <%= link_to "Go to check", @base_url + "/apps/#{@check.metric.app.id}/checks", class: "btn-primary" %>
15
+ </td></tr>
16
+ </table>
@@ -0,0 +1,2 @@
1
+ <b><%= check.metric.name %></b> from <b><%= check.metric.app.name %></b>
2
+ is <%= check.cmp %> <%= check.value %>
@@ -0,0 +1,2 @@
1
+ <b><%= check.metric.name %></b> from <b><%= check.metric.app.name %></b>
2
+ previous day datapoints amount was <%= check.cmp %> <%= check.value %>
@@ -0,0 +1,40 @@
1
+ <% content_for :header do %>
2
+ <tr>
3
+ <td class="alert alert-good">
4
+ SnowmanIO: <%= @at.strftime("%Y-%m-%d") %>
5
+ </td>
6
+ </tr>
7
+ <% end %>
8
+
9
+ <table width="100%" cellpadding="0" cellspacing="0">
10
+ <% @report[:apps].each do |app| %>
11
+ <tr><td class="content-block header"><%= app[:name] %></td></tr>
12
+ <tr><td class="content-block">
13
+ <table width="100%" cellpadding="0" cellspacing="0" class="app-stats">
14
+ <tr>
15
+ <th class="first"></th>
16
+ <th>today</th>
17
+ <th>yesterday</th>
18
+ </tr>
19
+ <tr>
20
+ <td>Datapoints</td>
21
+ <td class="value">
22
+ <%= app["today"]["count"] || "-" %>
23
+ <% if app["today"].key?("count") && app["yesterday"].key?("count") %>
24
+ <% if app["today"]["count"] > app["yesterday"]["count"] %>
25
+ <span class="neutral">&#x25B2;</span>
26
+ <% elsif app["today"]["count"] == app["yesterday"]["count"] %>
27
+ <span class="white">&#x25BC;</span>
28
+ <% else %>
29
+ <span class="neutral">&#x25BC;</span>
30
+ <% end %>
31
+ <% else %>
32
+ <span class="white">&#x25B2;</span>
33
+ <% end %>
34
+ </td>
35
+ <td class="value"><%= app["yesterday"]["count"] || "-" %></td>
36
+ </tr>
37
+ </table>
38
+ </td></tr>
39
+ <% end %>
40
+ </table>
@@ -0,0 +1,28 @@
1
+ <% content_for :header do %>
2
+ <tr>
3
+ <td class="alert alert-info">
4
+ SnowmanIO: Password Restore
5
+ </td>
6
+ </tr>
7
+ <% end %>
8
+
9
+ <table width="100%" cellpadding="0" cellspacing="0">
10
+ <tr><td class="content-block">
11
+ Hello!
12
+ </td></tr>
13
+
14
+ <tr><td class="content-block">
15
+ Follow link below to restore your password
16
+ </td></tr>
17
+
18
+ <tr><td class="content-block">
19
+ <a href="<%= @url %>"><%= @url %></a>
20
+ </td></tr>
21
+
22
+ <tr><td class="content-block">
23
+ <em>
24
+ Yours truly,<br>
25
+ Snowman
26
+ </em>
27
+ </td></tr>
28
+ </table>
@@ -0,0 +1,32 @@
1
+ <% content_for :header do %>
2
+ <tr>
3
+ <td class="alert alert-info">
4
+ SnowmanIO: Invite
5
+ </td>
6
+ </tr>
7
+ <% end %>
8
+
9
+ <table width="100%" cellpadding="0" cellspacing="0">
10
+ <tr><td class="content-block">
11
+ Hello!
12
+ </td></tr>
13
+
14
+ <tr><td class="content-block">
15
+ <b><%= @by.name %></b> invites you to join <b>SnowmanIO</b>!
16
+ </td></tr>
17
+
18
+ <tr><td class="content-block">
19
+ Follow link below to accept invitation:
20
+ </td></tr>
21
+
22
+ <tr><td class="content-block">
23
+ <a href="<%= @url %>"><%= @url %></a>
24
+ </td></tr>
25
+
26
+ <tr><td class="content-block">
27
+ <em>
28
+ Yours truly,<br>
29
+ Snowman
30
+ </em>
31
+ </td></tr>
32
+ </table>
@@ -0,0 +1,28 @@
1
+ require 'sinatra'
2
+ require 'rack/ssl'
3
+
4
+ module SnowmanIO
5
+ class Web < Sinatra::Base
6
+ set :public_folder, File.dirname(__FILE__) + "/ui"
7
+ set :views, File.dirname(__FILE__) + "/ui"
8
+
9
+ use Rack::SSL, exclude: Proc.new { |env|
10
+ ENV['DEV_MODE'].to_i == 1 || !Setting.force_ssl?
11
+ }
12
+
13
+ before do
14
+ unless Setting.get(SnowmanIO::BASE_URL_KEY).present?
15
+ Setting.set(SnowmanIO::BASE_URL_KEY, request.base_url)
16
+ end
17
+ end
18
+
19
+ get "/ping" do
20
+ "PONG"
21
+ end
22
+
23
+ # Ember application
24
+ get '/*' do
25
+ send_file File.expand_path("../ui/index.html", __FILE__)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,107 @@
1
+ require 'reel'
2
+ require 'rack'
3
+
4
+ module SnowmanIO
5
+ class WebServer < Reel::Server::HTTP
6
+ attr_reader :app
7
+
8
+ class ConnectionHandler
9
+ # include Celluloid
10
+
11
+ def initialize(connection, app)
12
+ @connection = connection
13
+ @app = app
14
+ # async.run
15
+ run
16
+ rescue Reel::SocketError
17
+ @connection.close
18
+ end
19
+
20
+ def run
21
+ @connection.each_request do |request|
22
+ # TODO: support websockets
23
+ if request.websocket?
24
+ request.respond :bad_request, "WebSockets not supported"
25
+ else
26
+ route_request request
27
+ end
28
+ end
29
+ end
30
+
31
+ protected
32
+
33
+ # Compile the regex once
34
+ CONTENT_LENGTH_HEADER = %r{^content-length$}i
35
+
36
+ def route_request(request)
37
+ options = {
38
+ :method => request.method,
39
+ :input => request.body.to_s,
40
+ "REMOTE_ADDR" => request.remote_addr
41
+ }.merge(convert_headers(request.headers))
42
+
43
+ status, headers, body = @app.call ::Rack::MockRequest.env_for(request.url, options)
44
+
45
+ if body.respond_to? :each
46
+ # If Content-Length was specified we can send the response all at once
47
+ if headers.keys.detect { |h| h =~ CONTENT_LENGTH_HEADER }
48
+ # Can't use collect here because Rack::BodyProxy/Rack::Lint isn't a real Enumerable
49
+ full_body = ''
50
+ body.each { |b| full_body << b }
51
+ request.respond status_symbol(status), headers, full_body
52
+ else
53
+ request.respond status_symbol(status), headers.merge(:transfer_encoding => :chunked)
54
+ body.each { |chunk| request << chunk }
55
+ request.finish_response
56
+ end
57
+ else
58
+ SnowmanIO.logger.error("don't know how to render: #{body.inspect}")
59
+ request.respond :internal_server_error, "An error occurred processing your request"
60
+ end
61
+
62
+ body.close if body.respond_to? :close
63
+ end
64
+
65
+ # Those headers must not start with 'HTTP_'.
66
+ NO_PREFIX_HEADERS=%w[CONTENT_TYPE CONTENT_LENGTH].freeze
67
+
68
+ def convert_headers(headers)
69
+ Hash[headers.map { |key, value|
70
+ header = key.upcase.gsub('-','_')
71
+
72
+ if NO_PREFIX_HEADERS.member?(header)
73
+ [header, value]
74
+ else
75
+ ['HTTP_' + header, value]
76
+ end
77
+ }]
78
+ end
79
+
80
+ def status_symbol(status)
81
+ if status.is_a?(Fixnum)
82
+ Http::Response::STATUS_CODES[status].downcase.gsub(/\s|-/, '_').to_sym
83
+ else
84
+ status.to_sym
85
+ end
86
+ end
87
+ end
88
+
89
+ def initialize(app, options)
90
+ raise ArgumentError, "no host given" unless options[:host]
91
+ raise ArgumentError, "no port given" unless options[:port]
92
+
93
+ SnowmanIO.logger.info "Snowman WebServer started on http://#{options[:host]}:#{options[:port]}"
94
+
95
+ # TODO: not sure, maybe should log without verbose option too
96
+ app = Rack::CommonLogger.new(app, STDOUT) if options[:verbose]
97
+
98
+ super(options[:host], options[:port], &method(:on_connection))
99
+ @app = app
100
+ end
101
+
102
+ def on_connection(connection)
103
+ # connection.detach
104
+ ConnectionHandler.new(connection, @app)
105
+ end
106
+ end
107
+ end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Alexey Vakhov", "Artyom Keydunov"]
10
10
  spec.email = ["vakhov@gmail.com"]
11
11
  spec.summary = %q{The heart of snowman}
12
- spec.description = %q{Gem for continuously parameters checks}
12
+ spec.description = %q{SnowmanIO - your personal assistent}
13
13
  spec.homepage = "http://snowman.io"
14
14
  spec.license = "MIT"
15
15
 
@@ -20,14 +20,24 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency "sinatra", "~> 1.4"
23
- spec.add_dependency "sinatra-contrib", "~> 1.4"
23
+ spec.add_dependency "grape", "~> 0.11.0"
24
24
  spec.add_dependency "celluloid", "~> 0.16.0"
25
- spec.add_dependency "redis", "~> 3.1.0"
26
- spec.add_dependency "activesupport", "~> 4.1.8"
25
+ spec.add_dependency "reel", ">= 0.5.0"
26
+ spec.add_dependency "activesupport", "~> 4.1"
27
+ spec.add_dependency "actionmailer", "~> 4.1"
27
28
  spec.add_dependency "bcrypt", "~> 3.1"
29
+ spec.add_dependency "nokogiri", "~> 1.6"
30
+ spec.add_dependency "premailer", "~> 1.8"
31
+ spec.add_dependency "mongoid", "~> 4.0.0"
32
+ spec.add_dependency "rack-ssl", "~> 1.4"
28
33
 
29
34
  spec.add_development_dependency "bundler", "~> 1.7"
30
35
  spec.add_development_dependency "rake", "~> 10.0"
31
36
  spec.add_development_dependency "rspec", "~> 3.1"
32
- spec.add_development_dependency "capybara", "~> 2.4"
37
+ spec.add_development_dependency "coveralls"
38
+ spec.add_development_dependency 'rerun', '0.10.0'
39
+ spec.add_development_dependency 'timecop', "~> 0.7"
40
+ spec.add_development_dependency 'launchy', "~> 2.4"
41
+ spec.add_development_dependency 'letter_opener', "1.3"
42
+ spec.add_development_dependency 'rack-test', "~> 0.6.3"
33
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snowman-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Vakhov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-03 00:00:00.000000000 Z
12
+ date: 2015-06-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -26,19 +26,19 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.4'
28
28
  - !ruby/object:Gem::Dependency
29
- name: sinatra-contrib
29
+ name: grape
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.4'
34
+ version: 0.11.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.4'
41
+ version: 0.11.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: celluloid
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -54,33 +54,47 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: 0.16.0
56
56
  - !ruby/object:Gem::Dependency
57
- name: redis
57
+ name: reel
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.5.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.5.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: activesupport
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
74
  - - "~>"
61
75
  - !ruby/object:Gem::Version
62
- version: 3.1.0
76
+ version: '4.1'
63
77
  type: :runtime
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - "~>"
68
82
  - !ruby/object:Gem::Version
69
- version: 3.1.0
83
+ version: '4.1'
70
84
  - !ruby/object:Gem::Dependency
71
- name: activesupport
85
+ name: actionmailer
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: 4.1.8
90
+ version: '4.1'
77
91
  type: :runtime
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - "~>"
82
96
  - !ruby/object:Gem::Version
83
- version: 4.1.8
97
+ version: '4.1'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: bcrypt
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +109,62 @@ dependencies:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
111
  version: '3.1'
112
+ - !ruby/object:Gem::Dependency
113
+ name: nokogiri
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.6'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '1.6'
126
+ - !ruby/object:Gem::Dependency
127
+ name: premailer
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '1.8'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '1.8'
140
+ - !ruby/object:Gem::Dependency
141
+ name: mongoid
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 4.0.0
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 4.0.0
154
+ - !ruby/object:Gem::Dependency
155
+ name: rack-ssl
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '1.4'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '1.4'
98
168
  - !ruby/object:Gem::Dependency
99
169
  name: bundler
100
170
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +208,49 @@ dependencies:
138
208
  - !ruby/object:Gem::Version
139
209
  version: '3.1'
140
210
  - !ruby/object:Gem::Dependency
141
- name: capybara
211
+ name: coveralls
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: rerun
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - '='
229
+ - !ruby/object:Gem::Version
230
+ version: 0.10.0
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - '='
236
+ - !ruby/object:Gem::Version
237
+ version: 0.10.0
238
+ - !ruby/object:Gem::Dependency
239
+ name: timecop
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: '0.7'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '0.7'
252
+ - !ruby/object:Gem::Dependency
253
+ name: launchy
142
254
  requirement: !ruby/object:Gem::Requirement
143
255
  requirements:
144
256
  - - "~>"
@@ -151,7 +263,35 @@ dependencies:
151
263
  - - "~>"
152
264
  - !ruby/object:Gem::Version
153
265
  version: '2.4'
154
- description: Gem for continuously parameters checks
266
+ - !ruby/object:Gem::Dependency
267
+ name: letter_opener
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - '='
271
+ - !ruby/object:Gem::Version
272
+ version: '1.3'
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - '='
278
+ - !ruby/object:Gem::Version
279
+ version: '1.3'
280
+ - !ruby/object:Gem::Dependency
281
+ name: rack-test
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: 0.6.3
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: 0.6.3
294
+ description: SnowmanIO - your personal assistent
155
295
  email:
156
296
  - vakhov@gmail.com
157
297
  executables:
@@ -163,47 +303,78 @@ files:
163
303
  - LICENSE.txt
164
304
  - README.md
165
305
  - bin/snowman
306
+ - lib/config/mongoid.yml
166
307
  - lib/snowman-io.rb
308
+ - lib/snowman-io/aggregate.rb
167
309
  - lib/snowman-io/api.rb
168
- - lib/snowman-io/api/public/README.md
169
- - lib/snowman-io/api/public/bootstrap/css/bootstrap-theme.css
170
- - lib/snowman-io/api/public/bootstrap/css/bootstrap-theme.css.map
171
- - lib/snowman-io/api/public/bootstrap/css/bootstrap-theme.min.css
172
- - lib/snowman-io/api/public/bootstrap/css/bootstrap.css
173
- - lib/snowman-io/api/public/bootstrap/css/bootstrap.css.map
174
- - lib/snowman-io/api/public/bootstrap/css/bootstrap.min.css
175
- - lib/snowman-io/api/public/bootstrap/fonts/glyphicons-halflings-regular.eot
176
- - lib/snowman-io/api/public/bootstrap/fonts/glyphicons-halflings-regular.svg
177
- - lib/snowman-io/api/public/bootstrap/fonts/glyphicons-halflings-regular.ttf
178
- - lib/snowman-io/api/public/bootstrap/fonts/glyphicons-halflings-regular.woff
179
- - lib/snowman-io/api/public/bootstrap/js/bootstrap.js
180
- - lib/snowman-io/api/public/bootstrap/js/bootstrap.min.js
181
- - lib/snowman-io/api/public/bootstrap/js/npm.js
182
- - lib/snowman-io/api/public/css/normalize.css
183
- - lib/snowman-io/api/public/css/style.css
184
- - lib/snowman-io/api/public/js/app.js
185
- - lib/snowman-io/api/public/js/libs/ember-1.8.1.js
186
- - lib/snowman-io/api/public/js/libs/handlebars-v1.3.0.js
187
- - lib/snowman-io/api/public/js/libs/jquery-1.10.2.js
188
- - lib/snowman-io/api/public/tests/runner.css
189
- - lib/snowman-io/api/public/tests/runner.js
190
- - lib/snowman-io/api/public/tests/tests.js
191
- - lib/snowman-io/api/public/tests/vendor/qunit-1.12.0.css
192
- - lib/snowman-io/api/public/tests/vendor/qunit-1.12.0.js
193
- - lib/snowman-io/api/views/index.erb
194
- - lib/snowman-io/api/views/layout.erb
195
- - lib/snowman-io/api/views/login.erb
196
- - lib/snowman-io/api/views/unpacking.erb
197
- - lib/snowman-io/check.rb
198
- - lib/snowman-io/check_result.rb
199
- - lib/snowman-io/checks/hosted_graphite.rb
200
- - lib/snowman-io/handler.rb
310
+ - lib/snowman-io/api/agent.rb
311
+ - lib/snowman-io/api/apps.rb
312
+ - lib/snowman-io/api/auth_helpers.rb
313
+ - lib/snowman-io/api/checks.rb
314
+ - lib/snowman-io/api/extra/meteor.rb
315
+ - lib/snowman-io/api/fridge.rb
316
+ - lib/snowman-io/api/info.rb
317
+ - lib/snowman-io/api/metrics.rb
318
+ - lib/snowman-io/api/users.rb
319
+ - lib/snowman-io/cli.rb
201
320
  - lib/snowman-io/launcher.rb
202
- - lib/snowman-io/notifiers/slack.rb
321
+ - lib/snowman-io/loop/check_processor.rb
322
+ - lib/snowman-io/loop/checks.rb
323
+ - lib/snowman-io/loop/main.rb
324
+ - lib/snowman-io/loop/ping.rb
325
+ - lib/snowman-io/migration.rb
326
+ - lib/snowman-io/models/aggregation.rb
327
+ - lib/snowman-io/models/app.rb
328
+ - lib/snowman-io/models/check.rb
329
+ - lib/snowman-io/models/concerns/tokenable.rb
330
+ - lib/snowman-io/models/data_point.rb
331
+ - lib/snowman-io/models/deleted.rb
332
+ - lib/snowman-io/models/following.rb
333
+ - lib/snowman-io/models/metric.rb
334
+ - lib/snowman-io/models/setting.rb
335
+ - lib/snowman-io/models/user.rb
203
336
  - lib/snowman-io/options.rb
204
- - lib/snowman-io/processor.rb
205
- - lib/snowman-io/scheduler.rb
337
+ - lib/snowman-io/report_mailer.rb
338
+ - lib/snowman-io/reports.rb
339
+ - lib/snowman-io/ui/AUTO_GENERATED_FOLDER
340
+ - lib/snowman-io/ui/assets/ui-0e39dafcb798020fb855e325931c8451.css
341
+ - lib/snowman-io/ui/assets/ui-d30809d0ae0a003d841fa95a352d624b.js
342
+ - lib/snowman-io/ui/assets/vendor-7edfd1432c1bbd806306d5583c75b1fc.css
343
+ - lib/snowman-io/ui/assets/vendor-c22e2ccc87c9bc7609b95939c308bc7f.js
344
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap-theme.css
345
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap-theme.css.map
346
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap-theme.min.css
347
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap.css
348
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap.css.map
349
+ - lib/snowman-io/ui/bootstrap-3.3.1/css/bootstrap.min.css
350
+ - lib/snowman-io/ui/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot
351
+ - lib/snowman-io/ui/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg
352
+ - lib/snowman-io/ui/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf
353
+ - lib/snowman-io/ui/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff
354
+ - lib/snowman-io/ui/bootstrap-3.3.1/js/bootstrap.js
355
+ - lib/snowman-io/ui/bootstrap-3.3.1/js/bootstrap.min.js
356
+ - lib/snowman-io/ui/bootstrap-3.3.1/js/npm.js
357
+ - lib/snowman-io/ui/crossdomain.xml
358
+ - lib/snowman-io/ui/fonts/glyphicons-halflings-regular.eot
359
+ - lib/snowman-io/ui/fonts/glyphicons-halflings-regular.svg
360
+ - lib/snowman-io/ui/fonts/glyphicons-halflings-regular.ttf
361
+ - lib/snowman-io/ui/fonts/glyphicons-halflings-regular.woff
362
+ - lib/snowman-io/ui/index.html
363
+ - lib/snowman-io/ui/robots.txt
364
+ - lib/snowman-io/utils.rb
206
365
  - lib/snowman-io/version.rb
366
+ - lib/snowman-io/views/layouts/custom.css
367
+ - lib/snowman-io/views/layouts/main.html.erb
368
+ - lib/snowman-io/views/layouts/styles.css
369
+ - lib/snowman-io/views/layouts/transactional-email-templates-LICENSE
370
+ - lib/snowman-io/views/report_mailer/check_triggered.html.erb
371
+ - lib/snowman-io/views/report_mailer/checks/_human_last_value_limit.html.erb
372
+ - lib/snowman-io/views/report_mailer/checks/_human_prev_day_datapoints_limit.html.erb
373
+ - lib/snowman-io/views/report_mailer/daily_report.html.erb
374
+ - lib/snowman-io/views/report_mailer/restore_password.html.erb
375
+ - lib/snowman-io/views/report_mailer/send_invite.html.erb
376
+ - lib/snowman-io/web.rb
377
+ - lib/snowman-io/web_server.rb
207
378
  - snowman-io.gemspec
208
379
  homepage: http://snowman.io
209
380
  licenses: