Alexey Patrushin的Mongo_Mapper_Ext gem ...如何创建迁移?

时间:2012-02-19 02:39:31

标签: ruby-on-rails mongodb mongomapper rails-migrations

我想为MongoDB运行数据转换/迁移。我在stackoverflow上找到了mongo_mapper_ext gem,但我想我对迁移这么新,我不知道如何使用它。

My Rails应用程序部署在heroku上。所以我认为一旦我编写了迁移并将其推送到heroku,我应该能够运行heroku rake:db migrate。这是正确的,还是应该在应用程序初始化程序中运行迁移?

当我编写迁移本身时,该文件在我的app目录中的哪个位置?

https://github.com/alexeypetrushin/mongo_mapper_ext

任何有关最佳方法的建议都会非常有帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

如果查看mongo_mapper_ext的rake任务,看起来你会将迁移文件放在rails应用程序下的db目录中。

namespace :db do
  desc "Migrate Database"
  task migrate: :environment do
    ::Migration = MongoMapper::Migration
    Dir["#{rad.config.runtime_dir!}/db/**/*.rb"].each{|f| require f.sub(/\.rb$/, '')}

    database_alias = ENV['d'] || ENV['database']
    database_alias = 'default' if database_alias.blank?

    version = ENV['v'] || ENV['version']
    if version.blank?
      size = MongoMapper::Migration.definitions[database_alias].size
      highest_defined_version = size == 0 ? 0 : size - 1      
      version = highest_defined_version
    else
      version = version.to_i
    end

    MongoMapper::Migration.update database_alias, version
  end
end