Skip to content

Instantly share code, notes, and snippets.

@qichunren
Created April 8, 2025 07:20
Show Gist options
  • Save qichunren/b58cb4e8fd6b0ee94a575fd9023ef574 to your computer and use it in GitHub Desktop.
Save qichunren/b58cb4e8fd6b0ee94a575fd9023ef574 to your computer and use it in GitHub Desktop.
Rails bug report template
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem "rails", "~> 8.0.0"
# If you want to test against edge Rails replace the previous line with this:
# gem "rails", github: "rails/rails", branch: "main"
gem "sqlite3", ">= 2.1"
end
require "active_record/railtie"
require "minitest/autorun"
# This connection will do for database-independent bug reports.
ENV["DATABASE_URL"] = "sqlite3::memory:"
class TestApp < Rails::Application
config.load_defaults Rails::VERSION::STRING.to_f
config.eager_load = false
config.logger = Logger.new($stdout)
config.secret_key_base = "secret_key_base"
config.active_record.encryption.primary_key = "primary_key"
config.active_record.encryption.deterministic_key = "deterministic_key"
config.active_record.encryption.key_derivation_salt = "key_derivation_salt"
end
Rails.application.initialize!
ActiveRecord::Schema.define do
create_table "members", force: :cascade do |t|
t.integer "user_id", null: false
t.string "points", null: false, default: 0
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_members_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "email_address", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email_address"], name: "index_users_on_email_address", unique: true
end
add_foreign_key "members", "users"
end
class User < ActiveRecord::Base
has_one :member, dependent: :destroy
after_create :create_one_member
private
def create_one_member
self.create_member!(points: 100)
end
end
class Member < ActiveRecord::Base
belongs_to :user
end
User.create!(email_address: "[email protected]")
class BugTest < ActiveSupport::TestCase
def test_destroy_dependent
puts "User.count: #{User.count}, Member.count: #{Member.count}"
User.destroy_all
puts "User.count: #{User.count}, Member.count: #{Member.count}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment