http-cat-rails 1.0.0 → 1.1.0

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: 54497b9383f6690bc586dad711065d9bb6bb589583e34e86a44499af4bb2ec49
4
- data.tar.gz: a8ba1f1381eab9dfc6bc1754320fc79da60f49965b00152e112d2f5e7d4e46a8
3
+ metadata.gz: '0791742ed1e6ca6929799b1d0baa8fc0e3954cd8df323b2c3b50d6999ff16e49'
4
+ data.tar.gz: a14448d8a91b93d91d5302b795168d9f3eb8b0fb75c34289fc933a394c86dd69
5
5
  SHA512:
6
- metadata.gz: 282abceebfe10600ba97fc57c9ae30c300c9c0b5960f6c00ce3b10d2541f1e9a8e4a86d62f4d288ea82f417e0bcd45776b654c3e02f78c6b18a2b2bd5af32652
7
- data.tar.gz: 03eaa0d98b99bf46ced75a362024a2a7ae4c99f273c5cfa5a2d7d2cc5271b852b6ac4ebf0c5463ba98f52840cdb2f92791745c05aaa3b3024b0b8e522bf3459e
6
+ metadata.gz: da4f093e927466f231cbc337bff2e3860a2e1d51238dcdb9e1e25163d28acbdb00944f1244fe76558fccaa53f57c5690c3f86200f3634faafe87444863c71116
7
+ data.tar.gz: c4c388cda49bc6a0a871a71ff10b05fbc30b2a981c84d469d87fa1577b2bb45c7d4d46435e1c476534817e1ccca560d31a27591efb9b33b8b19e261c8df85347
data/README.md CHANGED
@@ -1,10 +1,62 @@
1
1
  # Http::Cat::Rails
2
- Short description and motivation.
3
2
 
4
- ## Usage
5
- How to use my plugin.
3
+ http-cat-rails is a configurable gem that changes every http-error page in your rails application with an image of a cute
4
+ little cat, that describes _purrfectly_ the error code (credits for the default images to https://http.cat)
5
+
6
+ ![Example](images/example.png)
7
+
8
+ ## Configuration
9
+
10
+ This gem is highly customizable: you could even decide to self host your own error images, and use them.
11
+ To change this gem's behaviour, you can create a http_cat_rails.rb inside /config/initializers, and structure it as
12
+ follows:
13
+
14
+ ```ruby
15
+ Http::Cat::Rails.configure do |c|
16
+ c.base_url = "https://www.myurl.com/"
17
+ c.status_codes = { "404": "code_name", "500": "code_name_2" }
18
+ c.layout = "application"
19
+ c.extension = :jpg
20
+ end
21
+ ```
22
+
23
+ In this example, if an error 404 is raised, your page will load an image inside your application.html.erb from the following
24
+ url: "https://www.myurl.com/404.jpg"
25
+
26
+ ### Base Url (default: "https://http.cat/")
27
+
28
+ This option is used to set the base url to retrieve images
29
+
30
+ ### Status Codes (default: _a very long hash_)
31
+
32
+ This option is used to pass an Hash of status codes, to limit them, or change the url visited. The value of each
33
+ element must be **unique**, since it's used to define a function.
34
+
35
+ ### Layout (default: "layout_default")
36
+
37
+ - "application" to embed http error page inside your application.html.erb
38
+ - false to don't have a layout
39
+ - "layout_default" (default option: just a black background)
40
+ - "custom_error_layout" to embed http error page inside "/views/layouts/custom_error_layout.html.erb"
41
+
42
+ ### Extension (default: :jpg)
43
+
44
+ Extension to insert in the url. Can also be false or nil, to dont include an extension
45
+
46
+ ### CSS
47
+
48
+ The img tag that contains the image has the following class: "http_error_image"
49
+ You can customize its style using that
50
+
51
+ ## Summary
52
+
53
+ url_to_visit:
54
+ ```ruby
55
+ "#{base_url}#{code_of_this_error}#{".#{extension}" if extension}"
56
+ ```
6
57
 
7
58
  ## Installation
59
+
8
60
  Add this line to your application's Gemfile:
9
61
 
10
62
  ```ruby
@@ -12,17 +64,34 @@ gem "http-cat-rails"
12
64
  ```
13
65
 
14
66
  And then execute:
67
+
15
68
  ```bash
16
69
  $ bundle
17
70
  ```
18
71
 
19
72
  Or install it yourself as:
73
+
20
74
  ```bash
21
75
  $ gem install http-cat-rails
22
76
  ```
23
77
 
78
+ Then, you'll need to add this line to your application.rb:
79
+
80
+ ```ruby
81
+ config.exceptions_app = self.routes
82
+ ```
83
+
84
+ ## Troubleshooting
85
+
86
+ This gem won't work if your application.rb or <your_environment>.rb contains the following line
87
+
88
+ ```ruby
89
+ config.consider_all_requests_local = true
90
+ ```
91
+
24
92
  ## Contributing
25
- Contribution directions go here.
93
+
94
+ It's a small project, but if you want to contribute feel free to send a Pull Request, or open an Issue
26
95
 
27
96
  ## License
28
97
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -2,7 +2,7 @@ class ErrorsController < ApplicationController
2
2
  Http::Cat::Rails.status_codes.each do |code, desc|
3
3
  define_method(desc.downcase.gsub(' ', '_')) do
4
4
  @code = code
5
- render 'error', layout: false
5
+ render 'error', layout: Http::Cat::Rails.layout
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1 @@
1
- <body style="margin: 0">
2
- <div style="width: 100vw; height: 100vh; background: black; display: flex; align-items: center; justify-content: center">
3
- <%= image_tag "#{Http::Cat::Rails.base_url}#{@code}.jpg", width: "50%" %>
4
- </div>
5
- </body>
1
+ <%= image_tag "#{Http::Cat::Rails.base_url}#{@code}#{".#{Http::Cat::Rails.extension}" if Http::Cat::Rails.extension}", width: "50%", class: "http_error_image" %>
@@ -0,0 +1,5 @@
1
+ <body style="margin: 0">
2
+ <div style="width: 100vw; height: 100vh; background: black; display: flex; align-items: center; justify-content: center">
3
+ <%= yield %>
4
+ </div>
5
+ </body>
@@ -28,10 +28,12 @@ module Http
28
28
  '509': 'Bandwidth Limit Exceeded', '510': 'Not Extended', '511': 'Network Authentication Required',
29
29
  '521': 'Web Server Is Down', '522': 'Connection Timed Out', '523': 'Origin Is Unreachable',
30
30
  '525': 'SSL Handshake Failed', '530': 'Site Frozen', '599': 'Network Connect Timeout Error' },
31
- base_url: "https://http.cat/"
31
+ base_url: "https://http.cat/",
32
+ extension: :jpg,
33
+ layout: "layout_default"
32
34
  }.freeze
33
35
 
34
- attr_writer :status_codes, :base_url
36
+ attr_writer :status_codes, :base_url, :extension, :layout
35
37
 
36
38
  def configure
37
39
  yield self
@@ -45,6 +47,13 @@ module Http
45
47
  @base_url || DEFAULTS[:base_url]
46
48
  end
47
49
 
50
+ def extension
51
+ @extension || DEFAULTS[:extension]
52
+ end
53
+
54
+ def layout
55
+ @layout || DEFAULTS[:layout]
56
+ end
48
57
  end
49
58
  end
50
59
  end
@@ -1,7 +1,7 @@
1
1
  module Http
2
2
  module Cat
3
3
  module Rails
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-cat-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gamberi Elia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-12 00:00:00.000000000 Z
11
+ date: 2023-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,6 +36,7 @@ files:
36
36
  - Rakefile
37
37
  - app/controllers/errors_controller.rb
38
38
  - app/views/errors/error.html.erb
39
+ - app/views/layouts/layout_default.html.erb
39
40
  - config/routes.rb
40
41
  - lib/http/cat/configuration.rb
41
42
  - lib/http/cat/rails.rb