rails changelog


Here's a rundown of the latest updates, packed with improvements and bug fixes to make your experience smoother and more efficient! πŸš€

  • New feature: Configurable Maximum Cache Key Sizes
    Say goodbye to the rigid 1024-byte limit! You can now configure maximum cache key sizes in the RedisCacheStore class. Whether you want to set a specific max_key_size or disable the size limit entirely, the choice is yours. This change comes with new tests to ensure everything works like a charm. Flexibility for the win! πŸŽ‰

  • Improvement: Raw Data Handling in RedisCacheStore
    Now you can store and retrieve data in its original format without serialization by using the raw: true option. This tweak to the RedisCacheStore configuration enhances flexibility for developers working with raw data. Plus, there's a new test case to confirm everything functions as expected. Raw power unleashed! βš™οΈ

  • Improvement: Speedy Leap Year Calculations
    We've turbocharged the leap year calculations in distance_of_time_in_words. This optimization reduces computational overhead and speeds up time calculations, especially for longer time spans. Faster execution times and reliable resultsβ€”what's not to love? ⏱️

  • Bugfix: Owner Persistence Check in find_or_create_by!
    Fixed an issue with the find_or_create_by! method not checking owner persistence correctly. Now, a flag tracks the success of the last transaction, ensuring consistent persistence checks. No more misleading resultsβ€”just solid reliability! πŸ› οΈ

  • Bugfix: Dropdown Menu Malfunction
    We've squashed the bug that was preventing dropdown menus from opening. By removing unnecessary JavaScript and fixing a div tag, the dropdowns are back and better than ever. Smooth sailing ahead! 🎈

  • Bugfix: Instance Variable Name Typo
    A tiny typo in an instance variable name has been corrected for improved code clarity. It's the little things that make a big difference! πŸ”

  • Chore: Added Changelog for #54907
    A new changelog entry keeps everything transparent and well-documented. Plus, with the [ci skip] directive, we keep the process efficient and streamlined. πŸ“œ

Enjoy these updates and keep building awesome stuff! 🌟


Welcome to the latest update! We've got some fantastic improvements and new features that will make your Rails experience even smoother and more powerful. Let's dive into the details! πŸŽ‰

  • New Feature: Tag-Based Note Filtering 🏷️
    Now you can filter notes by tags like "FIXME," "TODO," and "OPTIMIZE" using a handy dropdown in the /rails/info/notes section. This makes it super easy to find the notes you need and streamline your workflow!

  • Improvement: Per-Attribute Unencrypted Data Support πŸ”’
    Flexibility just got a boost! You can now enable support_unencrypted_data for specific attributes, even if it's turned off globally. This gives you more control over your data management without messing with the overall encryption settings.

  • Improvement: Association Lookup for Allocated Records πŸ”
    Allocated Active Record objects can now perform association lookups without crashing! This change is especially helpful when using test frameworks like Mocha, ensuring smooth sailing during your testing adventures.

  • Improvement: Refactor valid_type? Method πŸ”§
    The valid_type? method in AbstractAdapter is now a class method, allowing type validation without needing a live connection. This makes checking column types more efficient and keeps things running smoothly.

  • Bugfix: Autoload for ActionView::StrictLocalsError πŸ›
    We've fixed the missing autoload for ActionView::StrictLocalsError, ensuring that your app runs without hiccups when using strict locals in views. Say goodbye to unexpected runtime errors!

  • Bugfix: Typo Correction in Performance Guide ✍️
    A pesky typo in the "Tuning Performance for Deployment" guide has been squashed, making the document clearer and more professional.

  • Chore: Minor Update to Routing Documentation πŸ“š
    Added a missing 'be' in the routing.md file for better clarity. Because every word counts in making documentation top-notch!

We hope these updates make your Rails journey even more enjoyable. Happy coding! πŸš€


Here's the latest scoop on some fab updates and tweaks that have been made to improve our system. Buckle up and enjoy the ride! πŸš€

  • New feature: πŸŽ‰ Introducing the Cache#read_counter and Cache#write_counter methods! These nifty little additions to the Cache class are here to help you keep tabs on how often your cache is getting read and written to. This means you can now optimize your caching strategies and boost your application's efficiency with ease. More insights, more power! πŸ’ͺ

  • New feature: Say hello to the must-understand directive! 🧐 This new addition ensures that critical information is fully comprehended by the receiving party, reducing the risk of any mix-ups. It's all about clear communication and keeping everyone on the same page. Let's make data handling and interoperability a breeze! πŸ“Š

  • New feature: ActiveRecord just got a whole lot cooler with the new with_default_isolation_level feature! πŸŽ‰ You can now set and retrieve a default isolation level for database connections. This enhancement is all about giving you the flexibility to manage database concurrency and consistency like a pro. Get ready for smoother transactions! πŸ’Ύ

  • Improvement: πŸͺ Rails now calculates cookie size just like browsers do, by including the cookie name in the length calculation. This tweak ensures your cookies stay within the 4KB limit, keeping everything running smoothly and error-free. Sweet!

  • Improvement: Function aliases in Active Record are now retryable! πŸ”„ We've revamped the way Function#as works, so you can enjoy more reliable query retries. This change also clears up some old code suggestions, making everything cleaner and more efficient. Cheers to that!

  • Improvement: 🚦 We've switched to using HTTP status code 303 for redirects in the destroy action. This means after deleting a resource, users will be smoothly redirected to a new page without any accidental re-submissions. It's all about making navigation intuitive and user-friendly!

  • Chore: πŸ“š Active Storage documentation has been updated to reflect Vips as the default variant processor. This change highlights the transition and its benefits, ensuring that users have the latest info at their fingertips. Docs are key, folks!

  • Bugfix: 🐞 A pesky typo in the Action Controller Overview guide has been squashed! This fix ensures that our documentation remains top-notch and crystal clear for all you awesome developers out there.

  • Bugfix: πŸ“ Spelling errors in Markdown and Ruby files have been corrected, ensuring everything reads just right. Attention to detail is what we're all about, keeping our codebase and documentation in tip-top shape!

That's all for now, folks! Keep an eye out for more updates and happy coding! 🎈


Here's the latest scoop on what's been happening in our codebase! We've got some exciting new features and improvements, as well as a few bug fixes to keep everything running smoothly. Let's dive in! πŸš€

New Features

  • Capture Those Errors! 🎯: We've introduced ActiveSupport::Testing::ErrorReporterAssertions#capture_error_reports, a nifty new method to capture all reported errors within a block that match a specific error class. This is a game-changer for testing, making it super easy to verify error reports and their details. Say goodbye to error-handling headaches!

Bugfixes

  • Grapheme Length Fix: We've squashed a bug in MultibyteCharsExtrasTest#test_should_compute_grapheme_length that cropped up with Ruby 3.5.0dev. The fix aligns the test with the latest Unicode standards, ensuring accurate grapheme cluster handling for Devanagari characters. Your tests should now pass with flying colors! 🌈
  • Generator Options Resolved: Addressed issue #54021 by ensuring generator options are read correctly. This fix ensures smooth sailing for all your generator needs! βš™οΈ
  • Whitespace Woes No More: Tidied up the PasswordsController with proper indentation and whitespace management. Clean code is happy code! 🧹

Improvements

  • Rollup-Plugin-Terser: We've added rollup-plugin-terser as a dev dependency for Action Text, ensuring we no longer rely on indirect dependencies. This change boosts reliability and maintainability. Go team! πŸŽ‰
  • Rubocop Packaging Update: Upgraded rubocop-packaging to version 0.6.0, embracing its new plugin-based version. This update keeps us in line with the latest and greatest in code quality tools. πŸ“¦
  • Email Normalization Test: Added a test to ensure our email normalization process is on point. Consistent email handling for the win! πŸ“§

That's all for now, folks! Keep those code contributions coming, and let's continue making our project awesome! 🌟


Hey there, code adventurers! 🌟 We've got some exciting updates and improvements to share with you. Dive in to see what's new and how these changes can make your coding life a little smoother!

  • Bugfix: We've tackled a sneaky bug in the routing system by ensuring lazy route sets are loaded before test routes. This fix is a game-changer as it prevents missing those critical after_routes_loaded callbacks or mistakenly invoking them with test routes. This update ensures that your routing process is rock-solid and callback execution is error-free. πŸš€

  • Improvement: Out with the old and in with the new! We've converted the ActionCable example from CoffeeScript to JavaScript. This change modernizes the codebase, making it more readable and maintainable. Plus, it plays nicely with other JavaScript frameworks and libraries, making your integration process a breeze. Say hello to a more streamlined and familiar coding experience! πŸŽ‰

Stay tuned for more updates and happy coding! πŸ’»βœ¨


Here's a fun and exciting update on the latest changes to our project! πŸŽ‰ We've been working hard to improve the robustness, flexibility, and overall awesomeness of our codebase. Check out the cool new features and fixes we've rolled out:

  • New Feature: Local CI Magic with bin/ci πŸš€
    Say hello to our brand-new local Continuous Integration tool, bin/ci, designed to streamline your development workflow. This nifty tool runs all your tests, linters, and security scanners, giving you a green light when everything's good to go. Plus, you can customize your CI workflow with a super cool Domain-Specific Language (DSL). Co-authored by the legendary David Heinemeier Hansson, this feature is sure to make your coding life easier and more fun!

  • Improvement: Smarter ActiveRecord Migrations πŸ§™β€β™‚οΈ
    We've implemented respond_to_missing? for ActiveRecord::Migration, making your migration scripts more robust and flexible. This enhancement ensures your migration class can handle dynamic method calls like a pro, reducing confusion and improving the overall developer experience.

  • Improvement: Session Controller Tests for Auth Generator πŸ”’
    We've added automated tests for the session controller in the authentication generator, boosting your app's reliability and security. These tests ensure session management is spot-on, so you can focus on building amazing features without worrying about pesky session bugs.

  • Improvement: PostgreSQL Adapter Connection Handling πŸ› οΈ
    Our PostgreSQLAdapter now gracefully handles connection failures when the server version is reported as 0. This enhancement ensures your app can recover from connection hiccups and keeps your database interactions smooth and reliable.

  • Bugfix: Disconnect on configure_connection Failures πŸ›
    We've squashed a bug that could leave your Adapter in a half-initialized state if configure_connection failed. Now, we'll disconnect and retry from scratch, ensuring your connections are always in tip-top shape.

  • Bugfix: Timeout Handling in Connection Configuration ⏱️
    We've improved the handling of Timeout.timeout errors in AbstractAdapter#attempt_configure_connection. By rescuing Exception, we're making sure timeout-related issues don't throw a wrench in your app's stability.

  • Bugfix: Mailer Generation Only If Needed πŸ“¬
    No more unnecessary mailer files cluttering your app! We've updated the auth generator to create mailer files only if ActionMailer is in use. This change prevents potential breakage and keeps your app clean and efficient.

We hope you enjoy these updates as much as we enjoyed creating them! Keep coding and stay awesome! 🌟


Hey there, code adventurers! We've got some exciting updates to share with you, including new features, improvements, and bug fixes. Let's dive into the latest changes that will make your coding journey smoother and more secure! πŸš€

  • New Feature: Default bin/bundle-audit Configuration
    Say hello to a safer codebase! We've added a default configuration for bin/bundle-audit to help you catch known security vulnerabilities in your Gemfile. This nifty tool is now part of every CI flow, ensuring your apps are secure by default. Plus, it's included in the standard application generation process, so you won't miss a beat. πŸ›‘οΈ

  • New Feature: except_on: Option for Validation Callbacks
    We've added an except_on: option for validation callbacks, giving you more control over when validations should be skipped. This means you can now fine-tune your validation logic, making your code cleaner and more efficient. 🎯

  • New Feature: Auto-Including Nonce for CSP
    Boost your app's security with the new content_security_policy_nonce_auto config option. It automatically adds a nonce to HTML tags affected by CSP directives, making it easier to implement nonce-based CSP without the manual hassle. πŸ”’

  • Improvement: RuboCop Plugin System
    The RuboCop plugin system is here! We've updated our RuboCop extension gems to use this shiny new architecture, making linting more modular and efficient. While rubocop-packaging is still catching up, rubocop-rails-omakase is already on board. πŸŽ‰

  • Improvement: Optimized String#parameterize
    Speed up your string transformations with our optimized String#parameterize method. By reducing reliance on regex, we've made it up to 2.53x faster! ⚑

  • Improvement: Don't Deserialize Mutable Defaults
    To prevent data inconsistencies, mutable defaults are now kept serialized. Immutable types, like integers, are deserialized for better performance. This ensures your defaults behave as expected. πŸ› οΈ

  • Bugfix: Capture View Helper Keyword Arguments
    We've fixed the capture view helper to correctly pass keyword arguments, enhancing its flexibility and reducing potential errors. 🐞

  • Bugfix: ActiveRecord::Result#dup Consistency
    We've addressed an inconsistency in duplicating ActiveRecord::Result objects to ensure all attributes are preserved correctly. πŸ“‹

  • Bugfix: Stop Generating Bundler Binstub
    With upcoming changes in Bundler, we've stopped generating the bin/bundle binstub to avoid warnings and ensure continued functionality of the AuthenticationGenerator. πŸ”§

  • Chore: Remove Unused Method in ActiveRecord::Result
    We've cleaned up the codebase by removing the unused raw_column_types method, making the ActiveRecord::Result class leaner and meaner. 🧹

That's a wrap for now! Keep coding, stay secure, and enjoy these updates. Until next time, happy coding! 🌟


Here's the latest scoop on our updates and improvements! We've been busy making things smoother, faster, and more intuitive for our beloved developers. Check out the exciting changes below:

  • New feature: πŸš€ We've jazzed up the Rails console by automatically loading routes when you start it up. No more fumbling around trying to find route helpersβ€”everything's ready and waiting for you right from the get-go! This little tweak means you can now access route methods instantly, making your development process as smooth as butter.

  • Improvement: πŸ› οΈ Our devcontainer script now plays nicely with Podman, giving you the freedom to choose your preferred container management tool. Whether you're a Docker devotee or a Podman pro, our script's got you covered, ensuring seamless development environments either way.

  • Improvement: ⚑ We've turbocharged the IsolatedExecutionState#state methods, making them lightning-fast! Thanks to some nifty micro-optimizations, these methods now run up to 94% faster, especially without YJIT. Your Rails applications just got a major speed boost!

  • Improvement: πŸ” We've tidied up the method checks by ensuring consistent interfaces for internal objects. This results in cleaner, more readable code, particularly in the ActiveRecord library, making it easier to maintain and understand.

  • Bugfix: πŸ› We've squashed a pesky bug affecting Active Record connections during test parallelization on MacOS. By clearing connections before forking, we've ensured a stable and reliable test environment, especially for those using the mysql2 adapter.

  • Bugfix: πŸ”§ Active Record's async feature now plays nice with threads! We've fixed an issue that could prevent notifications from firing due to a race condition, ensuring your instrumentation remains consistent and reliable.

  • Bugfix: πŸ”„ We've fixed the rotate(on_on_rotation:) and #on_rotation methods, so they now properly handle the on_rotation callback. This improvement enhances the flexibility of MessageVerifier and MessageEncryptor, making message rotation smoother than ever.

  • Chore: 🧹 We've cleaned up the API by removing the rotate(on_rotation:) argument, which wasn't meant to be publicly exposed. This refinement ensures a more streamlined and intuitive API for everyone.

These updates are all about making your development experience more efficient, reliable, and enjoyable. Happy coding! 😊


Hey there, awesome developers! Here's a fresh batch of updates and improvements to make your coding life a little bit easier and a lot more fun! πŸŽ‰

  • New feature: Date and Time Flexibility in TimeHelpers! πŸ•°οΈ You can now pass in a specific date or time to ActiveSupport::Testing::TimeHelpers#freeze_time. This nifty improvement gives you the power to simulate different time scenarios with ease, making your tests more accurate and flexible. Perfect for those time-traveling apps!

  • New feature: Dev Containers Without VSCode! πŸš€ Say goodbye to the VSCode dependency! A new script lets you use development containers straight from the command line. Just run a few commands, and you're all set to code in your preferred environment. Command-line warriors, rejoice!

  • Bugfix: Encoding Compatibility for MessageVerifier! πŸ”’ Upgrading Rails? We've got your back! The AS::MessageVerifier#verify method now accepts both safe and unsafe encoding, making your transition from Rails 7.1 to 7.2 smoother than ever. No more broken IDs!

  • Bugfix: JSON Serialization with ColumnSerializer! πŸ—ƒοΈ Fixed an issue with JSON serialization for hash types by wrapping the coder in ColumnSerializer. Now your data is serialized and deserialized like a charm, ensuring consistency and reliability in your Rails apps.

  • Improvement: Eager Loading Log Clarity! πŸ“‹ Eager loading just got more transparent! The payload[:name] attribute now includes the model's name, followed by "Eager Load". This makes your logs more readable and helps you track what's happening under the hood.

  • Bugfix: Stop Invalid Records in Their Tracks! 🚫 We've tightened up validations to prevent invalid records from sneaking through when saving associations. Now, all changed records in the association chain are validated, ensuring data integrity across the board.

  • Improvement: ArgumentError for Non-Exceptions! ⚠️ Rails.error.report method now raises an ArgumentError if you try to report something that's not an exception. This ensures only valid exceptions are reported, keeping your error handling sharp and on point.

  • Chore: Environment Name Update! πŸ› οΈ Updated the environment label from "production" to "development" in the guide to keep everything clear and aligned with development practices. No more mix-ups!

Enjoy these updates, and happy coding! Keep those bugs at bay and those features rolling in! πŸš€πŸ’»


Here's a delightful roundup of the latest and greatest updates to keep your code running smoothly and efficiently. πŸŽ‰

Bugfix: Fixed the default Docker build for Ruby images by reintroducing the libyaml-dev package. This essential package was previously removed, causing issues with installing and building the psych gem. Now your Ruby applications can build without a hitch! πŸš€

Improvement: Enhanced the node plaintext conversion process by excluding script and style content. This means cleaner and more relevant plaintext outputs, free from the clutter of JavaScript and CSS code. Your text conversions just got a lot tidier! 🧹

Bugfix: Stopped duplicating frozen query values in ActiveRecord. If you're using frozen string literals, this fix ensures that your frozen strings aren't unnecessarily duplicated in where calls, boosting performance and memory efficiency. Your Ruby app will now run smoother than ever! πŸ’¨

Improvement: Optimized model instantiation by eliminating allocations during Model.respond_to? calls. This tweak reduces initialization costs and enhances performance, making your model queries zippier. Say goodbye to unnecessary memory allocations! 🏎️

Bugfix: Fixed ActionDispatch::Request::HTTP_METHOD_LOOKUP from being affected by unwanted inflections introduced by gems. This ensures that HTTP methods remain consistent, regardless of external library modifications. Your HTTP requests are now more reliable! πŸ”’

Improvement: Streamlined the autosave process for collection associations by skipping already persisted targets. This reduces unnecessary database operations, leading to better performance and faster response times. Your data manipulations just got a performance boost! πŸ“ˆ

Chore: Cleaned up the documentation by making FilterParameters#ENV_MATCH, NULL_ENV_FILTER, and NULL_PARAM_FILTER nodoc. This helps keep the API documentation focused and concise, ensuring developers only see the most relevant information. Less clutter, more clarity! πŸ—‚οΈ

These updates are crafted to enhance your development experience, making your applications more efficient, reliable, and easy to maintain. Enjoy coding! πŸ’»βœ¨


Here's a delightful update on the latest changes that have been made to enhance your Rails experience. We've got performance improvements, error message clarity, and some essential bug fixes that will make your development life a bit smoother. Let's dive into the details! πŸš€

  • Improvement: Streamlined Active Storage Validation πŸŽ‰
    For tasks like assets:precompile, we're now skipping the loading of ActiveStorage::Blob. This means less clutter and fewer potential misconfigurations when Active Storage isn't needed. Your precompilation process just got a little bit lighter!

  • Improvement: Clearer Error Messages for Routes πŸ”
    When you mess up the :only or :except options in your routes, you'll now see the resource name in the error message. This makes it much easier to pinpoint the source of the problem, especially when dealing with gem-defined routes. No more guessing games!

  • Improvement: Enhanced Notification Testing πŸ› οΈ
    assert_notification now matches on a payload subset by default and returns the matched notification. This update makes your notification tests more flexible and informative. Plus, we've tidied up some tests for a cleaner codebase.

  • Bugfix: StringJoin Nodes Compilation Issue Resolved πŸ›
    We've stopped eagerly compiling StringJoin nodes, fixing an issue where bind variables were getting lost, leading to broken queries. Your queries should now behave as expected, keeping all those important variables intact.

  • Bugfix: Multibyte Deprecation Warning Avoided πŸ“œ
    Say goodbye to pesky deprecation warnings when quoting multibyte characters. We've adjusted the quoting mechanism to handle ActiveSupport::Multibyte::Chars without triggering any warnings, ensuring a smoother development experience.

  • Bugfix: Improved Template Rendering Error Handling 🎨
    Argument errors in templates are now handled with more precision. If it's about strict locals, you'll get a specific ActionView::StrictLocalsError. Otherwise, the original error is reraised, preserving the backtrace for easier debugging.

  • Chore: Documentation Tweak πŸ“š
    A small but mighty change: "encryption,database" is now "encryption, database". Just a tiny tweak to make things clearer!

These updates are designed to make your Rails journey more efficient and enjoyable. Keep coding and have fun! 🌟


Here's the latest scoop on our updates, packed with enhancements and fixes to make your coding experience smoother and more delightful. Let's dive into the details! πŸš€

  • New feature: We've rolled out a shiny new Prism for Visitor::HashToString in the Rail Inspector project! πŸŽ‰ This enhancement transforms how hash data is converted to string representations, making the code more modular and maintainable. Enjoy improved flexibility and readability in your hash-to-string conversions!

  • Improvement: Before checking out a pinned connection, we now double-check its availability. This tweak boosts connection management, ensuring only active connections are used, and enhances the app's reliability and efficiency.

  • Bugfix: No more string mutations! We've fixed String#mb_chars to ensure the original string stays intact. Now, when force_encoding is called, we duplicate the argument to keep everything as it should be. Say goodbye to unintended side effects!

  • Improvement: We've added documentation for the unless_exist option in AS::Cache#write. This update clarifies how to use this option, helping you avoid potential pitfalls. Now, you can write to the cache only if the key doesn't exist, with ease!

  • Improvement: We're now using the released version of websocket-client-simple and have cleaned up code related to old Ruby warnings. This update streamlines the codebase and enhances compatibility with newer Ruby versions. Out with the old, in with the new!

  • Bugfix: We've fixed the drop_table function to properly handle inversions without options. This ensures smooth database management, so you can drop tables without a hitch. Stability and reliability, guaranteed!

  • Bugfix: We've resolved issue #54056 by supporting procedural symbols in callback conditionals. This fix, co-authored by Jean Boussier, enhances callback handling, making the system more robust and flexible. Enjoy a more efficient implementation!

Stay tuned for more updates and happy coding! πŸ§‘β€πŸ’»βœ¨


Here's a fresh batch of updates and fixes to make your Rails experience smoother than ever! πŸš€

  • Improvement: The docs for indentation and with_indentation got a glow-up! Now, they're crystal clear about how these methods manage indentation levels in Gemfiles and DSL actions. No more guessing gamesβ€”just smooth sailing through your code! πŸ“šβœ¨

  • Improvement: Spicing up the style! Code constants in active_support/broadcast_logger.rb now rock a sleek monospace look, while "True" and "False" keep it casual. This tweak makes it easier to spot constants and understand logging conditions at a glance. πŸ”πŸŽ¨

  • Bugfix: The "Getting Started" tutorial now has a shiny new hyperlink for the "Layouts and Rendering in Rails" section. Navigate with ease and dive right into the essential guides without a hitch! πŸ–±οΈπŸ”—

  • Improvement: Out with the old, in with the efficient! Unused require statements are gone, and the teardown process got a snazzy refactor. This cleanup boosts code readability and keeps things running smoothly. πŸ§ΉπŸ’»

  • Bugfix: Fixed a reference in the "getting-started" tutorial, so you can now easily find the right view file. It's all about making your learning journey as seamless as possible! πŸ“‚πŸ”

  • Bugfix: A few pesky typos in the "Getting Started" tutorial have been squashed. Now, the documentation is clearer and more polished, making it easier for newcomers to dive in. πŸ“βœ…

  • Chore: A tiny tweak in the Enumerable module documentationβ€”removing formatting tags around Enumerable::SoleItemExpectedError. It's all about clarity and consistency, folks! πŸ› οΈπŸ“„

Enjoy these updates, and happy coding! πŸŽ‰πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»


Hey there, coding wizards! 🌟 We've got a fresh batch of updates sprinkled with some magic dust to make your Rails experience even more enchanting. Dive in and see what's new, fixed, and improved just for you!


New Features & Improvements

  • Rails 8 Authentication Generator: Our documentation now sparkles with details about the new authentication generator feature in Rails 8. This magical tool creates models, controllers, views, routes, and migrations to simplify user authentication, including password resets! πŸ§™β€β™‚οΈβœ¨

  • Block Support for ActiveJob::ConfiguredJob#perform_later: You can now pass a block to this method, giving you the power to execute custom code when your job runs. Flexibility level: expert! πŸ› οΈ

  • Nested Records Handling: Creating new records just got smarter! We've improved how nested through records are managed, ensuring your data relationships are as tight-knit as your favorite coding community. 🀝

  • Guide Version Navigation: Switching guide versions? No problem! We've added a feature to keep you on the same page (literally) when you hop between different versions of the guide. πŸ“šπŸš€

  • Example for AR.db_warnings_ignore: We've added a practical example to help you master the AR.db_warnings_ignore feature. Because who doesn't love a good example, right? πŸ“

Bugfixes

  • Thread-Safe Lazy Attribute Methods: We’ve squashed a pesky bug that caused thread safety issues with lazy attribute methods. Now, your multi-threaded adventures should be smoother than ever. πŸžπŸ”¨

  • Trix Editor Update: We've updated Trix to version 2.1.10 to keep your app secure from CVE-2024-53847. Because security is always in style! πŸ”’βœ¨

  • PostgreSQL Test Fix: Our tests now play nice with PostgreSQL, fixing a notification count issue in ActiveRecord::InstrumentationTest. Your tests should now pass with flying colors! πŸŽ¨βœ…

Chores

  • Homebrew Path Update: We've updated the Homebrew path to ensure your development environment runs as smoothly as a well-oiled machine. πŸ› οΈβœ¨

That's all for now, folks! Keep coding like the rockstars you are, and enjoy the new features and fixes. Until next time, happy hacking! πŸŽ‰πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»


Here's a delightful rundown of the latest changes and improvements:

  • New feature: πŸŽ‰ ShardSelector now supports granular database connection switching! This means you can now switch databases with laser-like precision using a specific abstract connection class, rather than just globally. Plus, we've spruced up the Multiple Databases guide and ShardSelector documentation to help you navigate these new waters with ease.

  • Improvement: πŸ› οΈ We've made add_unique_constraint, add_check_constraint, and add_foreign_key revertible, even when given invalid options. This makes your database migrations smoother and more reliable. Big shoutout to Aidan Haran for the collaboration on this one!

  • Improvement: πŸ“‚ Load your SQLite3 extensions like a pro with config/database.yml! Thanks to the latest sqlite3 gem, you can now specify extensions with paths or module names. We've got you covered with updated documentation to guide you through this nifty feature.

  • Bugfix: πŸ“š Corrected the sample code in the strong parameter API docs to reflect its intended functionality. Now, developers can trust the examples to guide them right!

  • Bugfix: πŸ› Set framework_defaults in Active Job and Action Mailer bug report templates. This ensures your bug testing scripts run like a well-oiled machine, just like a regular Rails app.

  • Bugfix: πŸ”§ Fixed compatibility issues with the alphanumeric method parameters in SecureRandom for Ruby 3.2. We've added conditional checks to keep things running smoothly across different Ruby versions.

  • Chore: 🧹 Cleaned up RuboCop offenses in the codebase for better readability and style consistency. Your code is now as fresh and clean as a whistle!

Enjoy these updates and keep building amazing things! πŸš€


Here's a delightful rundown of the latest and greatest updates that are sure to make your development experience even more awesome! πŸŽ‰

  • Improvement: Preserve Duplicate Columns in ActiveRecord::Base#select πŸš€
    We've jazzed up the ActiveRecord::Base#select method to keep those duplicate columns intact! Previously, duplicates were lost in the shuffle, but now you can enjoy the full dataset as intended. This makes querying more flexible, especially in complex joins or aggregate functions. Say hello to smoother data retrieval!

  • Improvement: Use WeakKeyMap for Connection Lease Registry 🧠
    Thanks to Ruby 3.3.5, we can now safely use WeakKeyMap for the connection lease registry. This change optimizes memory management by auto-removing entries when keys are no longer needed. It's a nifty follow-up that boosts the efficiency of connection handling in Rails.

  • Improvement: NOT VALID Constraints in create_table πŸ“œ
    We've refined how NOT VALID constraints are managed in PostgreSQL schema dumps. By ensuring NOT VALID constraints are dumped as ALTER TABLE statements, we maintain compatibility across different database adapters. This fix resolves issue #53732, ensuring smooth sailing in schema management.

  • Chore: Disable YJIT in Development and Test Environments πŸ› οΈ
    To keep things snappy, we've turned off YJIT in development and test environments. Frequent code reloading and method redefining in these environments make YJIT less effective, so disabling it helps prevent unnecessary complexity. Co-authored by Jean Boussier, this tweak keeps your workflow streamlined.

  • Bugfix: Finding by Nil Composite Primary Key Association πŸ”
    We've squashed a bug that was causing hiccups when retrieving records with a nil composite primary key. Now, handling such cases is a breeze, improving the reliability of data fetching and ensuring your app runs smoothly.

  • Bugfix: Correct Order of to_prepare Initialization Event πŸ“š
    We've updated the documentation to reflect the correct sequence of the to_prepare initialization event. This fix, addressing issue #53682, enhances clarity and reliability for developers, ensuring everyone is on the same page.

  • Bugfix: Example Code for Request-Based Constraints ✏️
    We've polished the example code for Request-Based Constraints, making it more streamlined and easier to understand. By simplifying the structure, we've improved clarity, so implementing subdomain constraints is now a walk in the park!

Enjoy these updates and happy coding! πŸ₯³


Hey there, awesome developers! We've got some exciting updates and fixes to share that will make your coding life a little bit smoother. Let's dive into the details! πŸš€


Bugfix: Fixed a pesky multibyte character tokenization bug in ERB::Util! Now, those tricky multibyte characters won't trip up your ERB tags. We've swapped out source.string[pos, len] for source.string.byteslice(pos, len) to handle those sequences like a pro. Plus, we've added some nifty tests to ensure everything's working perfectly. πŸŽ‰

Improvement: Resetting composite primary key configurations just got a whole lot smarter! When you set a primary key, any existing composite configurations will now reset properly, preventing any database drama. Your data integrity is in good hands! πŸ”‘

Bugfix: Silenced those confusing deprecation messages during the app:update command. No more noise from deprecations you haven't even set up yet. Your update process just got a whole lot clearer! πŸ™‰

Improvement: We've updated our Rails guides to prefer the official Ruby documentation. Now you'll have the most accurate and up-to-date info at your fingertips, especially for methods like Object#tap and Hash#fetch. Let's keep things safe and sound! πŸ“š

Bugfix: The abort_if_pending_migrations task now uses Array#flatten! to mutate arrays in place. No more relying on nil return valuesβ€”your migration checks are now reliable and error-free! πŸ› οΈ

Improvement: We've enhanced how new records are managed with the "becomes persists previously_new_record" update. Your new entries are now stored and tracked like champs, ensuring data integrity and performance are on point. πŸ—ƒοΈ


Keep rocking those keyboards, and happy coding! πŸ’»βœ¨


Welcome to the latest update! πŸŽ‰ We've been busy squashing bugs, improving performance, and tidying up the codebase to make your development experience smoother and more delightful. Here's a rundown of the latest changes:

  • New feature: We've improved the behavior of method_added and singleton_method_added methods by ensuring they call super. This change is crucial for maintaining the functionality of code that tracks method definitions or performs actions when methods are added. Now, ancestor callbacks will be executed as expected, enhancing the compatibility and predictability of Ruby code. πŸš€

  • Bugfix: We tackled a pesky issue causing garbage collection crashes when using ObjectSpace::WeakKeyMap with Thread or Fiber objects as keys. Our workaround involves a custom WeakThreadKeyMap class, ensuring stability in the ActiveRecord connection pool while the root cause is investigated. πŸ›πŸ”¨

  • Improvement: Connection pools no longer linger around unnecessarily, thanks to a revamped query cache mechanism. We've shifted to using an atomic integer for versioning, reducing the load on Rails CI and boosting performance. πŸ’ͺ

  • Improvement: Performance woes be gone! We refactored the query cache and connection lease registry, replacing the inefficient WeakKeyMap with a specialized weak map that handles Thread or Fiber keys with finesse. Enjoy smoother operations on Ruby 3.1 and 3.2! ⚑

  • Chore: A little spring cleaning never hurt anyone! We removed an unused require statement from the resources_test.rb file, tidying up the codebase and optimizing load times during testing. 🧹

  • Bugfix: Say goodbye to center alignment issues in guides blocks. We've fixed the wonky alignment, making the guides more visually appealing and easier to read. Your eyes will thank you! πŸ‘€

  • Bugfix: We fixed several RuboCop offenses in actionpack/lib/action_dispatch/journey/parser.rb. By adding a frozen string literal comment and addressing layout issues, we've made the code more readable and maintainable. πŸ“

We hope these updates enhance your development journey. Keep coding and enjoy the improvements! 🎈


Hey there, awesome developers! πŸš€ We've got some exciting updates and fixes to share with you. Dive into the latest changes and enhancements that are sure to make your coding experience even more delightful. Here's what's new:

  • New feature: Add route helper connect for WebSockets 🌐
    Say hello to the new connect route helper, designed to make your WebSocket connections a breeze! This nifty addition streamlines the process, enhancing real-time communication and making your app even more dynamic and responsive. Get ready to supercharge your WebSocket interactions!

  • Improvement: Allow railties to use lazy routes πŸ›€οΈ
    Railties just got a major upgrade! They can now seamlessly use lazy routes without any hiccups. By setting the route set class config earlier, we've ensured that your railties play nice with lazy loading, making route management smoother and more flexible.

  • New feature: Bulk insert fixtures on SQLite πŸ—„οΈ
    Speed up your data loading with our new bulk insert feature for SQLite! This update allows multiple records to be inserted in one go, boosting performance and making your testing and development process faster and more efficient. Get ready for some serious time-saving!

  • Bugfix: Fix PostgresqlAdapter when prepared statements are disabled πŸ›
    We've squashed a bug in the PostgreSQL adapter! The issue with handling prepared statements when they're disabled is now resolved. Plus, we've cleaned up the code by removing the without_prepared_statements? method, making your PostgreSQL experience smoother and more robust.

  • Improvement: Using signed_id for finding and setting session record πŸ”’
    Session management just got a security boost! By using signed_id for session records, we're ensuring that your session tokens are more secure and tamper-resistant. This update streamlines session handling and enhances the overall security of your application.

  • Improvement: Support minitest 5.25+ πŸ”§
    We've got you covered with the latest Minitest updates! Our code now supports Minitest 5.25+ and its new with_info_handler API, ensuring compatibility with the newest features while keeping support for all Minitest 5 versions. Testing just got even better!

  • Bugfix: Check invalid enum options for the new syntax 🚫
    No more sneaky invalid enum options! We've added a validation mechanism to catch those pesky _ prefixed options that are no longer valid in the new syntax. This update enforces the new rules and helps you avoid potential issues, keeping your code clean and error-free.

  • Bugfix: Fix create_table with :auto_increment option for MySQL adapter πŸ”„
    Creating tables with auto-incrementing fields is now a breeze! We've fixed the issue with the :auto_increment option in the MySQL adapter, allowing you to define primary keys that automatically increase in value without a hitch. Enjoy seamless database operations!

  • Chore: Update development_dependencies_install.md πŸ“š
    We've spruced up the development_dependencies_install.md file! While the specifics aren't detailed, expect clearer instructions and possibly some new additions to make installing development dependencies easier and more intuitive. Happy coding!

That's all for now, folks! Keep building amazing things and stay tuned for more updates. πŸŽ‰


Hey there! We've got some exciting updates and improvements to share with you. Check out the latest changes below:

New Features

  • Password Reset Flow πŸ› οΈ

    • We've rolled out a shiny new password reset feature for the authentication generator. Now users can easily reset their passwords with new views (new.html.erb and edit.html.erb), a PasswordsController, and a PasswordsMailer. This also includes streamlined HTML and updated routes to make the process smooth and user-friendly.
  • Running Tests by Line Range πŸ“‹

    • Added a section in the contribution guide explaining how to run tests by specifying a line range. This is a game-changer for contributors who want to focus on specific parts of the codebase without running the entire test suite.

Improvements

  • Faster Route Mapping Scope Lookups πŸš€

    • Optimized the performance of route mapping scope lookups by merging inherited values directly into the immediate hash. This reduces unnecessary iterations, especially with deeply nested routes, making lookups faster and more efficient.
  • Enhanced Filename Sanitization πŸ—‚οΈ

    • Updated ActiveStorage::Filename#sanitized to include new unsafe characters specific to Windows filenames (", <, >, ?, *). This ensures better compatibility and fewer errors when handling file uploads.
  • Completion of #to_fs Functionality βœ”οΈ

    • Finalized the #to_fs method after removing deprecated features. This makes the method more robust and aligns it with current standards for better code quality and maintainability.

Bug Fixes

  • Ruby 3.4.0dev Warning πŸ›

    • Resolved a warning related to the Pilot.generates_token_for method in Ruby 3.4.0dev. This fix ensures that blocks passed to this method are properly handled, eliminating the warning and improving compatibility with future Ruby versions.
  • PostgreSQLAdapterTest Error 🐘

    • Fixed an error in PostgreSQLAdapterTest#test_disable_extension_without_schema caused by a PG::DuplicateObject error. The fix also applies to the test_disable_extension_with_schema test to prevent similar issues.
  • Removed Duplicate Line πŸ”„

    • Cleaned up the code by removing a duplicated line that has been around since a previous commit. This helps maintain a tidy and efficient codebase.

Chores

  • Deleted CHANGELOG Entry πŸ—‘οΈ
    • Removed a specific entry from the CHANGELOG regarding the bin/rails boot command. This change has been cherry-picked to the 7-2-stable branch for consistency.

That's all for now! Keep an eye out for more updates and happy coding! 🌟

Showing 1 to 20 of 35 Entries