Created
May 31, 2016 20:36
-
-
Save nachokb/fe442d175d5a3e47cf8dc86f0ac2fb35 to your computer and use it in GitHub Desktop.
Test for AR5's OR feature (https://www.reddit.com/r/ruby/comments/4ltroo/rails_5_adds_or_support_in_active_record/)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# rubocop:disable Style/DotPosition | |
# rubocop:disable Style/GlobalVars | |
# test Rails 5's ActiveRecord OR | |
system 'rm Gemfile' if File.exist?('Gemfile') | |
$ar_version = ENV['AR_VERSION'] | |
$ar_version ||= '5.0.0.rc1' | |
$try_patch = ENV['TRY_PATCH'] == 'true' | |
$enable_byebug = false | |
File.write('Gemfile', <<-GEMFILE) | |
source 'https://rubygems.org' | |
gem 'activerecord', | |
#{$ar_version.inspect} | |
gem 'sqlite3' | |
#{"gem 'byebug'" if $enable_byebug} | |
GEMFILE | |
system 'bundle install' | |
require 'byebug' if $enable_byebug | |
require 'bundler' | |
Bundler.setup(:default) | |
require 'active_record' | |
require 'minitest/autorun' | |
require 'logger' | |
# This connection will do for database-independent bug reports. | |
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:' | |
ActiveRecord::Base.logger = Logger.new(STDOUT) | |
ActiveRecord::Schema.define do | |
create_table :companies do |t| | |
t.string :name | |
t.datetime :created_at | |
t.integer :employees_count | |
end | |
end | |
class Company < ActiveRecord::Base | |
end | |
puts Company. | |
where(name: 'ACME'). | |
to_sql | |
# SELECT "companies".* | |
# FROM "companies" | |
# WHERE "companies"."name" = 'ACME' | |
puts Company. | |
where(name: 'ACME'). | |
or(Company.where('employees_count > ?', 10)). | |
to_sql | |
# SELECT "companies".* | |
# FROM "companies" | |
# WHERE ("companies"."name" = 'ACME' OR (employees_count > 10)) | |
puts Company. | |
where(name: 'ACME'). | |
or(Company.where('employees_count > ?', 10)). | |
where('created_at > ?', 1.year.ago). | |
to_sql | |
# SELECT "companies".* | |
# FROM "companies" | |
# WHERE ("companies"."name" = 'ACME' OR (employees_count > 10)) | |
# AND (created_at > '2015-05-31 20:25:08.996444') | |
puts Company. | |
where(name: 'ACME'). | |
where('created_at > ?', 1.year.ago). | |
or(Company.where('employees_count > ?', 10)). | |
to_sql | |
# SELECT "companies".* | |
# FROM "companies" | |
# WHERE ("companies"."name" = 'ACME' AND (created_at > '2015-05-31 20:25') | |
# OR (employees_count > 10)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment