We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
rails changelog
Hey there, code enthusiasts! We've got some exciting updates to share with you. 🚀 Our latest changes are focused on enhancing performance, improving reliability, and squashing some pesky bugs. Check out the highlights below!
Improvements
-
ActiveJob Enqueue Callbacks: We've supercharged the ActiveJob framework by deferring enqueue callbacks until after a database transaction commit when
enqueue_after_transaction_commitis enabled. This means more reliable job enqueuing and fewer headaches for developers dealing with database transactions. 🎉 -
SQLite Boolean Handling: Say goodbye to
1and0for boolean values in SQLite! We've upgraded to usingTRUEandFALSEliterals, making your database schema definitions clearer and more accurate. Plus, we've added support forDEFAULT TRUEandDEFAULT FALSEin column definitions. Boolean bliss! 🌟 -
QueryCache Privacy: We've made the executor hooks in the Active Record QueryCache private. This change keeps the internal gears of the QueryCache safe and sound, encouraging developers to stick to the public interfaces for a more robust and maintainable codebase. 🔒
Bugfixes
- Safari Launch Error: We fixed the "ERROR [launcher.sauce]: Can not start safari latest" issue in the Action Cable integration test. By switching to macOS 13 Ventura and Safari version 16, we've sidestepped the compatibility hiccup with the beta macOS Sonoma 14. Now, your tests can run smoothly without any platform drama. 🛠️
That's all for now, folks! Keep coding and stay awesome! 💻✨
Included Commits
This commit introduces a modification to the ActiveJob framework by deferring enqueue callbacks until after a database transaction commit, specifically when the enqueue_after_transaction_commit option is enabled. This change aims to enhance the reliability of job enqueuing in scenarios where database transactions are involved, ensuring that jobs are only enqueued once the transaction has been successfully committed.
By implementing this adjustment, developers can avoid potential issues related to job execution in cases where a transaction may fail, thus improving the overall integrity of the job processing system. This update streamlines the job enqueueing process and aligns it more closely with the transactional nature of database operations.
Files changed
The recent commit modifies the accessibility of the executor hooks within the Active Record QueryCache module, changing them from public to private. This adjustment is aimed at encapsulating the internal workings of the QueryCache, thereby preventing external code from directly interacting with these hooks. By making these hooks private, the commit enhances the overall integrity of the QueryCache's implementation and encourages developers to utilize the public interfaces provided by Active Record for interacting with query caching.
Additionally, this change may help improve the maintainability of the codebase by reducing the likelihood of unintended side effects caused by external modifications. It reflects a broader trend towards better encapsulation and abstraction in the framework, ensuring that internal mechanisms are shielded from external dependencies while still providing a robust public API for users.
Files changed
This commit resolves an issue encountered during the Action Cable integration test, specifically the error "ERROR [launcher.sauce]: Can not start safari latest," which was linked to an unsupported platform configuration on SauceLabs. The error message indicated that no images were found for the specified capabilities, highlighting compatibility problems with the latest Safari version on the beta macOS Sonoma 14.
To address this, the commit modifies the test setup to utilize macOS 13 Ventura instead, along with specifying Safari version 16, which is the default for that macOS version. This change ensures that the tests can run successfully without encountering platform-related errors, aligning with the current capabilities available on SauceLabs.
Files changed
This commit enhances the handling of boolean values in SQLite by ensuring that TRUE and FALSE literals are used instead of the numeric representations 1 and 0. Building on a previous update that modified the SQLite Arel visitor to adopt this convention for Arel Nodes, the current changes ensure that SQLite will now quote boolean values as TRUE and FALSE.
Additionally, this commit introduces support for DEFAULT TRUE and DEFAULT FALSE in SQLite column definitions, aligning with best practices and allowing for more accurate default value assignments when using boolean literals. This change improves the clarity and correctness of database schema definitions, particularly when developers specify default values for columns.