Fueling Curiosity, One Insight at a Time
At Codemancers, we believe every day is an opportunity to grow. This section is where our team shares bite-sized discoveries, technical breakthroughs and fascinating nuggets of wisdom we've stumbled upon in our work.
Jul 29, 2024
How to override models in parent application by reopening existing Rails engine classes. This can be done by organising overrides in a dedicated directory (e.g.,
To override an engine model, such as
Create a file that reopens the class:
Using
#rails #rails-engines
app/overrides
), ignoring this directory in the autoloader, and preloading the overrides in a to_prepare
callback.
# config/application.rb
module MyApp
class Application < Rails::Application
# ...
overrides = "#{Rails.root}/app/overrides"
Rails.autoloaders.main.ignore(overrides)
config.to_prepare do
Dir.glob("#{overrides}/**/*_override.rb").sort.each do |override|
load override
end
end
end
end
To override an engine model, such as
Blog::Article
:
# Blog/app/models/blog/article.rb
module Blog
class Article < ApplicationRecord
# ...
end
end
Create a file that reopens the class:
# MyApp/app/overrides/models/blog/article_override.rb
Blog::Article.class_eval do
# ...
end
Using
class_eval
ensures we are reopening the class or module, not redefining it.#rails #rails-engines
Sachin Kabadi
System Analyst
Jul 25, 2024
Remove the published gem from rubygems using
#rails #rubygems
gem yank GEM -v VERSION
#rails #rubygems
Sujay
Jul 25, 2024
while using
For eg: if we want to accept file of type
Note: This will disable other file types in your local file dialog while enabling the image files only 🪄 .
#rails , #active-storage
form.file_field
for file attachments we can restrict the file type to any type if we want.For eg: if we want to accept file of type
image
then we can pass accept
attribute.
<%= form.file_field :picture, accept: "image/*" %>
Note: This will disable other file types in your local file dialog while enabling the image files only 🪄 .
#rails , #active-storage
Satya
Jul 25, 2024
To ensure a dependency is installed with the engine during gem install, it must be specified within the
#rails #rails-engines
Gem::Specification
block inside the engine's .gemspec
file (e.g., blog.gemspec
for an engine named Blog, located at the root)
s.add_dependency "pagy"
#rails #rails-engines
Sujay
Jul 23, 2024
In Rails, gems are libraries that add specific functionality to a Rails application. They can be used across different projects and typically do not have their own structure or generators.
Examples include
Engines, on the other hand, are miniature Rails applications that can have their own routes, controllers, models, and views. They are used to encapsulate and modularize specific features or components within a Rails app. An engine can be packaged as a gem, but it provides more extensive, self-contained functionality compared to a typical gem.
#rails
Examples include
devise
for authentication and nokogiri
for XML parsing.Engines, on the other hand, are miniature Rails applications that can have their own routes, controllers, models, and views. They are used to encapsulate and modularize specific features or components within a Rails app. An engine can be packaged as a gem, but it provides more extensive, self-contained functionality compared to a typical gem.
#rails
Syed Sibtain
System Analyst
Jul 19, 2024
A Rails engine is a pattern used to modularize a Rails application. These engines are self-contained applications with their own models, views, controllers, and routes, allowing them to function autonomously. They can be integrated into a larger Rails application. For example, in an e-commerce application, modules like orders, products, users, and payments can each be separate engines.
#rails
#rails
Sujay
Jul 19, 2024
Resolving
When configuring CI with GitHub Actions, I encountered the following error:
This error occurred because the
To resolve this issue, I upgraded to PostgreSQL 13, which includes the
#rails #postgresql #uuid #ci-cd #github-actions
gen_random_uuid()
Error with PostgreSQL While Implementing CIWhen configuring CI with GitHub Actions, I encountered the following error:
PG::UndefinedFunction: ERROR: function gen_random_uuid() does not exist
This error occurred because the
gen_random_uuid()
function is not available in PostgreSQL versions older than 11. UUID generation functions were only available through external modules like uuid-ossp
and pgcrypto
in these older versions.To resolve this issue, I upgraded to PostgreSQL 13, which includes the
gen_random_uuid()
function to generate version-4 UUIDs. After upgrading, the error was resolved.#rails #postgresql #uuid #ci-cd #github-actions
Pavankumarreddy
Jul 17, 2024
Jupyter Labs
• To install
• To run Jupyter lab:
This will open JupyterLab in your default web browser.
#python #homebrew
• To install
Jupyter Labs
in Mac using Homebrew
:
brew install jupyterlab
• To run Jupyter lab:
jupyter lab
This will open JupyterLab in your default web browser.
#python #homebrew
Adithya Hebbar
System Analyst
Jul 16, 2024
The
Imagine you have a
#rails #fields-for #rails-view
fields_for
helper in Rails creates form bindings without rendering a
tag. This is particularly useful for rendering fields for additional model objects within a single form.Imagine you have a
Book
model with an associated Author
model. You can create a single form for both the Book
and Author
models using the fields_for
helper.
<%= form_with model: @book do |book_form| %>
<%= book_form.text_field :title %>
<%= book_form.text_area :description %>
<%= fields_for :author, @book.author do |author_form| %>
<%= author_form.text_field :name %>
<%= author_form.text_field :email %>
<% end %>
<% end %>
#rails #fields-for #rails-view
Giritharan
System Analyst
Jul 16, 2024
rails db:prepare
in Ruby on Rails, This command sets up and prepares the database for my application, ensuring everything's ready to go, including populating the database.#rails #databasesetup
Pavankumarreddy
Showing 18 to 20 of 82 results
Ready to Build Something Amazing?
Codemancers can bring your vision to life and help you achieve your goals
- Address
2nd Floor, Zee Plaza,
No. 1678, 27th Main Rd,
Sector 2, HSR Layout,
Bengaluru, Karnataka 560102 - Contact
hello@codemancers.com
+91-9731601276