07 Jul 2024
First, introduce a new folder called fonts
into assets. You also need to create the folder.
# config/application.rb
config.assets.paths << Rails.root.join("app", "assets", "fonts")
Then, setup a folder structure with the font assets your want to use. Put the file that contains all @font-face
declarations into app/assets/stylesheets
.
I’m using Inter and it has a CSS file with all font-faces. I’ve moved the CSS file into app/asserts/stylesheets/vendor
, I like my stylesheets neat and structured.
Here is the folder structure:
# app/assets/
.
├── builds/
├── config/
├── fonts/
│ └── Inter-3.19
│ ├── Inter-Black.woff
│ ├── Inter-Black.woff2
│ ├── ...
│ ├── ...
│ └── Inter.var.woff2
├── images/
└── stylesheets/
├── application.sass.scss
└── vendor
└── inter-3.19.scss
Make sure the @font-face
declarations point into correct folder.
For my needs, I need to add Inter-3.19
into each font-face url since it’s located in subfolder in fonts
-folder.
Find and replace all occurences of
src: url("Inter-roman.var.woff2?v=3.19") format("woff2");
with
src: url("Inter-3.19/Inter-roman.var.woff2?v=3.19") format("woff2");
Finally, import the fonts in your CSS. Add the following into your root CSS file.
@use 'vendor/Inter-3.19';
Prevent your log files growing too big and filling up your server storage.
# config/environments/production.rb
config.logger = Logger.new(config.paths["log"].first, "weekly")
bundle add ruby-lsp-rails
Your editor should pick it up automatically, at least Sublime Text does it.
I’m using Mailcatcher to do my email styling in development mode.
First, install mailcatcher
gem.
gem install mailcatcher
Setup the mail configuration in development.
# config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: "127.0.0.1", port: 1025 }
config.action_mailer.raise_delivery_errors = false
Add mailcatcher in your development Procfile. There are similar gems out there, but mailcatcher fits me needs perfectly. 👌
# Procfile.dev
mail: mailcatcher --foreground
The --foreground
switch keeps it running in same process and does not daemonize it into background. This way Foreman
is able to stop mailcatcher
process along with other processed defined in Procfile.dev
.
This blog post is written entirely for me. This saves me from searching the answers from internet everytime I start a new project.
Some of thos snippets are very simple, but I cannot seem to memorize them into my brain. I still have to search bunch of simple stuff when programming. For example, the class that I need to inherit from when writing a unit test, I just don’t remember it.
By the way, it’s ActiveSupport::TestCase
.