我试图通过使用不带rails gem的不同软件包(ActiveRecord,ActiveSupport)来学习Rails。
但我无法弄清楚如何使用三个类创建数据库。 这是我的rakefile:
require 'rubygems'
require 'activerecord'
require 'yaml'
task :default => :migrate
desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
end
task :environment do
ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml')))
ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'a'))
end
我有三个文件:
001_create_appearances.rb 001_create_movies.rb 001_create_actors.rb
我过去都成功运行过,每一个都只是从ActiveRecord :: Migration继承并执行self.up / self.down。
但是,我有问题,当我运行rake时,它会返回“多次迁移的版本号为1”。我应该将所有迁移打包到一个文件中,例如001_create_database.rb吗?
是否有某个手册描述了这些版本的工作原理?
我尝试过阅读migrator.rb的源代码,但无法找到up_without_benchmarks / down_without_benchmarks所在的位置。
答案 0 :(得分:3)
右。迁移必须以唯一编号开头,以便您希望执行它们。默认情况下,在rails 2.x中,此数字将表示当前日期和时间。
这样做的原因是允许开发人员轻松运行和撤消迁移。如果两个开发人员同时创建一个新的迁移(这会导致他们在推送到版本控制系统时具有相同的编号),则使用时间戳而不是顺序整数。