aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-12-02 14:01:08 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-12-02 14:01:08 -0800
commitbaa660f62b4fae9197d7b4b6e4bbcf4059d106a8 (patch)
tree9757fa9803cd4035450f2efe1196cfa8afd4f875
parent39ccb8049c87b1fde1b85c6a0d84e0f72e92bac1 (diff)
downloadrails-baa660f62b4fae9197d7b4b6e4bbcf4059d106a8.tar.gz
rails-baa660f62b4fae9197d7b4b6e4bbcf4059d106a8.tar.bz2
rails-baa660f62b4fae9197d7b4b6e4bbcf4059d106a8.zip
deprecating "insert"
-rw-r--r--History.txt5
-rw-r--r--lib/arel/crud.rb16
-rw-r--r--lib/arel/table.rb4
-rw-r--r--test/helper.rb2
-rw-r--r--test/test_table.rb12
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