【问题标题】:Mongo_Mapper_Ext gem by Alexey Patrushin... how to create a migration?Alexey Patrushin 的 Mongo_Mapper_Ext gem...如何创建迁移?
【发布时间】:2012-02-19 02:39:30
【问题描述】:
我想为 MongoDB 运行数据转换/迁移。我在 stackoverflow 上找到了 mongo_mapper_ext gem,但我想我对迁移很陌生,所以我不知道如何使用它。
我的 Rails 应用部署在 heroku 上。所以我认为一旦我编写了迁移并将其推送到 heroku,我应该能够运行 heroku rake:db migrate。这是正确的,还是应该在应用程序初始化程序中运行迁移?
当我编写迁移本身时,该文件在我的应用程序目录中的什么位置?
https://github.com/alexeypetrushin/mongo_mapper_ext
任何关于最佳方式的建议都会很有帮助。谢谢!
【问题讨论】:
标签:
ruby-on-rails
mongodb
mongomapper
rails-migrations
【解决方案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