aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/migration
diff options
context:
space:
mode:
authoryui-knk <spiketeika@gmail.com>2016-03-28 00:49:43 +0900
committerJeremy Daer <jeremydaer@gmail.com>2016-04-29 15:10:03 -0700
commit7fc4979d4dab63591dcbf75367c496cbfa2881ce (patch)
treeacbf4d9137bd73b87dc90e844f12d497824dd085 /activerecord/lib/active_record/migration
parentbbb84a17213d60f25a61ae4a09111d5adac01a05 (diff)
downloadrails-7fc4979d4dab63591dcbf75367c496cbfa2881ce.tar.gz
rails-7fc4979d4dab63591dcbf75367c496cbfa2881ce.tar.bz2
rails-7fc4979d4dab63591dcbf75367c496cbfa2881ce.zip
Migrations: move version-finding responsibility
`ActiveRecord::Migration` needn't know about migration version compatibility lookup. Delegate it to the Compatibility module. Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
Diffstat (limited to 'activerecord/lib/active_record/migration')
-rw-r--r--activerecord/lib/active_record/migration/compatibility.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/migration/compatibility.rb b/activerecord/lib/active_record/migration/compatibility.rb
index a20d7e0820..69bd9ff1cf 100644
--- a/activerecord/lib/active_record/migration/compatibility.rb
+++ b/activerecord/lib/active_record/migration/compatibility.rb
@@ -1,6 +1,16 @@
module ActiveRecord
class Migration
module Compatibility # :nodoc: all
+ def self.find(version)
+ version = version.to_s
+ name = "V#{version.tr('.', '_')}"
+ unless const_defined?(name)
+ versions = constants.grep(/\AV[0-9_]+\z/).map { |s| s.to_s.delete('V').tr('_', '.').inspect }
+ raise ArgumentError, "Unknown migration version #{version.inspect}; expected one of #{versions.sort.join(', ')}"
+ end
+ const_get(name)
+ end
+
V5_0 = Current
module FourTwoShared