eras 0.2.4 → 0.2.6

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
  SHA256:
3
- metadata.gz: bcabf38f85c19c28d26ec76db463d508a1bcd1f2a8ee97c2ba3c880f8fe8ffd9
4
- data.tar.gz: 96f5730869b8dc2651dedae5032407d06503ee92e8b4e2fa8e9d282685061436
3
+ metadata.gz: eac092a75031412c1ac1310c0aee54020655f0a5949eaab51b9757a576d81c2e
4
+ data.tar.gz: 32e1f8e528e35cecb3817c756bc3b36744ac1db9a0ef8b401f43f01655078614
5
5
  SHA512:
6
- metadata.gz: 861833d3957291c5a0ac83bbce52af9ded69fc40448c01542b85e2b1cfee45bf84f08b6a2ee3f63c9de7d714d84be69a2c03e4c5131da99ad552f090b9505666
7
- data.tar.gz: 3736ffd2be3718e0fcf380c2f5f6c01b94cac16af6186e1624693d57349fd09e2135e12e7d8c509cda79767435812bcf47756b67141914da5c249a9c74530906
6
+ metadata.gz: 55f51be8a2e27e43404b7f198fdb00bd7dd87d77cfac949dcc0b161fa9c222f0cb523e02f1041cb346c77f20eaecc3fc6638c74ede4f2eb99dfd0fcdf28d8eba
7
+ data.tar.gz: ebc26565ef50af9d8105c70ab08165ebf6fb8e92ae55d2fe58e05dc420bb70b63e7e2a72f463926d21fc70964d88ce69853b79668a9fd1f41d9f96d832f8b9e7
@@ -1,28 +1,28 @@
1
1
  module Eras
2
2
  class ErrorsController < ApplicationController
3
3
  before_action :set_file_attrs
4
+ before_action :set_environment, only: [:index, :show]
4
5
 
5
6
  def index
6
- @environment = params[:environment] || 'development'
7
- # TODO: We need to actually respect the adapter that's used,
8
- # and not just assume it's the filesystem adapter.
9
- @errors = Eras::Adapters::FileSystem.new.read_errors.filter { |e| e['context']['rails_env'] == @environment }
7
+ @errors = Eras.adapter.read_errors.filter { |e| e['context']['rails_env'] == @environment }
10
8
  end
11
9
 
12
10
  def show
13
- @error = Eras::Adapters::FileSystem.new.read_error(params[:id])
11
+ @error = Eras.adapter.read_error(params[:id])
14
12
  end
15
13
 
16
14
  def destroy
17
- Eras::Adapters::FileSystem.new.destroy_file
15
+ # TODO: rename to be adapter agnostic
16
+ Eras.adapter.destroy_file
17
+ end
18
+
19
+ def set_environment
20
+ @environment = params[:environment] || 'development'
18
21
  end
19
22
 
20
23
  def set_file_attrs
21
- # TODO: We need to store the active adapter as a singleton somewhere
22
- # so we can use it places instead of creating new ones.
23
- adapter = Eras::Adapters::FileSystem.new
24
- @file_path = adapter.path
25
- @file_size = adapter.file_size
24
+ @file_path = Eras.adapter.path
25
+ @file_size = Eras.adapter.file_size
26
26
  end
27
27
  end
28
28
  end
@@ -31,7 +31,7 @@
31
31
  <%= error.dig("error", "message") %></td>
32
32
  <td>
33
33
  <div class="flex space-x-2 justify-center">
34
- <a href="<%= error_path(error['id'])%>"
34
+ <a href="<%= error_path(id: error['id'], environment: @environment)%>"
35
35
  class="inline-block px-6 py-2.5 bg-blue-600 text-white font-medium text-xs leading-tight uppercase rounded shadow-md hover:bg-blue-700 hover:shadow-lg focus:bg-blue-700 focus:shadow-lg focus:outline-none focus:ring-0 active:bg-blue-800 active:shadow-lg transition duration-150 ease-in-out">View</a>
36
36
  </div>
37
37
  </td>
@@ -3,7 +3,7 @@
3
3
 
4
4
  <p><%= @error.dig('error', 'message') %></p>
5
5
  <a
6
- href="<%= errors_path %>"
6
+ href="<%= errors_path(environment: @environment) %>"
7
7
  class="inline-block px-6 py-2.5 mt-4 bg-blue-600 text-white font-medium text-xs leading-tight uppercase rounded shadow-md hover:bg-blue-700 hover:shadow-lg focus:bg-blue-700 focus:shadow-lg focus:outline-none focus:ring-0 active:bg-blue-800 active:shadow-lg transition duration-150 ease-in-out"
8
8
  data-mdb-ripple="true"
9
9
  data-mdb-ripple-color="light"
@@ -12,6 +12,6 @@
12
12
  </a>
13
13
  <hr class="my-6 border-gray-300" />
14
14
  <pre>
15
- <code class="whitespace-pre-line text-xs"><%= @error.dig('error', 'backtrace').strip %></code>
15
+ <code class="whitespace-pre-line text-xs"><%= @error.dig('error', 'backtrace')&.strip %></code>
16
16
  </pre>
17
17
  </div>
@@ -1,16 +1,21 @@
1
1
  module Eras
2
2
  module Adapters
3
3
  class FileSystem
4
+ class Error < StandardError; end
5
+
4
6
  include ActionView::Helpers::NumberHelper
5
7
  attr_reader :path
6
8
 
7
- def initialize(path = nil)
8
- if path.nil?
9
+ def initialize(dir = nil)
10
+ if dir.nil?
9
11
  dir = Rails.root.join("tmp", "eras")
12
+
10
13
  Dir.mkdir(dir) unless File.exists?(dir)
11
14
  end
12
- # TODO: Actually use the path
13
- @path = Rails.root.join("tmp", "eras", "errors.json")
15
+
16
+ raise Error, "Directory #{dir} does not exist" unless File.exists?(dir)
17
+
18
+ @path = File.join(dir, "errors.json")
14
19
  end
15
20
 
16
21
  def write_error(data)
@@ -0,0 +1,12 @@
1
+ require "eras/adapters/file_system"
2
+
3
+ module Eras
4
+ class Config
5
+ attr_accessor :adapter, :ignored_error_classes
6
+
7
+ def initialize
8
+ @adapter = Eras::Adapters::FileSystem.new
9
+ @ignored_error_classes = []
10
+ end
11
+ end
12
+ end
@@ -1,10 +1,8 @@
1
1
  module Eras
2
2
  class ErrorReporter
3
- def initialize(adapter: Eras::Adapters::FileSystem.new)
4
- @adapter = adapter
5
- end
6
-
7
3
  def report(error, handled:, severity:, context:, source: nil)
4
+ return if Eras.config.ignored_error_classes.include?(error.class.name)
5
+
8
6
  context = context.merge(rails_env: ::Rails.env).transform_values(&:to_s)
9
7
 
10
8
  data = {
@@ -15,10 +13,10 @@ module Eras
15
13
  },
16
14
  handled: handled,
17
15
  severity: severity,
18
- context: context, # ActionController.to_s causes stack overflow
16
+ context: context,
19
17
  source: source
20
18
  }
21
- @adapter.write_error(data)
19
+ Eras.adapter.write_error(data)
22
20
  end
23
21
  end
24
22
  end
data/lib/eras/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eras
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.6"
3
3
  end
data/lib/eras.rb CHANGED
@@ -1,7 +1,17 @@
1
1
  require "eras/version"
2
2
  require "eras/engine"
3
- require "eras/adapters/file_system"
3
+ require "eras/config"
4
4
 
5
5
  module Eras
6
- # Your code goes here...
6
+ def self.config
7
+ @config ||= Eras::Config.new
8
+ end
9
+
10
+ def self.configure
11
+ yield config
12
+ end
13
+
14
+ def self.adapter
15
+ config.adapter
16
+ end
7
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eras
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bobby McDonald
@@ -65,6 +65,7 @@ files:
65
65
  - config/tailwind.config.js
66
66
  - lib/eras.rb
67
67
  - lib/eras/adapters/file_system.rb
68
+ - lib/eras/config.rb
68
69
  - lib/eras/engine.rb
69
70
  - lib/eras/error_reporter.rb
70
71
  - lib/eras/version.rb