Rails 8 allows dropping multiple tables in one call with drop_table by accepting an array of table names in a single migration.
Posts
Rails 8 introduces the ability to define multiple rate limits within a controller, offering better flexibility for traffic management.
With Rails 7.2, the object returned by explain now responds to pluck, first, last, average, count, maximum, minimum, and sum methods.
With Rails 7.1, we can specify the amount to increment or decrement the value by simply passing the desired number as the `by` argument to increment_counter and decrement_counter.
Rails.application.deprecators returns a collection of managed deprecators within our application, and allows us to add and retrieve individual deprecators with ease.
With Rails 7.1, we can use lambdas without record argument with ActiveModel validators.
In Rails 7.2, ActiveJob delays job enqueuing until the transaction is committed and drops the job if the transaction is rolled back.
With Rails 7.1, the controller generator now accepts the --parent option. This allows us to generate a controller that inherits from the specified parent class.
Rails 7.1 added Array#intersect? method which returns true if two ActiveRecord relation objects have at least one element in common, otherwise returns false.
Rails 7.1 raises error when we generate model with reserved attribute names.
With Rails 7.1, identify and manage unused routes declared in the application by using bin/rails routes --unused option.
Explore the inverse_of option in Rails associations, highlighting its benefits in performance, data consistency, and optimizing bi-directional relationships.
Rails 7.1 adds exclude?, returning true if a key is missing from parameters. And extract_value, which splits a parameter value by delimiter into an array.
With Rails 7.1, in_batches method without a block works fine for both `ASC/DESC` order values.
Rails 7.1 introduces the after_discard method, allowing us to run a callback when a job is about to be discarded.
With Rails 7.1, we can subscribe to ActiveRecord transaction events for instrumentation with the help of transaction.active_record.
With Rails 7.1, we can disable foreign key constraints for the entire application by adding foreign_keys false option to database.yml
Rails 7.1 now raises an ActiveRecord::ReadonlyAttributeError on assignment to readonly attributes.
Rails 7.1 adds support for multiple mailer preview paths, enhancing flexibility and organization by allowing previews across various directories.
Rails 7.1 ActiveJob logs background job enqueue callers with backtraces, showing the file and line number where jobs are triggered.
With Rails 7.2, we can now ignore counter cache columns during backfilling, allowing faster execution by reducing N+1 queries from counter cache column updates.
With Rails 7.1, `ActiveRecord::Batches` now supports multi-column ordering for models with composite primary keys, enabling separate ascending or descending order for each key.
With Rails 7.1, we can hook into the lifecycle of email delivery with the help of ActionMailer before_deliver, around_deliver and after_deliver callbacks.
With Rails 7.2, `ActiveSupport::TestCase` now warns when tests do not run any assertions.
In Rails 7.2, use `--devcontainer` flag with `rails new` to add a devcontainer to new apps and run `bin/rails devcontainer` for existing apps.
Learn about functional programming and how React implements it using immutable data, pure functions, and composition, along with the benefits of functional programming.
Learn differtent types of css units and their usage based on usecases.
Learn about controlled and uncontrolled components, the differences between them and and which one to use.
Speed up multi-process test runs on large DBs with ENV["SKIP_TEST_DATABASE_TRUNCATE"] flag by skipping the table truncations and running test within default transaction.
Explore what Puma-dev is, why it is beneficial, how to install and use it, and how to configure it within bin/setup.
ActiveRecord.after_all_transactions_commit ensures specified actions execute only after all database transactions commit, ensuring reliable post-transaction operations.
Efficiently manages database connections by promptly returning them to the pool after use, enabling immediate reuse rather than holding onto connections until the end of the request cycle.
Passing keyword arguments in index to an array set methods throws SyntaxError.
With Rails 7.2, ActiveRecord::Relation#order supports hash values where keys are table name, value is a hash of key (column name) and value (order direction).
Rails 7.2 added a Date decoder to the postgres adapter to type cast dates at the connection level to type cast columns of type date to Ruby Date instead of String.
Passing a block as an argument in index to an array throws SyntaxError in Ruby 3.4 as it is no longer allowed.
In Rails 7.2, with strict loading in :n_plus_one_only mode, associations are eagerly loaded and child associations are lazy loaded.
Range#size raises TypeError if the begin value of Range is a Float or Rational or Beginless.
When double splat ** operator used with nil, it is treated similarly to **{}, which passes no keywords and does not call any conversion methods.
validate_foreign_key validates foreign key constraint and is designed to reduce the impact of adding foreign keys on high-traffic tables in PostgreSQL.
All new applications using Rails 7.2 will have GitHub CI workflow by default.
Adding analyze and verbose as ActiveRecord::Relation#explain options give us deeper insight into query performance.
With regroup and regroup! methods we can override the group_values
Query database again to retrieve the associated record by resetting the cache on singular associations.
Disable auto generated methods of ActiveRecord.enum with instance_methods by passing false to it.
path_params allows specified params to be used exclusively for named segments under scoped routing without unnecessarily appending parameters to every URL.
Range#reverse_each can now process beginless ranges with an Integer endpoint and raises TypeError for endless ranges.
Discover how GitHub Actions empowers automation to effortlessly backup Fly.io hosted postgres databases, saving backups to a designated S3 bucket.
Use of hash syntax for specifying columns and aliases with the ActiveRecord::QueryMethods#reselect method makes it easier for querying.
Compare two ranges and see if they overlap each other. overlap? returns true if two ranges overlap each other, otherwise false.
Dockerfiles facilitate the deployment of Rails applications in production environments using Docker.
perform_all_later allows us to enqueue multiple jobs that belong to different classes simultaneously within ActiveJob.
With the Active Record API for general async queries we can efficiently query not so fast queries asynchronously to improve the performance.
Generate tokens for specific purposes and verify their authenticity.
Normalization allows us to define custom normalization rules for attributes in our model. This feature is particularly helpful for ensuring that specific attributes are consistently formatted or transformed before they are saved to the database.
Autoloading lib directory isn't always straightforward. In this blog post, we'll delve into the autoloading of the lib directory using config.autoload_lib(ignore:).
We can use Object#with method as shorthand for the common begin/ensure pattern to save the value of an attribute, setting a new value, and then restoring the previous value.
This blog explores useReducer vs Redux, delving into their definitions, use cases, code samples and when to choose each for efficient state management.
We can use Object#in? method to check open date ranges i.e. beginless and endless ranges.
Delivering static assets and JavaScript files with CDN can significantly improve the performance of our Rails application, resulting in faster load times and a better user experience.
React custom hooks help us to build reusable logic, and make the code more readable. In this blog, we will talk about when and when not to use react custom hooks.
Ignore tables by configuring regular expressions on ActiveRecord::SchemaDumper.
Rails improved its support for routes which helps us to navigate to routes prefixed with word cable which were throwing 404 errors before.