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.

Oct 18, 2024
the fallbackData parameter in useSWR to provide default data for your fetch request. This is super useful when you want to display initial data while waiting for the network request to resolve. The fallback data will be used as the initial value for the data until the fetcher returns the actual data.



const {
  data,
  mutate,
  error,
} = useSWR(endpoint, fetcherFunction, {
  fallbackData: initialData,
});


#swr #hook
ayasha.pandey
Ayasha Pandey
System Analyst
Oct 16, 2024
"Adding a User to the Docker Group on Ubuntu"
1. sudo groupadd docker # Create the Docker group if it doesn't exist
2. sudo usermod -aG docker $USER # Adds the current user to the 'docker' group.
3. newgrp docker # Apply the new group membership
4. docker run hello-world # Checks if the user can run Docker commands without sudo
#Ubuntu #DevOps #Docker
soniya.rayabagi
soniya.rayabagi
Oct 16, 2024
useFormContext hook

The useFormContext hook is a part of react-hook-form and allows you to access form methods (such as setValue, getValues, etc.) from any component nested inside the FormProvider. This is useful when you want to manage the form state across deeply nested components without passing props down manually.

Steps to Use useFormContext:
1. Wrap your form with FormProvider: This allows any child component to access the form context via useFormContext.
2. Access form methods using useFormContext: In your component, you can call useFormContext to access setValue, getValues, etc.
Example
1. In your main form component: Wrap your form with FormProvider and pass in useForm's returned values.


import { useForm, FormProvider } from "react-hook-form";

const FormComponent = () => {
  const methods = useForm();

  return (
    
      
{/* Now any nested component can use useFormContext */} {/* Submit button or other components */}
); };


2. In your ChildComponent or any other component: Use useFormContext to access the form methods like setValue or getValues.


import { useFormContext } from "react-hook-form";

const ChildComponent = () => {
  const { setValue } = useFormContext(); // useFormContext gives access to all form methods

  return (
    
{/* Dropdown logic */}
); };


#useForm #CCT1JMA0Z
amber.srivastava
amber.srivastava
Oct 16, 2024
Managing Jobs in SolidQueue with Rails Console

SolidQueue::RecurringExecution.all : You can find and manage recurring jobs with this query.
SolidQueue::ReadyExecution.all: Use this query to identify jobs that are ready to run but haven’t started yet.
SolidQueue::BlockedExecution.all: Find jobs that are blocked and waiting for conditions to be met before execution.
SolidQueue::ClaimedExecution.all: Check jobs that have been claimed by workers but are still in progress.
SolidQueue::FailedExecution.all: Use this to track jobs that failed during execution.
SolidQueue::ScheduledExecution.all: Find jobs that are scheduled for future execution.
SolidQueue::Job.where(finished_at: nil): Query to get jobs that are still running or haven’t finished yet.
#activejob #solidqueue #queriesforsolidqueue #CU6U0R822
giritharan
Giritharan
System Analyst
Oct 11, 2024
Here’s how to update the most recent commit with new changes:

git commit --amend --no-edit command allows you to modify the most recent commit without changing its commit message.

• The --amend flag updates the previous commit with the new changes.
• The --no-edit option keeps the existing commit message unchanged.
After amending the commit, if it has already been pushed to the remote repository, you’ll need to force push the changes using: git push -f

#git #git-commit
adithya.hebbar
Adithya Hebbar
System Analyst
Oct 9, 2024
Symbols shown in build logs for routes specifies-
ƒ: A dynamic function, typically an API route, that runs on the server and is not statically exported.
: A statically generated (SSG) page, built once during the build process.
: A dynamically generated (SSR) page, built at request time.
#build
aman.suhag
Aman Suhag
System Analyst
Oct 9, 2024
Rails Association Callbacks

Rails association callbacks let you hook into the lifecycle events of an associated collection. These callbacks are triggered when objects are added to or removed from the collection.

Available Callbacks:
- before_add: Invoked before an object is added to the collection.
- after_add: Invoked after an object is added to the collection.
- before_remove: Invoked before an object is removed from the collection.
- after_remove: Invoked after an object is removed from the collection.

#associationcallbacks #callbacks #CU6U0R822
giritharan
Giritharan
System Analyst
Oct 9, 2024
"Search-as-You-Type" in Rails with Turbo Frames and Stimulus

Making the search box more interactive can be achieved with simple steps:

We could do this without Turbo by submitting the form whenever an input event occurs, right? No. In that case, on each input, the form gets submitted, and the input field loses focus. This is where Turbo Frames come into play. For this scenario, we need Turbo to reload only the content we want to update while leaving the rest of the page as it is.

For this, we define which part we want to reload based on our search by wrapping that particular section inside a turbo_frame_tag and targeting that Turbo Frame from the search form.

Sample search form:



 <%= form_with(
  url: search_path, method: :get,
  data: { turbo_frame: "frame_id", turbo_action: "advance", controller: "search", action: "input->search#submit" }
) do |f| %>
  <%= f.search_field field_name, placeholder: placeholder, value: params %>
<% end %>


turbo_frame : Points to the specific Turbo Frame we want to update with the search results. It allows us to reload only the content within this frame without affecting the rest of the page.
turbo_action : Defines the behavior of the Turbo request. In this case, it is set to "advance," which means the URL is appended to the previous ones. This allows users to navigate back to previous searches using the browser's back button, maintaining the search history. There are other actions like "restore", "pop" as well.

Example:



<%= turbo_frame_tag "search_results" do %>
       
#This will contain the search results <% end %>


( We will give data : { turbo_frame: "search_results" } in this case )

In this way, when a fetch occurs from the search form, only the part inside the turbo_frame_tag is reloaded. The rest of the page remains untouched, and the form won't lose focus.

For optimization, we can add debouncing also, which can be done in the Stimulus controller.

#RubyOnRails #turbo #turbo_frames
nived.hari
Nived Hari
System Analyst
Oct 9, 2024
Fastest way to put website on internet:

Using Ngrok we can do that easily.

step1: install Ngrok

step2: create account in Ngrok website (for AUTHTOKEN)

step3: run the command in the terminal - ngrok authtoken YOUR_AUTHTOKEN

step4: add the regex in config/environment/development.rb




Rails.application.configure do
    # Other configurations...
    
    # Add your Ngrok URL to the list of allowed hosts 
    config.hosts << /[a-z0-9\-]+\.ngrok-free\.app/
end



step5: start the server and open new terminal then in the project directory run the command ngrok http 3000 . Where 3000 is port number in which localhost is running.

step6: ngrok will give us a link, with that link we can access the website.

Ngrok is not only limited to rails. We can use with any framework.

#CU6U0R822 #ngrok
nitturu.baba
Nitturu Baba
System Analyst
Oct 8, 2024
How to Create a Multi-Language Website in Rails

Ruby on Rails comes with an integrated internationalization (I18n) framework that makes it simple to add multi-language support to your website.

Create Locale Files

You can define your translations using .yml files located in the config/locales directory.
For example, if your website supports English and Hindi, you would create two files: en.yml and hi.yml.

en.yml file:


en:
    hello: "Hello"
    good_morning: "Good Morning %{name}"  # %{name} is used to pass dynamic parameters.
    rails: "Rails"


hi.yml file:


hi:
    hello: "नमस्ते"
    good_morning: "शुभ प्रभात  %{name}"
    rails: "रेल"


Use Translations in Your Views

You can use the t helper method to access translations in your views.



<%= t("hello") %>
// normal usage
<%= t("good_morning", name: t("rails")) %>
// Passing Dynamic Parameters.


Language Switching via URL

The language displayed will depend on the locale set in the URL. For example:
• If the URL is https://localhost:3000/en, the English translation will be used.
• If the URL is https://localhost:3000/hi, the Hindi translation will be used.
#CU6U0R822 #multi-language
nitturu.baba
Nitturu Baba
System Analyst

Showing 9 to 11 of 77 results

Ready to Build Something Amazing?

Codemancers can bring your vision to life and help you achieve your goals