Hey everyone, Happy Friday! Vipul here with the latest updates for This Week in Rails. Let’s dive in.
Add a basic sessions generator
This change adds a new sessions generator to give a basic start to an authentication system using database-tracked sessions.
# Generate with... bin/rails generate session # Generated files app/models/current.rb app/models/user.rb app/models/session.rb app/controllers/sessions_controller.rb app/views/sessions/new.html.erb db/migrate/xxxxxxx_create_users.rb db/migrate/xxxxxxx_create_sessions.rb
Add script folder and generator
This Pull Request adds a new script default folder to hold one-off or general-purpose scripts, such as data migration scripts, cleanup scripts, etc.
The new script generator allows us to create such scripts:
rails generate script my_script
We can also specify a folder when generating scripts:
rails generate script cleanup/my_script
We can then run the generated scripts using:
ruby script/my_script.rb
Remove channels from default app/ structure
Now that Hotwire is the default in Rails, this change drops the channels folder from the default app/ structure. The folder still gets created when using the channel generator if needed.
Drop default permissions policy initializer
This change drops the rarely used default permissions_policy configuration files. The configuration can be added back as needed referring to the documentation of permissions_policy instead.
Add not-null modifier to migrations
This change adds a not-null modifier to migrations, which we can now specify using a ! after column types:
# Generating with... bin/rails generate migration CreateUsers email_address:string!:uniq password_digest:string! # Produces: class CreateUsers < ActiveRecord::Migration[8.0] def change create_table :users do |t| t.string :email_address, null: false t.string :password_digest, null: false t.timestamps end add_index :users, :email_address, unique: true end end
Raise specific exception when a connection is not defined
This change makes it easier to provide programmatic access to details about the requested shard/role. The new ConnectionNotDefined exception provides the connection name, shard and role accessors indicating the details of the connection that was requested.
You can view the whole list of changes here.
We had 20 contributors to the Rails codebase this past week!
Until next time!