From baa660f62b4fae9197d7b4b6e4bbcf4059d106a8 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 2 Dec 2010 14:01:08 -0800 Subject: deprecating "insert" --- History.txt | 5 +++++ lib/arel/crud.rb | 16 +++++++++++++--- lib/arel/table.rb | 4 ++++ test/helper.rb | 2 +- test/test_table.rb | 12 ++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/History.txt b/History.txt index b77563e0b5..e794edb132 100644 --- a/History.txt +++ b/History.txt @@ -4,6 +4,11 @@ * AST is now Enumerable +* Deprecations + + * Calls to `insert` are deprecated. Please use `compile_insert` then call + `to_sql` on the resulting object and execute that SQL. + == 2.0.6 12/01/2010 * Bug Fixes diff --git a/lib/arel/crud.rb b/lib/arel/crud.rb index b3199e6d38..8de008c09e 100644 --- a/lib/arel/crud.rb +++ b/lib/arel/crud.rb @@ -20,11 +20,21 @@ module Arel @engine.connection.update um.to_sql, 'AREL' end - # FIXME: this method should go away - def insert values + def compile_insert values im = InsertManager.new @engine im.insert values - @engine.connection.insert im.to_sql + im + end + + # FIXME: this method should go away + def insert values + if $VERBOSE + warn <<-eowarn +insert (#{caller.first}) is deprecated and will be removed in ARel 2.2.0. Please +switch to `compile_insert` + eowarn + end + @engine.connection.insert compile_insert(values).to_sql end def delete diff --git a/lib/arel/table.rb b/lib/arel/table.rb index aa23a7d601..ca811debee 100644 --- a/lib/arel/table.rb +++ b/lib/arel/table.rb @@ -108,6 +108,10 @@ module Arel SelectManager.new(@engine) end + def insert_manager + InsertManager.new(@engine) + end + private def attributes_for columns diff --git a/test/helper.rb b/test/helper.rb index 3f9ac22447..f13596f9ec 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -8,6 +8,6 @@ Arel::Table.engine = Arel::Sql::Engine.new(FakeRecord::Base.new) class Object def must_be_like other - self.gsub(/\s+/, ' ').strip.must_equal other.gsub(/\s+/, ' ').strip + gsub(/\s+/, ' ').strip.must_equal other.gsub(/\s+/, ' ').strip end end diff --git a/test/test_table.rb b/test/test_table.rb index 8d37a8eaff..b9998174a1 100644 --- a/test/test_table.rb +++ b/test/test_table.rb @@ -6,6 +6,18 @@ module Arel @relation = Table.new(:users) end + it 'should return an insert manager' do + im = @relation.compile_insert 'VALUES(NULL)' + assert_kind_of Arel::InsertManager, im + assert_equal 'INSERT INTO NULL VALUES(NULL)', im.to_sql + end + + it 'should return IM from insert_manager' do + im = @relation.insert_manager + assert_kind_of Arel::InsertManager, im + assert_equal im.engine, @relation.engine + end + describe 'skip' do it 'should add an offset' do sm = @relation.skip 2 -- cgit v1.2.3