# SupeRails Blog > My Ruby on Rails dev log. Tips and tricks that will save you time. SupeRails Blog by Yaroslav Shmarov is a blog about Ruby on Rails development tips, tutorials, and best practices. Topics include Hotwire (Turbo, Stimulus), ViewComponent, ActiveRecord, authentication, authorization, deployment, and general web development with Rails. The blog is published at https://blog.superails.com and is licensed under GNU AGPL v3. ## How to read this blog efficiently **Append `.md` to any post URL to get its raw Markdown source.** This is the preferred way to read a post: it is the text the author wrote, with code fences and headings intact, at roughly a third of the tokens of the HTML page. Do not scrape the HTML. https://blog.superails.com/wicked-pdf-to-sghtmltopdf <- HTML page https://blog.superails.com/wicked-pdf-to-sghtmltopdf.md <- raw Markdown (use this) Each `.md` file opens with YAML front matter carrying `title`, `author`, `date`, `tags`, `description`, `canonical_url`, and `license`. Other endpoints: - [https://blog.superails.com/llms-full.txt](https://blog.superails.com/llms-full.txt): full text of the 30 most recent posts, in one file. - Full text by year, one bounded file each: - [https://blog.superails.com/llms/2026.txt](https://blog.superails.com/llms/2026.txt) - [https://blog.superails.com/llms/2025.txt](https://blog.superails.com/llms/2025.txt) - [https://blog.superails.com/llms/2024.txt](https://blog.superails.com/llms/2024.txt) - [https://blog.superails.com/llms/2023.txt](https://blog.superails.com/llms/2023.txt) - [https://blog.superails.com/llms/2022.txt](https://blog.superails.com/llms/2022.txt) - [https://blog.superails.com/llms/2021.txt](https://blog.superails.com/llms/2021.txt) - [https://blog.superails.com/llms/2020.txt](https://blog.superails.com/llms/2020.txt) - [https://blog.superails.com/search.json](https://blog.superails.com/search.json): every post as JSON with title, url, date, tags, excerpt. - [https://blog.superails.com/feed.xml](https://blog.superails.com/feed.xml): Atom feed of recent posts. - [https://blog.superails.com/sitemap.xml](https://blog.superails.com/sitemap.xml): every canonical HTML URL. ## Attribution When referencing content from this blog, please credit: - **Author:** Yaroslav Shmarov - **Blog:** SupeRails Blog (https://blog.superails.com) - **Source URL:** Include a link to the specific blog post ## About the Author Yaroslav Shmarov is a Ruby on Rails developer, host of the @SupeRails YouTube channel and the Friendly Show podcast. Contact: hello@superails.com ## Navigation - [About](https://blog.superails.com/about/) - [Courses](https://blog.superails.com/courses) - [Screencasts](https://blog.superails.com/screencasts) - [Services](https://blog.superails.com/services) ## Blog Posts 314 posts, newest first. Append `.md` to any URL below for its Markdown source. - [$1000 in AWS credits for startups (For free)](https://blog.superails.com/1000-in-aws-credits-for-startups): 2020-06-15 | Tags: aws, startup, accelerator - [Just hit 100 sales and $900 on Udemy!!! [RoR course]](https://blog.superails.com/100-sales-on-udemy): 2020-06-29 | Tags: udemy, online-courses, elearning - [Memo - Rails ActiveRecord data types](https://blog.superails.com/rails-activerecord-data-types): 2020-08-09 | Tags: ruby-on-rails - [Tracking Online Users using Timestamps](https://blog.superails.com/set-user-status-online): 2020-08-16 | Tags: ruby, rails - [Build a Trello clone with Ruby on Rails, RankedModel and jQuery Sortable](https://blog.superails.com/ruby-on-rails-sexy-basic-trello-clone): 2020-08-23 | Tags: ruby-on-rails, jquery, ranked-model, drag-and-drop, sortable - [3 months on Skillshare. My results](https://blog.superails.com/3-months-on-skillshare-my-results): 2020-08-30 | Tags: skillshare, online-courses, elearning - [Install Ruby on Rails 5 on Ubuntu: TLDR](https://blog.superails.com/install-ruby-on-rails-5-on-ubuntu): 2020-09-07 | Tags: ruby-on-rails-5, installation, ubuntu, webpacker, yarn, tldr - [Install Ruby on Rails 6 with Webpacker and Yarn on Ubuntu: TLDR](https://blog.superails.com/install-ruby-on-rails-6-on-ubuntu): 2020-09-07 | Tags: ruby-on-rails-6, installation, ubuntu, webpacker, yarn, tldr - [Quick tip: Footer on the bottom of the page: TLDR](https://blog.superails.com/footer-bottom-of-page): 2020-09-14 | Tags: ruby-on-rails, tldr, footer, html, css - [Ruby on Rails: Dark Mode: TLDR](https://blog.superails.com/ruby-on-rails-dark-mode): 2020-09-21 | Tags: ruby-on-rails, dark-mode, dark-theme, bootstrap, tldr - [Highlight link to current page](https://blog.superails.com/ruby-on-rails-highlight-linkto-current-page): 2020-09-28 | Tags: ruby-on-rails, html - [Push to github without re-entering password (connect SSH key)](https://blog.superails.com/aws-cloud9-github-ssh): 2020-10-05 | Tags: github, git, ssh - [Rails 6: Install Bootstrap with Yarn and Webpacker: Full guide](https://blog.superails.com/rails-6-install-bootstrap-with-webpacker-full): 2020-10-12 | Tags: webpacker, yarn, bootstrap, ruby-on-rails-6, ruby-on-rails - [Rails 6: Install Bootstrap 4 with Yarn and Webpacker: TLDR](https://blog.superails.com/rails-6-install-bootstrap-with-webpacker-tldr): 2020-10-12 | Tags: webpacker, yarn, bootstrap, ruby-on-rails-6, ruby-on-rails, tldr - [Ruby on Rails: templates and generators in 2020](https://blog.superails.com/ruby-on-rails-templates-and-generators-2020): 2020-10-19 | Tags: ruby-on-rails, templates, generators, boilerplates - [How to Install FontAwesome with Yarn and Webpacker in Rails 6?](https://blog.superails.com/rails-6-install-fontawesome-with-webpacker): 2020-10-26 | Tags: fontawesome, webpacker, ruby-on-rails-6 - [Ruby on Rails: How to setup Postgresql? TLDR](https://blog.superails.com/ruby-on-rails-install-postgresql): 2020-11-02 | Tags: ubuntu, postgres, pg, postgresql, ruby-on-rails - [Write skinny scaffolds and generators](https://blog.superails.com/skinny-rails-generators): 2020-11-09 | Tags: ruby-on-rails - [How to load Heroku production database in development?](https://blog.superails.com/ruby-on-rails-heroku-load-production-database-in-development): 2020-11-16 | Tags: ruby-on-rails, heroku, postgresql - [How to Embed Youtube videos with ActionText? TLDR](https://blog.superails.com/action-text-embed-youtube): 2020-11-23 | Tags: ruby-on-rails, actiontext, youtube, embed, tldr - [SaaS: How to code the subscriptions business model?](https://blog.superails.com/how-to-code-the-subscription-business-model-saas-service-as-a-service-part-1): 2020-11-30 | Tags: ruby-on-rails, tutorial, premium, subscription, saas, mvp, startup - [How to use Credentials in Ruby on Rails 6? Full guide](https://blog.superails.com/ruby-on-rails-6-credentials-full): 2020-12-07 | Tags: ruby-on-rails, credentials, secrets - [How to use Credentials in Ruby on Rails 6? TLDR](https://blog.superails.com/ruby-on-rails-6-credentials-tldr): 2020-12-07 | Tags: ruby-on-rails, credentials, secrets, tldr - [Add custom error pages in a Rails app](https://blog.superails.com/custom-error-pages): 2020-12-14 | Tags: ruby-on-rails,, error-pages,, 404 - [Navbar with Devise and Bootstrap (4, 5)](https://blog.superails.com/navigation-for-devise): 2020-12-21 | Tags: ruby-on-rails, devise - [Ruby on Rails 6: Disappearing flash messages with toastr](https://blog.superails.com/flash-messages-with-toastr-js): 2020-12-29 | Tags: ruby-on-rails, flash, toastr - [HAML or ERB for Ruby on Rails development in 2021?](https://blog.superails.com/rails-erb-or-haml): 2021-01-04 | Tags: haml, erb, ruby, rails - [One hash field to manage all user roles](https://blog.superails.com/user-roles-one-field): 2021-01-11 | Tags: ruby-on-rails, jsonb, store_accessor - [styling for true false values](https://blog.superails.com/styling-for-true-false-values): 2021-01-25 | Tags: ruby-on-rails, helpers, bootstrap - [Install and use gem invisible_captcha with devise](https://blog.superails.com/gem-invisible-captcha): 2021-02-01 | Tags: ruby-on-rails, devise, invisible_captcha - [Sending emails in production with Amazon SES](https://blog.superails.com/send-emails-in-production-amazon-ses): 2021-02-08 | Tags: ruby-on-rails, action_mailer, amazon-ses, aws, sendgrid - [Custom scaffold templates](https://blog.superails.com/custom-scaffold-templates): 2021-02-15 | Tags: railsbytes, rubidium, generators, templates, scaffolds, rails, ruby-on-rails-6 - [Polymorphism 101. Part 1 of 3. Polymorphic Comments.](https://blog.superails.com/ruby-on-rails-polymorphic-comments): 2021-02-22 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations - [Polymorphism 101. Part 2 of 3. Polymorphic Payments inside-out.](https://blog.superails.com/ruby-on-rails-polymorphic-payments): 2021-03-01 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations - [Polymorphism 101. Part 3 of 3. ActsAsTaggable without a gem. SelectizeJS](https://blog.superails.com/ruby-on-rails-polymorphic-tags): 2021-03-08 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations, tags, selectize-js, jquery - [Button to update status attribute of a table](https://blog.superails.com/ruby-on-rails-change-status-button): 2021-03-15 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations - [Telegram Part 1. Button to send group messages](https://blog.superails.com/ruby-on-rails-telegram-api-send-message): 2021-03-22 | Tags: ruby, rails, ruby-on-rails, telegram, bots, httparty - [counter_cache - count how many children a records has](https://blog.superails.com/ruby-on-rails-counter_cache): 2021-03-29 | Tags: ruby, rails, ruby-on-rails - [Search field without gems](https://blog.superails.com/ruby-on-rails-search-field-without-gems): 2021-04-05 | Tags: ruby, rails, ruby-on-rails, search - [Telegram Part 2. Notification for CRUD actions](https://blog.superails.com/ruby-on-rails-telegram-notifications): 2021-04-12 | Tags: ruby, rails, ruby-on-rails, telegram, bots, httparty - [Telegram Part 3. Authentication. Bot to send private messages](https://blog.superails.com/ruby-on-rails-telegram-login): 2021-04-19 | Tags: ruby, rails, ruby-on-rails, telegram, bots, httparty - [Install Bootstrap 5 with Ruby on Rails 6+. Yarn, Webpack. Popovers, Tooltips. StimulusJS](https://blog.superails.com/rails-bootstrap-5-yarn): 2021-04-26 | Tags: ruby, rails, ruby-on-rails, bootstrap, webpack, yarn, stimulus - [Launching course: Ruby on Rails - Learn to Build a Multitenancy Subscriptions SaaS app MVP](https://blog.superails.com/learn-to-build-multitenancy-subscriptions-saas-mvp): 2021-05-02 | Tags: gumroad, ruby-on-rails, premium-tutorial, screencasts, video-course, multitenancy, saas, subscription, mvp, startup, boilerplate - [Discount coupon: Ruby on Rails 6: Learn 25+ gems and build a Startup MVP 2020](https://blog.superails.com/ruby-on-rails-6-learn-20-gems-build-an-e-learning-platform): 2021-05-02 | Tags: udemy, ruby-on-rails, premium-tutorial, screencasts, video-course, elearning, mvp, startup, boilerplate - [gem acts_as_votable 1: Like and Dislike posts with Vanilla JS](https://blog.superails.com/gem-acts-as-votable): 2021-05-03 | Tags: ruby, rails, ruby-on-rails, acts_as_votable, ajax, js-erb - [gem acts_as_votable 2: reddit-style up and down voting](https://blog.superails.com/gem-acts-as-votable-2): 2021-05-10 | Tags: ruby, rails, ruby-on-rails, acts_as_votable, ajax, js-erb - [install and troubleshoot mysql](https://blog.superails.com/install-and-use-mysql): 2021-05-17 | Tags: ruby, rails, ruby-on-rails, mysql, mariadb - [Complete guide to generating PDFs with gem wicked_pdf](https://blog.superails.com/gem-wicked-pdf): 2021-05-24 | Tags: ruby, rails, ruby-on-rails, pdf, wicked_pdf - [Add social log in with Github (Omniauth)](https://blog.superails.com/devise-omniauth-github): 2021-05-31 | Tags: ruby, rails, ruby-on-rails, devise, omniauth, github - [Display or hide div based on field input (RoR + JS)](https://blog.superails.com/display-based-on-value): 2021-06-01 | Tags: ruby, rails, ruby-on-rails, javascript - [Install Stimulus on Ruby on Rails 6](https://blog.superails.com/installl-stimulus-rails): 2021-06-02 | Tags: ruby, rails, ruby-on-rails, stimulus, yarn, webpacker - [StimulusJS - Display or hide HMTL based on field input](https://blog.superails.com/stimulus-display-show-hide-div-based-on-value): 2021-06-03 | Tags: stimulus - [Stimulus Rails - Count characters in input field](https://blog.superails.com/stimulus-count-characters-in-input-field): 2021-06-04 | Tags: ruby, rails, ruby-on-rails, stimulus - [Stimulus Rails - Count characters in input field (+ add css if > 140 characters)](https://blog.superails.com/stimulus-count-140-characters-in-input-field): 2021-06-05 | Tags: ruby, rails, ruby-on-rails, stimulus - [Install and use gem pg_search](https://blog.superails.com/install-gem-pg_search): 2021-06-06 | Tags: ruby, rails, ruby-on-rails, pg_search - [Role scopes with gem Rolify](https://blog.superails.com/rolify-scopes): 2021-06-07 | Tags: ruby, rails, ruby-on-rails, rolify - [Add Markdown to your Rails app](https://blog.superails.com/markdown): 2021-06-10 | Tags: ruby, rails, ruby-on-rails, markdown - [Migrating from Bootstrap 4 to Bootstrap 5](https://blog.superails.com/migrate-bootstrap-4-to-5): 2021-06-11 | Tags: ruby, rails, ruby-on-rails, markdown - [Markdown Level 2. Style markdown css with gem Rouge](https://blog.superails.com/markdown-styling-with-rouge): 2021-07-06 | Tags: ruby, rails, ruby-on-rails, markdown, redcarpet, rouge - [Edit Rolify roles for a User](https://blog.superails.com/rolify-edit-roles): 2021-07-08 | Tags: ruby, rails, ruby-on-rails, rolify - [Quick tip: Permit params by current user roles](https://blog.superails.com/permit-params-by-current-user-roles): 2021-07-10 | Tags: ruby, rails, ruby-on-rails, authorization, roles, params - [REVISED: Polymorphism 101. Part 4 of 3. Polymorphic Comments](https://blog.superails.com/polymorphic_nested_comments): 2021-07-14 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations, comments, ajax, js-erb - [config_for settings.yml](https://blog.superails.com/rails-settings-config-for): 2021-07-16 | Tags: ruby, rails, ruby-on-rails, settings, config_for, config, yml - [gem acts_as_votable 3: vote search scopes](https://blog.superails.com/gem-acts-as-votable-3-useful-scopes): 2021-07-17 | Tags: ruby, rails, ruby-on-rails, acts_as_votable - [Ruby on Rails 6+: install jQuery with yarn and webpacker](https://blog.superails.com/install-jquery-in-rails-6): 2021-07-18 | Tags: ruby, rails, ruby-on-rails, jquery, webpacker, yarn - [Rails enums - different approaches](https://blog.superails.com/rails-enums-basics): 2021-07-25 | Tags: ruby, rails, ruby-on-rails, enums - [Rails authorization with gem Pundit](https://blog.superails.com/complete-guide-to-gem-pundit): 2021-07-28 | Tags: ruby, rails, ruby-on-rails, pundit, authorization, roles - [Stimulus Read More - MY WAY!!!](https://blog.superails.com/stimulus-read-more): 2021-07-30 | Tags: stimulusjs - [Install and use Rubocop - TLDR](https://blog.superails.com/install-and-use-rubocop): 2021-08-03 | Tags: ruby, rails, rubyonrails, rubocop, code-quality - [Procfile: automatically run migrations on Heroku deploy](https://blog.superails.com/heroku-procfile): 2021-08-10 | Tags: ruby, rails, ruby-on-rails, heroku, procfile - [Boolean Checkbox array - easier than you think!](https://blog.superails.com/checkbox-array-field): 2021-08-11 | Tags: ruby, rails, ruby-on-rails, checkboxes, array - [gem Draper: abstract view logic from the model](https://blog.superails.com/install-and-use-gem-draper): 2021-08-16 | Tags: ruby, rails, ruby-on-rails, draper, views, decorators - [Quick tip: Helper to display different text based on time of day](https://blog.superails.com/helper-to-display-message-based-on-time-of-day): 2021-08-17 | Tags: ruby, rails, ruby-on-rails, helpers, rspec - [Export from database table to Excel Workbook. Level 1](https://blog.superails.com/export-from-database-to-excel): 2021-08-20 | Tags: ruby, rails, ruby-on-rails, export, excel, xls, xlsx, csv, download - [Gem Public Activity: Complete guide to total surveillance](https://blog.superails.com/gem-public-activity-complete-guide): 2021-08-30 | Tags: ruby, rails, ruby-on-rails, public_activity, surveillance - [Gem Traceroutes - find routes without controller actions, actions without routes](https://blog.superails.com/gem-traceroute-find-controllers-without-routes): 2021-09-20 | Tags: ruby, rails, ruby-on-rails, code-quality - [Select or Create Tags with Tom-Select without jQuery (VanillaJS)](https://blog.superails.com/select-or-create-with-tom-select): 2021-09-23 | Tags: ruby, rails, ruby-on-rails, vanilla-js, no-jquery, stimulus - [Generate a QR code for a Product and store it in ActiveStorage. Service Objects](https://blog.superails.com/qr-code-generation-active-storage-service-objects): 2021-09-24 | Tags: ruby, rails, ruby-on-rails, service-objects, active-storage, qr-code - [Generate a BARCODE for a Product](https://blog.superails.com/ruby-on-rails-generate-barcodes): 2021-09-24 | Tags: ruby, rails, ruby-on-rails, active-storage, barcode, service-objects - [HTTP Basic authentication](https://blog.superails.com/http-basic-authentication): 2021-09-27 | Tags: ruby, rails, ruby-on-rails, http-authentication - [Install and use ActiveAdmin in 13 steps](https://blog.superails.com/active-admin-basics): 2021-09-30 | Tags: ruby, rails, ruby-on-rails, active-admin - [#1 Turbo Stream messages to inbox. Render errors](https://blog.superails.com/turbo-stream-messages-to-inbox): 2021-10-04 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo - [#2 Turbo Stream inboxes to inboxes/index. Lazy load form. Replace form on submit.](https://blog.superails.com/turbo-stream-inboxes-to-index-replace-form-on-submit): 2021-10-05 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo - [#3 Turbo: Keep the audio playing after changing the page with data-turbo-permanent](https://blog.superails.com/turbo-play-audio-across-pages): 2021-10-06 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, audio, mp3, turbo-drive - [Current attribute. Access current_user from model](https://blog.superails.com/current-attribute-for-user-per-request): 2021-10-07 | Tags: ruby, rails, ruby-on-rails, devise - [Tiny Tip: Debug current request in views](https://blog.superails.com/debugging-current-request-params): 2021-10-08 | Tags: ruby, rails, ruby-on-rails, devise - [#4 Turbo Frame - Sort records without page refresh. Sorting without a gem.](https://blog.superails.com/turbo-frame-sorting-records-without-a-gem): 2021-10-09 | Tags: ruby, rails, ruby-on-rails, request-params, hotwire, turbo - [Tiny Tip: URL and link helpers.](https://blog.superails.com/url-and-link-helpers): 2021-10-10 | Tags: ruby, rails, ruby-on-rails, request-params, url_for, link_to - [#5 Turbo: Button to update status and refresh frame. Edit inboxes inline](https://blog.superails.com/turbo-stream-button-to-update-value-and-refresh-frame): 2021-10-11 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo - [#6 Hotwire Turbo: Increment likes count without any page refreshes](https://blog.superails.com/hotwire-turbo-button-to-like-record): 2021-10-12 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo - [Generate Entity-Relationsip-Diagrams (ERD) from a Rails app](https://blog.superails.com/gem-rails-erd): 2021-10-13 | Tags: ruby, rails, ruby-on-rails, erd - [5 ways to associate current_user with record on create](https://blog.superails.com/5-ways-associate-current_user-with-record-on-create): 2021-10-14 | Tags: ruby, rails, ruby-on-rails, users, associations - [#7 Hotwire Turbo Frames: Search without page refresh. Stimulus. Ransack](https://blog.superails.com/turbo-hotwire-custom-search-without-page-refresh): 2021-10-17 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, ransack, stimulus - [Tiny Tip: Inline if-else statements](https://blog.superails.com/inline-if-else-statements): 2021-10-18 | Tags: ruby, rails, ruby-on-rails, if-else, tiny-tip - [ONLY Omniauth login with Devise (without email registration)](https://blog.superails.com/devise-login-only-with-omniauth): 2021-10-23 | Tags: ruby, rails, ruby-on-rails, devise, omniauth - [#8 Hotwire Turbo: Tabbed content with Turbo Streams](https://blog.superails.com/tabbed-content-with-hotwire-turbo-streams): 2021-10-25 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo - [#9 Turbo Frame Tabs](https://blog.superails.com/tabbed-content-with-hotwire-turbo-frames): 2021-10-26 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, tabs - [Gem Meta Tags for better SEO](https://blog.superails.com/meta-tags-without-a-gem): 2021-10-28 | Tags: ruby, rails, ruby-on-rails, SEO, meta-tags - [#10 Turbo Streams - Create and stream records. Flash messages. Reusable Streams](https://blog.superails.com/turbo-hotwire-flash-messages): 2021-10-29 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, turbo-streams, flash - [#11 Turbo Frames - Load content only when a dropdown is opened](https://blog.superails.com/turbo-lazy-loading-dropdown): 2021-11-01 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, turbo-frames, dropdowns - [#12 Turbo: Pagination with gem Pagy, ViewComponent without page refresh](https://blog.superails.com/turbo-view-component-pagination): 2021-11-02 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, view-component, pagination, pagy - [Basic CSS for new Rails projects without a CSS Framework](https://blog.superails.com/rails-7-without-css-framework): 2021-11-03 | Tags: ruby-on-rails, css - [Paginate/Tab records by any attribute](https://blog.superails.com/paginate-tab-by-any-attribute): 2021-11-04 | Tags: ruby, rails, calendar, ruby-on-rails, pagination, tabs - [#13 Turbo Streams: 5 ways to render View Components](https://blog.superails.com/turbo-stream-view-components): 2021-11-05 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, viewcomponent - [Validate uniqueness on the database level](https://blog.superails.com/validate-uniqueness-on-database-level): 2021-11-06 | Tags: ruby, rails, ruby-on-rails, postgresql, active-record - [TIP: URL helper: Redirect to previous page](https://blog.superails.com/redirect-to-previous-page): 2021-11-07 | Tags: ruby, rails, ruby-on-rails, url - [RE-REVISED: Polymorphism 101. Part 5 of 3. Even better Polymorphic Comments](https://blog.superails.com/polymorphic-comments-improved): 2021-11-10 | Tags: ruby, rails, ruby-on-rails, polymorphism, polymorphic-associations, comments - [Pretty URLs with gem friendly_id](https://blog.superails.com/gem-friendly-id-pretty-urls): 2021-11-11 | Tags: ruby, rails, ruby-on-rails, friendly_id - [Make Devise work with Hotwire Turbo and Rails 7](https://blog.superails.com/turbo-devise): 2021-11-12 | Tags: ruby, rails, ruby-on-rails, devise, turbo, hotwire - [StimulusJS autopaste controller](https://blog.superails.com/stimulus-copy-autopaste-controller): 2021-11-14 | Tags: ruby, rails, ruby-on-rails, stimulus - [#15 Turbo Streams CRUD](https://blog.superails.com/turbo-hotwire-CRUD): 2021-11-15 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, CRUD - [Tip: Automatically annotate rails views](https://blog.superails.com/annotate-views): 2021-11-16 | Tags: ruby, rails, ruby-on-rails, action-view, viewcomponent - [#16 Turbo Streams: Edit Modal.](https://blog.superails.com/turbo-stream-hotwire-modal): 2021-11-17 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, modals - [TIL: Loading animation for a Skeleton loader](https://blog.superails.com/skeleton-loader-animation): 2021-11-25 | Tags: html, css, today-i-learned - [TIL: date_select VS date_field](https://blog.superails.com/datetime-select-or-field): 2021-11-26 | Tags: ruby, rails, ruby-on-rails, today-i-learned, html - [TIL: HTML tags I did not know about](https://blog.superails.com/interesting-html-tags): 2021-11-27 | Tags: ruby, rails, ruby-on-rails, today-i-learned, html - [Emoji select with `gem unicode-emoji`](https://blog.superails.com/gem-unicode-emoji): 2021-11-28 | Tags: ruby, rails, ruby-on-rails, unicode, emoji - [Install Ruby on Rails 7](https://blog.superails.com/install-ruby-on-rails-7-on-ubuntu): 2021-12-08 | Tags: ruby-on-rails-7,, ubuntu - [#17 Turbo Streams: Broadcasts](https://blog.superails.com/turbo-hotwire-broadcasts): 2021-12-09 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, broadcasts - [TIP: Rendering partials and collections](https://blog.superails.com/rendering-partials-and-collections): 2021-12-13 | Tags: ruby, rails, ruby-on-rails, tiny-tip, action-view - [TIP: if-else, case-when, hash?](https://blog.superails.com/if-else-case-when-hash): 2021-12-22 | Tags: ruby, rails, ruby-on-rails, tiny-tip - [#18 BUTTON_TO: conditionally respond with html OR turbo_stream](https://blog.superails.com/button-to-html-or-turbo_stream): 2021-12-27 | Tags: ruby-on-rails-7, hotwire, turbo, button_to - [#19 FORM_WITH: conditionally respond with html OR turbo_stream](https://blog.superails.com/form-with-html-or-turbo_stream): 2021-12-28 | Tags: ruby-on-rails-7, hotwire, turbo, form_with - [#20 Turbo Streams: autocomplete search](https://blog.superails.com/hotwire-turbo-streams-autocomplete-search): 2022-01-07 | Tags: ruby-on-rails-7, hotwire, turbo, autocomplete - [Stimulus JS: A Basic Dropdown controller](https://blog.superails.com/stimulus-js-dropdown): 2022-01-24 | Tags: stimulusjs - [Quick tip: Using Partials to Simplify Views](https://blog.superails.com/partials-to-simplify-views): 2022-02-02 | Tags: ruby-on-rails, tldr, layouts - [Gem data-migrate - an essential gem!](https://blog.superails.com/gem-data-migrate): 2022-02-06 | Tags: ruby, rails, ruby-on-rails, database, migrations - [#21 Hotwire Turbo: The one right way to do Modals](https://blog.superails.com/hotwire-turbo-frame-modals): 2022-02-09 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, tldr, modals, tailwind, viewcomponent - [Tip: distance_of_time_in_percent](https://blog.superails.com/ruby-on-rails-distance-of-time-in-percent): 2022-02-12 | Tags: ruby - [TIL: Pass a Hash to Flash](https://blog.superails.com/flash-as-a-hash): 2022-02-22 | Tags: rails, today-i-learned - [🛑🇷🇺 Block access to your software from Russia IPs](https://blog.superails.com/block-russian-ips): 2022-02-25 | Tags: rails, Ukraine, rUssia - [StimulusJS Dropdown](https://blog.superails.com/stimulus-dropdown): 2022-03-13 | Tags: stimulusjs - [StimulusJS Textarea autogrow](https://blog.superails.com/stimulus-textarea-autogrow): 2022-03-31 | Tags: stimulusjs - [Live form validations and error rendering. Live markdown preview](https://blog.superails.com/live-form-validation-errors-markdown-preview): 2022-04-01 | Tags: ruby, rails, html, stimulusjs, forms, markdown - [Integrate MarkedJS Markdown Parser into a Rails app](https://blog.superails.com/stimulusjs-markedown-parser): 2022-04-02 | Tags: markdown, marked, stimulusjs - [Hotwire Turbo Frames: Hovercards](https://blog.superails.com/hotwire-hovercards): 2022-04-03 | Tags: ruby, hotwire - [gem acts_as_votable 4: cached votes, vote scopes, Hotwire](https://blog.superails.com/acts-as-votable-4-hotwire): 2022-04-09 | Tags: ruby, rails, ruby-on-rails, acts_as_votable, hotwire, turbo - [Fontawesome + Importmaps + Rails 7](https://blog.superails.com/fontawesome-importmaps-rails7): 2022-04-10 | Tags: ruby-on-rails, fontawesome - [Semantic HTML in Ruby on Rails](https://blog.superails.com/semantic-html-in-rails): 2022-05-02 | Tags: rails, html - [Classless CSS frameworks](https://blog.superails.com/classless-css-frameworks): 2022-05-03 | Tags: rails, html, css - [My thoughts about Web Development in 2022](https://blog.superails.com/web-development-in-2022): 2022-05-13 | Tags: thoughts, web-development - [First steps to learning Web Development](https://blog.superails.com/how-to-start-web-development): 2022-05-14 | Tags: thoughts, web-development - [Chained select fields for custom data structures](https://blog.superails.com/chained-select-fields): 2022-05-27 | Tags: ruby-on-rails, hotwire, turbo, chained-select - [Chained select fields for gem City-State. Dynamic forms](https://blog.superails.com/gem-city-state): 2022-05-29 | Tags: ruby-on-rails, hotwire, turbo, city-state, chained-select - [Stop writing strftime](https://blog.superails.com/stop-using-strftime): 2022-06-10 | Tags: ruby-on-rails, strftime - [SVG in Rails. Gem inline_svg](https://blog.superails.com/gem-inline-svg): 2022-06-11 | Tags: ruby-on-rails, inline_svg, svg - [Accept cookies consent banner in Rails](https://blog.superails.com/accept-cookies-banner): 2022-06-19 | Tags: ruby-on-rails, gdpr, cookies - [Gem Kredis #1 - access Redis via ActiveRecord](https://blog.superails.com/gem-kredis-intro): 2022-06-20 | Tags: ruby-on-rails, redis, kredis - [Gem Kredis #2 - recently visited pages](https://blog.superails.com/kredis-recently-visited-pages): 2022-06-21 | Tags: ruby-on-rails, redis, kredis - [Mass update selected records](https://blog.superails.com/checkbox-mass-update-records): 2022-07-07 | Tags: ruby, rails, ruby-on-rails, bulk-actions, mass-params - [StimulusJS checkboxes. Select all. Deselect all](https://blog.superails.com/stimulus-checkboxes-select-all): 2022-07-08 | Tags: bulk-actions, mass-params, stimulusjs - [Load partials async with Turbo Frames](https://blog.superails.com/turbo-frames-load-collections-faster): 2022-07-10 | Tags: ruby, rails, ruby-on-rails, turbo, hotwire - [Import CSV to Rails](https://blog.superails.com/import-csv-to-rails-database): 2022-07-16 | Tags: ruby, rails, ruby-on-rails, export, excel, xls, xlsx, csv, download - [Export CSV from Rails](https://blog.superails.com/export-csv-from-rails-database): 2022-07-17 | Tags: ruby, rails, ruby-on-rails, export, excel, xls, xlsx, csv, download - [StimulusJS Tabs](https://blog.superails.com/stimulusjs-tabs): 2022-07-20 | Tags: tabs, stimulusjs - [auto-style your html.erb with gem erb-lint](https://blog.superails.com/erb-linting): 2022-08-06 | Tags: ruby-on-rails, erb, haml, code-quality - [Use SwearJar to moderate and censor bad words. **** you!](https://blog.superails.com/swearjar-profanity-filter): 2022-08-30 | Tags: ruby-on-rails, profanity, moderation - [Double loading StimulusJS controllers](https://blog.superails.com/double-loading-stimulus-controllers): 2022-09-25 | Tags: ruby, rails, ruby-on-rails, turbo, stimulusjs - [My journey through hackathons and startup weekends](https://blog.superails.com/hackathons-startup-weekends-journey): 2022-09-26 | Tags: hackathon, startup - [Link to previous page if internal request](https://blog.superails.com/link-back-if-internal-request): 2022-09-29 | Tags: rails, ruby-on-rails - [Convert integer to time (hh:mm:ss)](https://blog.superails.com/convert-integer-to-time): 2022-10-01 | Tags: ruby - [Autogenerate and store images with Rmagick and Imagemagick with ActiveStorage](https://blog.superails.com/rmagick-activestorage): 2022-10-03 | Tags: ruby, rails, ruby-on-rails, turbo, stimulusjs - [RGB complimentary colors (opposite colors) in Ruby](https://blog.superails.com/rgb-color-opposites-generator): 2022-10-04 | Tags: ruby, rails - [Estimated reading time calculator with Ruby](https://blog.superails.com/estimated-reading-time-calculator): 2022-10-05 | Tags: ruby - [Github Actions. CI/CD basics](https://blog.superails.com/github-actions): 2022-10-09 | Tags: ruby-on-rails, github-actions, ci, cd - [Slack API. Send text, markdown and files to Slack](https://blog.superails.com/slack-api-with-rails): 2022-10-13 | Tags: ruby-on-rails, slack - [Deploy to DigitalOcean App Platform in Production](https://blog.superails.com/deploy-to-digitalocean-apps-platform): 2022-10-20 | Tags: ruby-on-rails, production, digitalocean - [Highlight @ mentions, convert # hashtags to links](https://blog.superails.com/search-by-hashtags-or-mentions): 2022-10-25 | Tags: ruby, rails, ruby-on-rails - [Slim Select with StimulusJS](https://blog.superails.com/stimulus-slim-select): 2022-10-30 | Tags: ruby, rails, ruby-on-rails, turbo, stimulusjs - [StimulusJS advanced copy to clipboard](https://blog.superails.com/stimulus-copy-to-clipboard): 2022-11-03 | Tags: stimulusjs - [Passwordless: log in with magic link](https://blog.superails.com/gem-passwordless-magic-link-auth): 2022-11-13 | Tags: passwordless, authentication, magic-link - [Use Service Objects](https://blog.superails.com/service-objects): 2022-12-03 | Tags: ruby, rails, ruby-on-rails, service-objects - [Process ActiveJob background jobs with gem good_job and Postgres without Redis](https://blog.superails.com/background-jobs-good-job): 2022-12-04 | Tags: active-job, good-job, background-jobs, postgresql - [Hotwire Turbo: Edit each attribute inline](https://blog.superails.com/hotwire-inline-edit-attributes): 2022-12-05 | Tags: ruby-on-rails-7, hotwire, turbo - [Hotwire Search Infinite Pagination](https://blog.superails.com/hotwire-search-infinite-pagination): 2022-12-08 | Tags: ruby-on-rails-7, hotwire, turbo - [CSS: make text on image readable](https://blog.superails.com/css-readability-tricks): 2022-12-17 | Tags: css - [Browser tab title notifications](https://blog.superails.com/browser-tab-title-notifications): 2022-12-21 | Tags: stimulusjs, html, rails - [Notes on using ActionMailer](https://blog.superails.com/action-mailer-basics): 2023-01-01 | Tags: ruby-on-rails, action_mailer - [Complete guide to iCalendar events with Ruby](https://blog.superails.com/icalendar-ruby): 2023-01-03 | Tags: ical, icalendar, ruby-on-rails - [Omniauth without Devise](https://blog.superails.com/omniauth-without-devise): 2023-01-09 | Tags: ruby-on-rails, devise, omniauth, github, testing - [Parse YAML with Ruby on Rails](https://blog.superails.com/parse-yaml-yml-with-ruby-on-rails): 2023-01-17 | Tags: ruby, rails, yaml, yml - [Parse JSON with Ruby on Rails](https://blog.superails.com/parse-json-with-ruby-on-rails): 2023-01-18 | Tags: ruby, rails, json - [gem Geocoder - calculate coordinates, distances, search nearby](https://blog.superails.com/gem-geocoder-ruby): 2023-01-22 | Tags: ruby, rails, geocoder - [gem MapkickJS for beautiful JavaScript maps with one line of Ruby](https://blog.superails.com/gem-mapkick-rb): 2023-01-25 | Tags: ruby, rails, mapkick - [How to use the Browser Geolocation API with Rails](https://blog.superails.com/stimulus-get-browser-location): 2023-01-28 | Tags: ruby, rails, geolocation, geocoder - [Live Visit Count for website or page. ActionCable, Turbo Broadcasts, Kredis](https://blog.superails.com/action-cable-broadcast-visitors-online): 2023-02-02 | Tags: ruby, rails, kredis, action-cable, hotwire, turbo, broadcasts - [Realtime Online User Tracking with Actioncable and Rails](https://blog.superails.com/action-cable-broadcast-users-online): 2023-02-05 | Tags: ruby, rails, kredis, action-cable, hotwire, turbo, broadcasts - [Send SMS with Twilio in Rails](https://blog.superails.com/rails-twilio-sms-api): 2023-02-15 | Tags: ruby, rails, twilio - [Recent search history with Kredis](https://blog.superails.com/kredis-resent-searches): 2023-02-19 | Tags: ruby-on-rails, redis, kredis - [Reverse Engineering Pipplet Database Architecture](https://blog.superails.com/pipplet-clone): 2023-02-26 | Tags: database, architecture - [Style default error pages in a Rails app](https://blog.superails.com/style-default-error-pages): 2023-03-14 | Tags: ruby-on-rails,, error-pages,, 404 - [What's the difference between Rails 4, Rails 5, Rails 6 and Rails 7?](https://blog.superails.com/whats-new-in-rails): 2023-03-16 | Tags: ruby-on-rails - [Best practices for writing and collaborating on Rails code](https://blog.superails.com/rails-best-practices): 2023-03-17 | Tags: ruby-on-rails, best-practices, design-patterns - [Trello Clone: drag, drop and save changes with Ranked-Model, SortableJs and RequestJs](https://blog.superails.com/drag-and-drop-stimulus-request-js): 2023-03-18 | Tags: trello, requestjs, sortable-js, request-js, ranked-model, acts_as_list, sort - [TLDR: Rails 7 Active Record Encryption](https://blog.superails.com/encrypted-credentials): 2023-03-19 | Tags: ruby-on-rails, credentials, encryption, secrets - [ChatGPT exists. Should I stop writing?](https://blog.superails.com/chatgpt-vs-writing): 2023-03-20 | Tags: writing, chatgpt - [14 Ruby on Rails and 7 Hotwire interview questions in 2023](https://blog.superails.com/ruby-on-rails-developer-interview-questions): 2023-03-21 | Tags: ruby-on-rails, interview, recruiting, HR - [Broadcaster pattern for Turbo Streams Broadcasts](https://blog.superails.com/turbo-broadcast-renderer-pattern): 2023-03-29 | Tags: ruby, rails, ruby-on-rails, hotwire, turbo, broadcasts - [Find a saved WIFI password on Windows 10 or Windows 11](https://blog.superails.com/windows-get-wifi-password): 2023-03-30 | Tags: windows, password - [EU Ruby conferences in 2023](https://blog.superails.com/eu-ruby-conferences-2023): 2023-04-03 | Tags: conference, meetup - [Omniauth with Microsoft (Azure Active Directory)](https://blog.superails.com/microsoft-azure-omniauth): 2023-04-05 | Tags: ruby-on-rails, microsoft, azure, omniauth - [Test Omniauth authentication (github, azure)](https://blog.superails.com/testing-omniauth): 2023-04-06 | Tags: ruby-on-rails, omniauth, testing, minitest, github, azure - [Testing Devise authentication with Minitest and Faker](https://blog.superails.com/minitest-faker-factory-bot-devise): 2023-04-08 | Tags: ruby, rails, minitest, faker - [Build a Public-facing Rails API with Bearer token authentication](https://blog.superails.com/rails-api-bearer-authentication): 2023-04-10 | Tags: ruby-on-rails, rails-api, bearer - [Rails CRUD API requests with cURL](https://blog.superails.com/api-requests-with-curl): 2023-04-14 | Tags: ruby-on-rails, rails-api, curl - [Rails CRUD API requests with Faraday](https://blog.superails.com/api-requests-with-faraday): 2023-04-15 | Tags: ruby-on-rails, rails-api, faraday - [API documentation with OpenAPI and Swagger using gem Rswag](https://blog.superails.com/learn-openapi-swagger-rswag): 2023-04-16 | Tags: ruby-on-rails, rails-api, swagger, openapi - [API Tracking and Usage limiting](https://blog.superails.com/api-usage-tracking-rest-rate-limiting): 2023-04-23 | Tags: ruby-on-rails, rails-api - [API pagination with Pagy](https://blog.superails.com/api-pagination-pagy): 2023-04-25 | Tags: ruby-on-rails, rails-api, pagination - [DateRangePicker with StimulusJS, Importmaps, gem Ransack](https://blog.superails.com/datarangepicker-js-ransack): 2023-04-27 | Tags: ruby-on-rails, stimulusjs, daterangepicker - [Use YouTube API with Ruby on Rails](https://blog.superails.com/youtube-api): 2023-05-30 | Tags: ruby, rails, youtube, api - [Use Sidekiq in Development and Production](https://blog.superails.com/install-sidekiq-rails): 2023-06-12 | Tags: ruby, rails, active-job, sidekiq - [Finding similar/related posts/products based on matching tags](https://blog.superails.com/similar-records-based-on-tags): 2023-06-13 | Tags: ruby, rails, tags, content, algorythm, similar-products, similar-posts, related-products, related-posts - [Image scraping with Rails. Save image from URL to ActiveStorage](https://blog.superails.com/active-storage-save-image-from-url): 2023-07-02 | Tags: ruby, rails, active-storage - [DRY custom error pages](https://blog.superails.com/dry-custom-error-pages): 2023-07-19 | Tags: ruby-on-rails,, error-pages,, 404 - [Use Gem Rack-attack with Devise and Rails 7](https://blog.superails.com/gem-rack-attack-devise-rails7): 2023-08-03 | Tags: rack-attack, rate-limiting - [Heroku upload local database to production](https://blog.superails.com/upload-local-database-to-heroku): 2023-08-04 | Tags: ruby-on-rails, heroku, postgresql - [TailwindCSS on Rails 01: Responsive layout with sidebar](https://blog.superails.com/tailwindcss-layout): 2023-08-07 | Tags: rails, tailwindcss - [TailwindCSS on Rails 02: Responsive dropdown menu](https://blog.superails.com/tailwindcss-dropdown): 2023-08-08 | Tags: rails, tailwindcss - [TailwindCSS on Rails 03: Responsive content layout. Grid, Flex, Center](https://blog.superails.com/tailwindcss-content-grid-flex): 2023-08-12 | Tags: rails, tailwindcss, grid, flex - [Modals with HTML dialog element, TailwindCSS and StimulusJS](https://blog.superails.com/tailwindcss-dialog-modal): 2023-08-14 | Tags: rails, dialog, modal, tailwindcss - [Progress animation with HTML meter element and javascript](https://blog.superails.com/html-meter-progress-animation): 2023-08-23 | Tags: rails, stimulusjs, html - [Crazy, stupid page transition animation with StimulusJS and TailwindCSS](https://blog.superails.com/tailwind-stimulus-animated-page-transitions): 2023-08-25 | Tags: rails, tailwindcss, animation, page-transition - [StimulusJS Keyboard Hotkeys (Keyboard navigation)](https://blog.superails.com/stimulusjs-hotkeys): 2023-09-01 | Tags: tabs, stimulusjs - [Generate barcodes on the frontend with JsBarcode](https://blog.superails.com/jsbarcode): 2023-10-18 | Tags: barcode, jsbarcode, stimulusjs - [Search multiple models](https://blog.superails.com/search-multiple-models): 2023-11-05 | Tags: ruby-on-rails - [Custom Turbo Stream Actions](https://blog.superails.com/custom-turbo-stream-actions): 2023-11-10 | Tags: rails, hotwire, turbo-streams, modals - [Revised: Hotwire Turbo Modals with HTML Dialog](https://blog.superails.com/turbo-modal-dialog): 2023-11-11 | Tags: hotwire, turbo, modals, dialog - [Testing Rails cache](https://blog.superails.com/testing-rails-cache): 2023-11-18 | Tags: caching, testing - [HTML to PDF in Rails with gem DocRaptor (successor of wicked_pdf)](https://blog.superails.com/docraptor-html-to-pdf): 2023-12-02 | Tags: rails, pdf, wicked_pdf, active-storage - [Does Turbo 8 morphing make sense?](https://blog.superails.com/hotwire-turbo-8-morphing): 2023-12-16 | Tags: rails, hotwire, turbo, morphing - [Country select dropdown. Why does country_select gem even exist?](https://blog.superails.com/gem-country-select): 2023-12-20 | Tags: rails, country, select - [My 2023 summary and 2024 plans](https://blog.superails.com/year-summary-2023): 2023-12-30 | Tags: yearbook - [Calendar pagination with Pagy](https://blog.superails.com/pagy-calendar-pagination): 2024-01-01 | Tags: ruby, rails, calendar, pagination - [Generate PDF and PNG with Ferrum (headless Chrome API)](https://blog.superails.com/gem-ferrum-generate-pdf): 2024-01-27 | Tags: ruby-on-rails, ferrum, pdf, html-to-pdf, headless-chrome - [Build a calendar from zero (Month view)](https://blog.superails.com/build-a-calendar-from-zero): 2024-02-07 | Tags: ruby-on-rails, calendar - [How to access localhost anywhere with ngrok](https://blog.superails.com/ngrok): 2024-02-12 | Tags: ngrok - [Import ICS events to calendar](https://blog.superails.com/import-ics-to-calendar): 2024-02-29 | Tags: rails, icalendar, ics - [Guest User Record (guest mode)](https://blog.superails.com/current-browser-is-current-user): 2024-03-18 | Tags: authentication, guest-mode - [Turbo 8 Prefetch (InstantClick)](https://blog.superails.com/turbo-8-instantclick-prefetch): 2024-03-19 | Tags: turbo-rails, prefetch, instantclick - [Manage active sessions in Rails 2024](https://blog.superails.com/secutiry-manage-active-sessions): 2024-03-24 | Tags: security, pentest - [Cannes-Paris: Car vs Train vs Plane](https://blog.superails.com/cannes-paris-by-car): 2024-04-08 | Tags: travelling - [Embedded Stripe Checkout](https://blog.superails.com/embedded-stripe-checkout): 2024-04-24 | Tags: stripe - [Rails 8 will be a PWA (Progressive Web App) by default!](https://blog.superails.com/rails-8-pwa): 2024-05-09 | Tags: pwa, rails - [Tailwind CSS Bottom Navigation](https://blog.superails.com/sticky-mobile-footer): 2024-05-11 | Tags: rails, tailwindcss, animation, page-transition - [Track change history of attributes and display diff](https://blog.superails.com/diff-table-column-changes): 2024-05-20 | Tags: rails, git, diff, frontend, diffy, audited - [CFP - Hotwire Datatables with Rails. Frontend tips and tricks](https://blog.superails.com/frontend-tips-tricks-cfp): 2024-05-21 | Tags: cfp, life - [TailwindCSS on Rails: reusable button variants](https://blog.superails.com/tailwindcss-buttons): 2024-05-24 | Tags: rails, tailwindcss - [Sell access to a GitHub repo. Automatically add/remove collaborators](https://blog.superails.com/github-api-collaborators): 2024-06-01 | Tags: github, api - [Automatic i18n. Gem i18n-tasks. Phrase. Weglot.](https://blog.superails.com/i18n-translation-tools): 2024-06-08 | Tags: i18n, translations, locales, phrase, weglot - [i18n basics. Change current app language.](https://blog.superails.com/i18n-select-locale): 2024-06-09 | Tags: i18n, translations, locales - [Sign in with Apple in a Rails app](https://blog.superails.com/apple-oauth): 2024-06-29 | Tags: oauth, apple, ios, omniauth - [TailwindCSS on Rails: Minimize Collapsible Sidebar](https://blog.superails.com/tailwind-collapsible-sidebar): 2024-06-30 | Tags: rails, tailwindcss - [TailwindCSS on Rails: Dark Mode](https://blog.superails.com/tailwindcss-dark-mode): 2024-07-05 | Tags: rails, tailwindcss, dark-mode - [Rails 8 Authentication generator: user sign in](https://blog.superails.com/rails-8-authentication): 2024-07-19 | Tags: rails, devise, authentication - [Rails 8 Authentication generator: user registration](https://blog.superails.com/rails-8-authentication-registration): 2024-07-20 | Tags: rails, devise, authentication - [FR-DE EU Electronic eInvoicing standard (FacturX, ZUGFeRD)](https://blog.superails.com/factur-x-einvoice): 2024-07-21 | Tags: invoice, regulation, eu, facturx, zugferd - [Map guide to Corsica](https://blog.superails.com/visting-corsica): 2024-07-30 | Tags: travel - [Search and Autocomplete French Company Information](https://blog.superails.com/french-company-database-search): 2024-08-02 | Tags: france, open-data, company-search - [Navigating Turbo Native: where to start](https://blog.superails.com/navigating-turbo-native): 2024-08-04 | Tags: hotwire-native - [French real estate sales database](https://blog.superails.com/french-real-estate-sales-data): 2024-08-05 | Tags: france, open-data, real-estate-search - [Generate and display OpenGraph images](https://blog.superails.com/opengraph-image-generator): 2024-08-07 | Tags: ruby, rails, ruby-on-rails, SEO, meta-tags, ferrum - [Rails 7.2 native rate limiting](https://blog.superails.com/rails-rate-limiting): 2024-08-10 | Tags: rack-attack, rate-limiting - [StimulusJS social SHARE button](https://blog.superails.com/stimulus-share-button): 2024-08-21 | Tags: stimulusjs, social-share - [Prevent images from bouncing on load with gem active_storage-blurhash](https://blog.superails.com/prevent-bouncing-images): 2024-08-24 | Tags: blurhash, active-storage - [Add mentions to a text field with TributeJS](https://blog.superails.com/create-mentions-tribute-js): 2024-08-25 | Tags: mentions, tributejs, stimulusjs - [Search and Autocomplete UK Company Information](https://blog.superails.com/uk-company-database-search): 2024-08-27 | Tags: uk, open-data, company-search - [Hotwire Native iOS - Tabs and design customisation](https://blog.superails.com/hotwire-native-customisation): 2024-10-03 | Tags: hotwire-native - [Hotwire Native CSS and TailwindCSS variants (conditionals)](https://blog.superails.com/hotwire-native-conditional-tailwindcss): 2024-10-11 | Tags: hotwire-native - [Hotwire Native Nav Button with icon](https://blog.superails.com/hotwire-native-bridge-button): 2024-10-12 | Tags: hotwire-native - [Hotwire Native iOS Path Configuration via API](https://blog.superails.com/hotwire-native-path-configuration-via-api): 2024-10-13 | Tags: hotwire-native - [Hotwire Native Bridge Form Component with Rails](https://blog.superails.com/hotwire-native-form-component): 2024-10-15 | Tags: hotwire-native - [Authentication Zero vs Devise](https://blog.superails.com/authentication-zero): 2024-10-18 | Tags: authentication, devise - [Sentiment Analysis. Analyze Udemy course reviews](https://blog.superails.com/sentiment-analysis): 2024-10-19 | Tags: sentiment-analysis - [Use Vimeo API with Ruby on Rails](https://blog.superails.com/vimeo-api): 2024-10-24 | Tags: ruby, rails, youtube, api, vimeo - [Render Markdown FILES in Rails app](https://blog.superails.com/render-markdown-pages-in-rails): 2024-11-01 | Tags: rails, markdown - [StimulusJS Cmd Enter to submit form](https://blog.superails.com/stimulus-cmd-enter-to-submit): 2024-11-07 | Tags: keyboard, hotkeys, stimulusjs, stimulus - [Custom chapters with Vimeo Player API](https://blog.superails.com/vimeo-player-js-timeline-navigation): 2024-11-08 | Tags: ruby, rails, youtube, api, vimeo, stimulus - [Hotwire Native Bridge Menu (Action Sheet) Component](https://blog.superails.com/hotwire-native-bridge-menu-component): 2024-11-09 | Tags: hotwire-native - [Hotwire Native Bridge Component - Prompt to leave an AppStore review](https://blog.superails.com/hotwire-native-leave-a-review-bridge-component): 2024-11-11 | Tags: hotwire-native - [Hotwire Native Bridge Nav (UIMenu) Component](https://blog.superails.com/hotwire-native-ui-menu-dropdown): 2024-11-12 | Tags: hotwire-native - [Rails UI Frameworks and Component libraries](https://blog.superails.com/rails-ui-kits): 2024-11-12 | Tags: frontend - [Replace Disqus with Giscus comments](https://blog.superails.com/giscus-replaces-disqus): 2024-11-16 | Tags: jekyll - [Introduction to Nokogiri. Extract core website data](https://blog.superails.com/nokogiri-website-metadata): 2024-11-21 | Tags: nokogiri - [Conditional templates and Viewport for mobile browsers and native apps](https://blog.superails.com/request-variants): 2024-11-25 | Tags: hotwire-native, mobile, ruby-on-rails - [Hotwire Native Rails Helpers](https://blog.superails.com/hotwire-native-rails-helpers): 2024-11-28 | Tags: hotwire-native - [My first Ruby gem. hotwire_native_rails](https://blog.superails.com/my-first-ruby-gem): 2024-11-30 | Tags: hotwire-native, rubygems - [Start a blog with Jekyll and Github Pages for free](https://blog.superails.com/jekyll-blog-github-pages): 2024-12-21 | Tags: jekyll - [My recommended Jekyll plugins in 2025](https://blog.superails.com/jekyll-plugins): 2024-12-24 | Tags: ruby, rails - [My VS Code / Cursor plugins in 2025](https://blog.superails.com/vscode-cursor-extensions-rails): 2024-12-25 | Tags: ruby, rails - [Starting an ecommerce store: not so easy. My story](https://blog.superails.com/shopify-first-experience): 2025-01-18 | Tags: shopify, ecommerce - [Typesense search in a Rails app](https://blog.superails.com/typesense-rails): 2025-01-22 | Tags: typesense, search, rails - [Get Youtube video thumbnail image](https://blog.superails.com/oembed): 2025-01-24 | Tags: oembed - [2025 is the year of Markdown. Avo built Marksmith Markdown editor for Rails](https://blog.superails.com/avo-marksmith-markdown-editor): 2025-02-06 | Tags: avo - [Monaco Mareterra](https://blog.superails.com/monaco-mareterra): 2025-02-06 | Tags: monaco - [Random Pagination](https://blog.superails.com/random-pagination): 2025-02-12 | Tags: pagination, pagy - [Conditinally include Avo Pro in your Gemfile](https://blog.superails.com/avo-pro-upgrade): 2025-02-13 | Tags: avo - [Style window.confirm() with Turbo](https://blog.superails.com/style-confirm-modal): 2025-02-16 | Tags: javascript, turbo - [AutoNumeric.js: The Best Currency Input Field for Rails](https://blog.superails.com/money-input-field): 2025-03-25 | Tags: rails, javascript, stimulus, autonumeric - [Readonly Models without database](https://blog.superails.com/active_hash_readonly_model_without_database): 2025-04-22 | Tags: rails, active_hash - [Use Solid Trifecta with one Postgresql database](https://blog.superails.com/solid-trifecta-with-postgresql): 2025-04-22 | Tags: rails, solid_queue, solid_cache, solid_cable - [Deploying Rails 8 on Render.com](https://blog.superails.com/rails-8-solid-postgresql-render-com-production): 2025-04-23 | Tags: rails, solid_queue, solid_cache, solid_cable - [Google One Tap Authentication with Rails 8 and Devise](https://blog.superails.com/google-onetap-oauth): 2025-05-04 | Tags: google, oauth, omniauth - [Big family is the new flex](https://blog.superails.com/big-family-stats-symbol): 2025-05-07 | Tags: life - [SupeRails Hack Space @ Friendly.rb 2025](https://blog.superails.com/superails-friendlyrb-2025): 2025-06-05 | Tags: conference, superails, friendlyrb - [Separate Google and YouTube OAuth Strategies in Rails](https://blog.superails.com/youtube-oauth): 2025-06-21 | Tags: oauth, omniauth, devise, google, youtube, rails - [Staying Competitive - My Talk at Balkan Ruby 2025](https://blog.superails.com/balkan-ruby-staying-competitive): 2025-06-29 | Tags: conference, balkanruby, ai, productivity, career - [Ruby AI. Vector (semantic) search with embeddings](https://blog.superails.com/ai-vector-search): 2025-06-30 | Tags: rubyllm, neighbour, pgvector, ai - [Devise Masquerade (Login as) with Avo](https://blog.superails.com/devise-masquerade-with-avo-admin): 2025-07-21 | Tags: avo, impersonation - [Feature Flags and A/B testing with gem flipper](https://blog.superails.com/feature-flags-with-flipper): 2025-08-02 | Tags: rails, feature-flags - [OAuth in Hotwire Native iOS apps with ASWebAuthenticationSession](https://blog.superails.com/hotwire-native-oauth): 2026-02-28 | Tags: hotwire-native, rails, oauth, ios, swift - [Devise has_many :sessions - track, list, and revoke active sessions](https://blog.superails.com/devise-multiple-sessions-warden-hooks): 2026-03-03 | Tags: ruby-on-rails, devise, warden, authentication, sessions, security - [Cloudflare R2 + Active Storage: every error I hit, and the fix](https://blog.superails.com/cloudflare-r2-activestorage-rails): 2026-08-03 | Tags: ruby-on-rails, active-storage, cloudflare-r2, s3, file-uploads, kamal - [Replacing wicked_pdf with sghtmltopdf: no Chrome, no Node](https://blog.superails.com/wicked-pdf-to-sghtmltopdf): 2026-08-13 | Tags: ruby-on-rails, pdf, wicked_pdf, sghtmltopdf, html-to-pdf, kamal, docker