1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

PERF: removing many splats

This commit is contained in:
Aaron Patterson 2010-07-29 12:01:08 -07:00
parent 26ed429976
commit 068b184a59
12 changed files with 30 additions and 32 deletions

View file

@ -2,7 +2,7 @@ module Arel
class Group < Compound
attr_reader :groupings
def initialize(relation, *groupings)
def initialize(relation, groupings)
super(relation)
@groupings = groupings.collect { |g| g.bind(relation) }
end

View file

@ -2,7 +2,7 @@ module Arel
class Having < Compound
attr_reader :predicates
def initialize(relation, *predicates)
def initialize(relation, predicates)
super(relation)
@predicates = predicates.map { |p| p.bind(relation) }
end

View file

@ -2,7 +2,7 @@ module Arel
class Order < Compound
attr_reader :orderings
def initialize(relation, *orderings)
def initialize(relation, orderings)
super(relation)
@orderings = orderings.collect { |o| o.bind(relation) }
end

View file

@ -2,7 +2,7 @@ module Arel
class Project < Compound
attr_reader :projections, :attributes
def initialize(relation, *projections)
def initialize(relation, projections)
super(relation)
@projections = projections.map { |p| p.bind(relation) }
@attributes = Header.new(projections.map { |x| x.bind(self) })

View file

@ -2,7 +2,7 @@ module Arel
class Where < Compound
attr_reader :predicates
def initialize(relation, *predicates)
def initialize(relation, predicates)
super(relation)
@predicates = predicates.map { |p| p.bind(relation) }
@wheres = nil

View file

@ -116,19 +116,17 @@ module Arel
end
%w{
where order skip group having
}.each do |operation_name|
having group order where project
}.each do |op|
class_eval <<-OPERATION, __FILE__, __LINE__
def #{operation_name}(*arguments)
arguments.all? { |x| x.blank? } ?
self : #{operation_name.capitalize}.new(self, *arguments)
def #{op}(*args)
args.all? { |x| x.blank? } ? self : #{op.capitalize}.new(self, args)
end
OPERATION
end
def project *args
return self if args.all? { |x| x.blank? }
Project.new self, *args
def skip thing = nil
thing ? Skip.new(self, thing) : self
end
def take thing

View file

@ -9,7 +9,7 @@ module Arel
describe '#attributes' do
before do
@projection = Project.new(@relation, @attribute)
@projection = Project.new(@relation, [@attribute])
end
it "manufactures attributes associated with the projection relation" do
@ -20,13 +20,13 @@ module Arel
describe '#externalizable?' do
describe 'when the projections are attributes' do
it 'returns false' do
Project.new(@relation, @attribute).should_not be_externalizable
Project.new(@relation, [@attribute]).should_not be_externalizable
end
end
describe 'when the projections include an aggregation' do
it "obtains" do
Project.new(@relation, @attribute.sum).should be_externalizable
Project.new(@relation, [@attribute.sum]).should be_externalizable
end
end
end

View file

@ -97,11 +97,11 @@ module Arel
end
it "manufactures a where relation" do
@relation.where(@predicate).should == Where.new(@relation, @predicate)
@relation.where(@predicate).should == Where.new(@relation, [@predicate])
end
it "accepts arbitrary strings" do
@relation.where("arbitrary").should == Where.new(@relation, "arbitrary")
@relation.where("arbitrary").should == Where.new(@relation, ["arbitrary"])
end
describe 'when given a blank predicate' do
@ -113,7 +113,7 @@ module Arel
describe '#order' do
it "manufactures an order relation" do
@relation.order(@attribute1, @attribute2).should == Order.new(@relation, @attribute1, @attribute2)
@relation.order(@attribute1, @attribute2).should == Order.new(@relation, [@attribute1, @attribute2])
end
describe 'when given a blank ordering' do
@ -149,7 +149,7 @@ module Arel
describe '#group' do
it 'manufactures a group relation' do
@relation.group(@attribute1, @attribute2).should == Group.new(@relation, @attribute1, @attribute2)
@relation.group(@attribute1, @attribute2).should == Group.new(@relation, [@attribute1, @attribute2])
end
describe 'when given blank groupings' do

View file

@ -10,7 +10,7 @@ module Arel
describe '#to_sql' do
describe 'when given a predicate' do
it "manufactures sql with where clause conditions" do
sql = Group.new(@relation, @attribute).to_sql
sql = Group.new(@relation, [@attribute]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -40,7 +40,7 @@ module Arel
describe 'when given a string' do
it "passes the string through to the where clause" do
sql = Group.new(@relation, 'asdf').to_sql
sql = Group.new(@relation, ['asdf']).to_sql
adapter_is :mysql do
sql.should be_like(%Q{

View file

@ -10,7 +10,7 @@ module Arel
describe '#to_sql' do
describe "when given an attribute" do
it "manufactures sql with an order clause populated by the attribute" do
sql = Order.new(@relation, @attribute).to_sql
sql = Order.new(@relation, [@attribute]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -60,7 +60,7 @@ module Arel
end
it "manufactures sql with an order clause populated by comma-separated attributes" do
sql = Order.new(@relation, @attribute, @another_attribute).to_sql
sql = Order.new(@relation, [@attribute, @another_attribute]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -94,7 +94,7 @@ module Arel
end
it "passes the string through to the order clause" do
sql = Order.new(@relation, @string).to_sql
sql = Order.new(@relation, [@string]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -124,12 +124,12 @@ module Arel
describe "when ordering an ordered relation" do
before do
@ordered_relation = Order.new(@relation, @attribute)
@ordered_relation = Order.new(@relation, [@attribute])
@another_attribute = @relation[:name]
end
it "manufactures sql with the order clause of the last ordering preceding the first ordering" do
sql = Order.new(@ordered_relation, @another_attribute).to_sql
sql = Order.new(@ordered_relation, [@another_attribute]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{

View file

@ -10,7 +10,7 @@ module Arel
describe '#to_sql' do
describe 'when given an attribute' do
it "manufactures sql with a limited select clause" do
sql = Project.new(@relation, @attribute).to_sql
sql = Project.new(@relation, [@attribute]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -37,11 +37,11 @@ module Arel
describe 'when given a relation' do
before do
@scalar_relation = Project.new(@relation, @relation[:name])
@scalar_relation = Project.new(@relation, [@relation[:name]])
end
it "manufactures sql with scalar selects" do
sql = Project.new(@relation, @scalar_relation).to_sql
sql = Project.new(@relation, [@scalar_relation]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{
@ -65,7 +65,7 @@ module Arel
describe 'when given a string' do
it "passes the string through to the select clause" do
sql = Project.new(@relation, 'asdf').to_sql
sql = Project.new(@relation, ['asdf']).to_sql
adapter_is :mysql do
sql.should be_like(%Q{

View file

@ -10,7 +10,7 @@ module Arel
describe '#to_sql' do
describe 'when given a predicate' do
it "manufactures sql with where clause conditions" do
sql = Where.new(@relation, @predicate).to_sql
sql = Where.new(@relation, [@predicate]).to_sql
adapter_is :mysql do
sql.should be_like(%Q{