Fix generating dashboard poster on production

In commit 905ac48bb we mentioned:

> Since we don't use `asset_path` to reference assets in the public
> folder, we can safely disable the `unknown_asset_fallback` option.

However, `asset_path` is used by the wicked_pdf gem when calling the
`wicked_pdf_stylesheet_link_tag` method. This method also checks the CSS
files, searching for `url()` calls and converting any relative URLs
referenced there to absolute URLs.

However, when compiling assets on production, our `application.css` file
contains the following line imported from Leaflet which says:

```
behavior: url(#default#VML);
```

When passing this URL to `asset_path` (which is something the wicked_pdf
gem does automatically), it doesn't find the URL, and so this call
crashes unless we enable then `unknown_asset_fallback` option.

Since the dashboard poster is a feature we might remove in the future,
we're avoiding changing a Rails global configuration just for this
feature. So, instead of enabling the `unknown_asset_fallback` option,
we're changing the `poster.pdf` view so it doesn't load all the CSS of
the application but only the CSS it needs.

Note we aren't adding a test case because this bug is only present on
production environments when assets have been precompiled.
This commit is contained in:
Javi Martín
2022-01-11 16:54:41 +01:00
parent cfef15a313
commit c5103d3025
3 changed files with 8 additions and 1 deletions

View File

@@ -9,6 +9,7 @@
//= link ckeditor/config.js
//= link stat_graphs.js
//= link dashboard_graphs.js
//= link dashboard_poster.css
//= link print.css
//= link pdf_fonts.css
//= link_tree ../../../vendor/assets/images

View File

@@ -0,0 +1,6 @@
@import "font-awesome/variables";
@import "font-awesome/mixins";
@import "font-awesome/core";
@import "foundation_and_overrides";
@import "mixins/*";
@import "dashboard";

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%= wicked_pdf_stylesheet_link_tag "application" -%>
<%= wicked_pdf_stylesheet_link_tag "dashboard_poster" -%>
<%= wicked_pdf_stylesheet_link_tag "pdf_fonts" -%>
</head>
<body class="dashboard-poster-pdf">