rails changelog


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! 🌟


Here's the latest and greatest from our recent updates! πŸš€

### New Features
- **Authentication generator supports an `--api` flag**: πŸŽ‰ Now you can generate API-only controllers and models without view templates, making your API-centric projects leaner and meaner. Plus, the sessions view template is now in an ERB generator, so gems like `tailwindcss-rails` can join the party with specialized templates.
- **Docker build warnings become errors**: πŸ› οΈ We've made Docker builds more robust by generating errors when warnings pop up, ensuring potential issues are addressed early.
- **Add bin/dev by default**: πŸš€ A uniform way to start dev mode whether you're using jsbundling or importmaps. This makes your development process smoother and more consistent.
- **Add missing `text_area` alias in Action View FormHelper**: πŸ“‹ Now you can use `textarea` as an alias for `text_area`, making form creation even more intuitive.

### Bugfixes
- **Session tokens ought not be null**: πŸ”’ We've fixed an issue in the authentication generator to ensure session tokens are never null, improving data integrity.
- **Fix `delegate_missing_to allow_nil: true` with implicit self**: πŸ› οΈ Improved the robustness of the method, ensuring it handles cases more gracefully without relying on exceptions.
- **Fix some more Rails 7.3 references**: πŸ“… Updated deprecation warnings to reflect that certain methods will be removed in Rails 8.0, not 7.3.

### Improvements
- **Rename check_box to checkbox**: πŸ“ For better clarity and consistency, we've renamed `check_box` to `checkbox`. Don't worry, aliases are provided for backward compatibility.
- **ActiveModel human_attribute_name raises error on missing translations**: 🌐 Models will now raise errors for missing translations if `config.i18n.raise_on_missing_translations` is set to true, just like controllers and views.

### Chores
- **Get rid of unused AbstractAdapter#log method**: 🧹 Cleaned up the codebase by removing an unused method, making the ActiveRecord library more efficient.

Enjoy the new features and improvements, and happy coding! πŸ˜„


Changelog

Welcome to the latest updates! We've been busy squashing bugs and making some nifty improvements. Here's what's new:


New feature: Always discard Trilogy multi-statement results

  • Improved handling of multi-statement results in the Trilogy adapter for ActiveRecord.
  • Ensured results are discarded on the same connection used for the query, eliminating unnecessary connection management and enhancing performance. πŸš€

New feature: Always discard mysql2 multi-statement results

  • Enhanced the MySQL2 adapter to discard multi-statement results consistently.
  • Incorporated abandon_results! logic within the raw_execute method for better resource management.

New feature: Optimize ActiveRecord::QueryLogs

  • Optimized ActiveRecord::QueryLogs to significantly reduce memory allocation and improve performance.
  • Benchmarked improvements show memory usage dropping from 1440 bytes to 840 bytes and speed increasing from 521.552k to 1.070M iterations per second. πŸŽοΈπŸ’¨

Bugfix: Fix test command to exit 1 on LoadError

  • Ensured the test command exits with status code 1 on a LoadError.
  • Modified DidYouMean search to trigger only when the specific test file fails to load, improving error handling.

Bugfix: Address ApplicationTests::QueryLogsTest errors

  • Resolved NoMethodError in ApplicationTests::QueryLogsTest related to the update_formatter method.
  • Ensured the test runs successfully, improving test suite stability.

Bugfix: Fix specs for QueryLogsTest#test_sql_commenter_format

  • Addressed issues in QueryLogsTest related to SQL commenter format.
  • Ensured test specifications align with intended functionality, enhancing reliability.

Welcome to the latest update! We've got some cool new features, improvements, and bug fixes that are sure to make your development life a bit easier. Check out the details below! πŸš€

New Features

  • Basic Sessions Generator Added: πŸŽ‰ We've added a basic sessions generator to kickstart your authentication system using database-tracked sessions. This includes models, controllers, views, and migrations for creating users and sessions, along with tests to ensure everything works smoothly. Get ready for effortless user login/logout and session management!
  • Script Folder and Generator: πŸ“‚ A new default folder for one-off or general-purpose scripts has been added, along with a script generator. Now you can easily create and manage scripts for data migrations, cleanups, and more. Just run rails generate script my_script and you're good to go!

Improvements

  • Not-Null Modifier in Migrations: πŸ› οΈ We've enhanced the migration process by adding a not-null type modifier. This ensures that certain attributes cannot be null, making your data integrity stronger. Tests are included to verify this new feature.
  • Sessions Generator Enhancements: πŸ”’ Improved how the sessions generator adds bcrypt by using Thor's uncomment_lines instead of gsub_file. If bcrypt is missing, it will be added automatically, ensuring a smoother setup process.
  • Deprecate Constant Improvements: πŸ”„ Enhanced the deprecate_constant function to handle multiple definitions more gracefully. Now, the deprecation warning will only be issued once, even if the constant is defined multiple times.

Bug Fixes

  • Deprecate ActiveRecord::ImmutableRelation: πŸ› The ActiveRecord::ImmutableRelation class has been deprecated and replaced with ActiveRecord::UnmodifiableRelation. This change includes updates to methods and tests to ensure a smooth transition.
  • Markdown Table Collapse Fix: πŸ“„ Fixed an issue with the markdown table collapse in the configuring.md file. Now, the table collapses correctly, improving readability and usability.
  • Loaded Relation Batching Fix: πŸ”„ Fixed a bug with loaded relation batching when limits and reverse order are applied. This ensures that the correct records are returned in the expected order, preventing any inconsistencies.

We hope these updates make your development experience even better. Happy coding! πŸ’»βœ¨


Here's the latest and greatest from our codebase updates! πŸŽ‰ Dive in to see what’s new, what’s fixed, and what’s improved. Enjoy!


New feature

  • Upgrade devcontainer to use Ruby 3.3.4: πŸš€ We’ve upgraded the devcontainer to Ruby 3.3.4. This means you get all the latest bug fixes, security patches, and performance boosts. Happy coding with the newest Ruby features!

Bugfix

  • Make http_cache_forever use immutable: true: πŸ› οΈ We’ve updated the http_cache_forever function to use immutable: true. This ensures your cached data remains rock solid and unchangeable, improving reliability and consistency. No more sneaky data changes!

  • Fix a typo: πŸ“š Corrected a typo in the actionpack/CHANGELOG.md file. "Specificied" is now "specified". This ensures our docs are accurate, especially regarding how ETag and Last-Modified headers are handled.

  • Guides CSS to format code tags in h2 headings: ✨ Fixed some wonky formatting for code tags in h2 headings. Now, method names in h2 headings look consistent and neat, with a font-weight of 400 and a font-size of 2rem. Your reading experience just got a whole lot better!

Improvement

  • Added usage documentation for ActiveSupport::NumberHelper: πŸ“– Added new documentation for ActiveSupport::NumberHelper. Now you can easily find out how to format numbers in various ways using this handy module. The commit includes the [ci skip] tag to skip running tests for this documentation update.

  • Check If-None-Match before If-Modified-Since with strict freshness: πŸ” Updated the code to check the If-None-Match header before the If-Modified-Since header. This ensures strict freshness and prevents serving stale content. By prioritizing If-None-Match, we improve resource validation efficiency and reduce unnecessary data transfer.


That’s all for now, folks! Keep your eyes peeled for more updates and happy coding! 😎


Welcome to the latest updates! We've got some nifty improvements and essential bug fixes to share. Let's dive in! πŸš€


New feature: Optimized HashWithIndifferentAccess#to_hash

We've turbocharged the HashWithIndifferentAccess#to_hash method! πŸŽ‰ Instead of the inefficient process of starting from an empty hash and inserting keys one by one, we now directly convert the hash to an array and transform the values. This means fewer reallocations and re-hashing of keys. Plus, we've introduced a dedicated method to convert values to hashes, eliminating unnecessary checks. Benchmark tests show a significant speed boostβ€”up to 1.62x faster! πŸš€

Bugfix: Deadlock in ConnectionPool#checkout

No more deadlocks! πŸ› οΈ We've fixed a critical issue in the ConnectionPool#checkout method that caused deadlocks when multiple threads tried to access the connection pool simultaneously. By implementing a new locking mechanism, we've ensured that threads can safely check out connections without causing conflicts. Smooth sailing ahead! 🌊

Improvement: Deprecation Changelog for bin/rake stats

Out with the old, in with the new! πŸ“ We've added a deprecation changelog entry for the bin/rake stats command in favor of bin/rails stats. This update is part of our ongoing efforts to streamline and modernize our tools. Keep an eye on the changelog for more details!

Bugfix: Fixed Broken Links in Dev Containers Start Guide

Say goodbye to broken links! πŸ”— We've updated the URLs in the Dev Containers start guide from markdown to HTML format. Now you can seamlessly follow the guide and set up your Rails application in a container without any hiccups. Happy coding! πŸ’»

Improvement: Documented immutable Option in expires_in

We've added documentation for the immutable option in the expires_in method. πŸ“š When set to true, this option adds the immutable directive to the Cache-Control header, indicating that the response body won't change over time. Perfect for long-term caching! πŸ—ƒοΈ

Chore: Updated CHANGELOG.md

Routine housekeeping! 🧹 We've updated the CHANGELOG.md file to document recent changes. This update was co-authored by Petrik de Heus. Thanks, Petrik! πŸ™Œ


That's all for now! Keep those updates coming and happy coding! πŸ˜„


Hey there, fellow developers! We've got some exciting updates and fixes for you. Check out the latest changes below:

New feature

  • Support selenium-webdriver 4.22.0 πŸŽ‰: We've added support for selenium-webdriver 4.22.0, which enables Chrome DevTools Protocol (CDP) in Firefox by default. This is essential because Firefox 129 deprecates CDP. With this update, tests defining extra capabilities in Firefox and headless Firefox should now pass without a hitch.

Bugfixes

  • Devcontainer settings for mysql2 gem πŸ›: Fixed the devcontainer command to generate the correct settings for MySQL. Previously, it set an adapter name instead of the required database name, causing incorrect configurations.
  • FromAsCasing offenses in Dockerfile 🐳: Resolved casing errors in the Dockerfile, ensuring a smooth and error-free build process.
  • ActiveRecord dirty docs πŸ“š: Improved the documentation for ActiveRecord dirty, making it clearer and more accurate. Now, understanding and using the functionality to track changes to an object's attributes should be a breeze.

Improvements

  • ActionController::Base inclusions πŸš€: Made inclusions explicit instead of dynamic to enhance static analysis accuracy. This change helps tools understand the ancestors of controllers better, improving features like code completion and other editor functionalities.
  • getting_started.md updates ✍️: Updated the guide by changing single quotes to double quotes for consistency. Also, modified comments/_form.html.erb to pass the article as a local variable rather than an instance variable, improving code efficiency and organization.

Stay tuned for more updates and keep coding! πŸš€πŸ’»


Welcome to the latest updates! Here’s a roundup of the latest changes, improvements, and fixes we've made to keep things running smoothly and efficiently. πŸš€

New Features & Improvements

  • Improved Documentation for Test Transactions with Multiple Databases: We've added comprehensive documentation to guide you through using test transactions when dealing with multiple databases. This includes examples and best practices to help you navigate multi-database environments with ease. πŸ“š

  • Rewind Code Optimization: The rewind code has been moved closer to the read_body_stream method in the raw_post method of action_dispatch/http/request.rb. This makes the code more efficient by only rewinding the body stream when necessary. Additionally, we've updated the rack gem version from 3.0.11 to 3.1.3 to keep things up-to-date. βš™οΈ

  • Correct Table Name in Migration Documentation: The table name in the schema for the add_reference migration has been corrected in the Active Record Migration Documentation. This ensures accuracy and clarity, helping you avoid any confusion or errors. πŸ“

  • Removed Outdated Migration Guide: The "Migrating from Classic to Zeitwerk" guide has been removed since Rails 7 apps now require running in zeitwerk mode. All necessary information is now covered in the "Autoloading and Reloading Constants" guide. πŸ—‘οΈ

Bugfixes

  • Fixed with_connection Offences in Active Record: We've tackled issues with the with_connection method within Active Record, ensuring it operates correctly and efficiently. This fix enhances the stability and performance of Active Record, making your database interactions smoother. πŸ› οΈ

  • Restored Original alias_attribute Behavior: The alias_attribute method now correctly ignores methods defined in parent classes, restoring the behavior that existed prior to a previous update. This fix aligns alias_attribute with regular attribute definitions, resolving the issue reported in issue #52144. πŸ”§

  • Fixed Nested Exception Backtraces on Ruby Master: Adjustments have been made to handle nested exception backtraces correctly in tests on Ruby master. This fix addresses issues reported in issue #16495 and issue #20275, ensuring reliable backtrace displays. πŸ›

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


Here's a rundown of the latest and greatest updates:

### New feature
- **Define the new `start_transaction.active_record` event**: πŸš€ A brand new event that gets triggered when a transaction is started in Active Record. This includes keys for both the transaction and connection objects. Tests are included to ensure it works correctly in various scenarios, and the Active Support Instrumentation guide has been updated to reflect this new event.

### Improvement
- **Restore some `config.secret_key_base` functionality**: 🌟 We've brought back some crucial functionality that was accidentally removed. Now, `Rails.application.secret_key_base` always delegates to `config.secret_key_base`, and manually set values are validated. Plus, the `generate_local_secret` process is simplified for better clarity and efficiency.
- **Improve documentation of `RecordNotSaved` and `RecordNotDestroyed`**: πŸ“š Added examples and explanations for better understanding. Now you'll know that `RecordNotDestroyed` is triggered by throwing `:abort` in callbacks, thanks to the co-author Carlos Antonio da Silva.
- **Bring back `puma.rb` to the target of `app:update`**: πŸ”„ To make sure you don't miss out on any improvements, `puma.rb` is back in the `app:update` process. This ensures you stay updated with the latest enhancements while still allowing for custom updates.

### Bugfix
- **Correct typo for Active Record Callbacks doc**: ✏️ Fixed a typo to keep our documentation top-notch.
- **Fix a value for disabling `enqueue_after_transaction_commit`**: πŸ”§ Corrected the value type to ensure the method functions as intended. Now it expects Symbol values, not Boolean.
- **Pin `sprockets-rails` version to 3.4.2 or lower**: πŸ“Œ Due to issues with version 3.5.0, we've pinned `sprockets-rails` to 3.4.2 or lower to maintain stability until the problem is fixed.

### Chore
- **Mark TimeZone TZInfo quacking methods as :nodoc:**: πŸ“ These methods are now hidden from the documentation, keeping things clean and focused on the supported methods.

Stay tuned for more updates, and happy coding! πŸŽ‰

Here's the latest scoop on our updates and fixes! 🌟

New Features

  • Minimum in test case should be picked after conditions: We've revamped the way minimum values are picked in test cases by adding specific conditions. This ensures our tests are more accurate and reliable. πŸ› οΈ

Bugfixes

  • Parameterize table_name when constructing insert alias: Fixed a pesky syntax error that popped up when the table name included the database name. Now, the code handles this scenario smoothly without any hiccups. πŸš«πŸ”§
  • Fix a typo in Active Record and PostgreSQL guide: Corrected a typo that could cause confusion in the Active Record and PostgreSQL guide. Clear and precise documentation for the win! πŸ“šβœ¨
  • [FIX] Pluck columns should correctly cast types when using PostgreSQL: Resolved an issue where pluck columns were not correctly casting types in PostgreSQL. Now, type casting works flawlessly, even with conflicting column names. 🎯

Improvements

  • Add usage guidelines to transaction.active_record docs: Spruced up the transaction.active_record documentation by adding usage guidelines. Now, developers can easily follow best practices for using transactions in ActiveRecord. πŸ“˜πŸ’‘
  • Add ensure to reset table name in tests: Introduced an ensure block to reset the table name in tests, ensuring no lingering changes affect subsequent tests. Consistency and reliability are key! πŸ”„

That's all for now! Keep coding and stay awesome! πŸš€

Showing 1 to 20 of 26 Entries