Skip to content

Instantly share code, notes, and snippets.

@yukideluxe
Created January 5, 2017 13:02
Show Gist options
  • Save yukideluxe/36b4092748310bc8ec020f5e4dad8ea9 to your computer and use it in GitHub Desktop.
Save yukideluxe/36b4092748310bc8ec020f5e4dad8ea9 to your computer and use it in GitHub Desktop.
activerecord bug test
begin
require "bundler/inline"
rescue LoadError => e
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler"
raise e
end
gemfile(true) do
source "https://rubygems.org"
# Activate the gem you are reporting the issue against.
gem "activerecord", "5.0.1"
gem "sqlite3"
gem "mysql2"
gem "postgresql"
end
require "active_record"
require "minitest/autorun"
require "logger"
# Ensure backward compatibility with Minitest 4
Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
# This connection will do for database-independent bug reports.
case ENV["ARCONN"]
when "mysql2"
ActiveRecord::Base.establish_connection(adapter: "mysql2", database: "activerecord_unittest")
when "postgresql"
ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "activerecord_unittest")
else
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
end
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
end
create_table :comments, force: true do |t|
t.integer :post_id
end
end
class Post < ActiveRecord::Base
after_create -> { comments.minimum(:id) }
after_touch -> { comments.minimum(:id) }
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
class BugTest < Minitest::Test
def setup
@post = Post.create
3.times do |i|
@post.comments.create
end
@post.reload
end
def test_association_stuff
other_post = Post.create(comments: @post.comments)
other_post.touch
end
end
@utilum
Copy link

utilum commented Jan 5, 2017

Replace gem "postgresql" with gem "pg"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment