[PS: javaeye上的评论好像不能提交,只好另写一篇了]
昨天写的小工具需要把database.yml改来改去的,不能自动化,今天上午搞了一把,直接建立两个数据库连接,然后数据库对数据库copy
使用时将旧的数据库配置文件复制为 old_database.yml ,配置好新的 database.yml 就可以提交代码了,服务器上更新一下,然后运行 rake data:copy 就ok了
namespace :data do
desc "copy data from old database"
task :copy => 'db:migrate' do
config = YAML::load(ERB.new(IO.read('config/old_database.yml')).result)
$spec = config[Rails.env].inject({}) do |hash, value|
hash.update value[0].to_sym => value[1]
end
(ActiveRecord::Base.connection.tables - ["schema_migrations"]).each {|t|
Rails.logger.info "copy #{t}"
new_clazz, old_clazz = prepare_class t
old_clazz.all.each{|o|
new_o = new_clazz.new(o.attributes)
new_o.id = o.id
new_o.save!
}
}
end
private
def prepare_class table_name
class_name = table_name.camelize.singularize
eval %Q[
class #{class_name}Old < ActiveRecord::Base
establish_connection $spec
set_table_name '#{table_name}'
end
]
Object.send :remove_const, class_name rescue nil
eval("class #{class_name} < ActiveRecord::Base; end")
[class_name.constantize, "#{class_name}Old".constantize]
end
end
分享到:
相关推荐
Map文件在软件开发中起着至关重要的作用,尤其是在调试和优化程序时。它记录了编译器和链接器在生成可执行文件或库...对于开源软件项目,Map文件分析工具也能帮助社区成员更深入地了解项目,从而推动项目的改进和发展。
**FREEBSD 文件系统详解** FREEBSD 是一个基于UNIX的开源操作系统,其强大的稳定性和灵活性吸引了大量的...通过使用专业的文件系统浏览工具,如UFS Explorer,可以在数据丢失或系统故障时,有效地保护和恢复重要数据。
在使用通用的文件比较工具如Beyond Compare进行ini文件对比时,可能会遇到一些挑战。由于ini文件的结构特性,当section或item的位置发生变化,通用工具可能无法准确识别这些变化,导致比较结果不直观或者误导用户。...
而“更新内容.txt”则可能包含软件的更新日志或者使用说明,用户可以通过阅读这个文本文件了解软件的最新改进、修复的bug以及如何正确使用工具。 在实际使用中,用户需要注意以下几点: 1. 确保自己的QQ账号有足够...
1. 使用最新版本的Access,以获取最新的错误修复和性能改进。 2. 在关闭Access时,确保所有操作都已完成,避免突然断电或强制关闭软件。 3. 定期对mdb文件进行病毒扫描,防止病毒感染破坏文件。 4. 存储数据库文件在...
2. 无效文件灰色显示:当工具检测到某个文件无法正常读取或已损坏时,会将其显示为灰色,这一改进提高了用户对文件状态的识别度。这样,用户可以一眼看出哪些文件可能存在问题,避免了因使用无效文件而导致的错误或...
本篇文章将详细讲解如何将HEX文件转换为BIN文件,并介绍相关工具及其工作原理。 标题提及的“hex文件转bin文件工具”是一个专门用于将Intel HEX格式(HEX)文件转换为二进制格式(BIN)的工具。Intel HEX是一种文本...
使用场景及目标: 用户可以指定两个文本文件的路径,工具会逐行比较这两个文件的内容,找出差异之处并报告行号和具体差异内容。目标是提供一个可视化的方式来检测文件内容之间的差异,以便进行适当的处理,如修复错误...
软件开发过程改进,本内容主要是软件开发中的项目管理知识;1)引用敏捷开发管理技术;2)软件开发工具和流程改进;3)软件功能的改进方法和工具使用;
在压缩包中的“hex合并-百度手环开源”文件,可能是这个工具的源代码或者是关于如何使用这个工具的示例或文档。开源意味着社区可以查看、学习甚至修改源代码,这对于开发者来说是非常宝贵的资源,他们可以根据自己的...
首先,这个工具非常易于使用,用户只需双击该.exe文件,即可在Windows环境下启动。界面简洁明了,操作流程清晰。第一步,用户需要通过点击“选择文件”按钮来选取需要拆分的CSV文件。确保选择的文件是CSV格式,因为...
作为开源软件,【C# 局域网文件传输工具】的源代码可供开发者研究和改进。这意味着用户和开发者可以根据自己的需求进行二次开发,添加新功能或者优化现有功能,从而满足更多样化的场景需求。同时,开源也意味着它不...
本文将详细介绍这些独立工具的功能及其在实际使用中的价值。 首先,我们来看"360加速球",它是一个小巧的系统监控和优化工具。360加速球能够实时显示电脑的CPU和内存占用情况,帮助用户了解系统运行状态。它还能...
标题提到的“关键词分词工具(宏命令) 改进版”是一个专为竞价员设计的工具,利用宏命令进行优化,提升了其功能和效率。 首先,我们要理解什么是分词。在中文处理中,分词是将连续的汉字序列切分成具有实际语义的词...
在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后AndroidManifestConver.exe c:\src.xml c:\dest.xml(前者是原文,后者是解密后的文件)。如果需要解密的xml文件较多,这个办法...
2. 使用虚拟中间目标点法:这种方法引入额外的虚拟目标点,作为从当前位置到实际目标点的过渡阶段。机器人首先被引导到达这个虚拟目标点,然后再继续向真实目标前进。这样可以避免机器人直接面对强大的斥力场,从而...
"ostfileexporterdemo-setup.exe"很可能就是这个转换工具的安装程序,用户可以通过运行它来安装和使用工具。而"URET NFO v2.2.exe"和"URET.nfo"通常与软件的说明或信息有关,可能包含关于如何使用该工具、许可信息...
文件搜索工具是日常工作中不可或缺的助手,特别是在处理大量文件时,快速定位到所需文件能显著提高工作效率。在标题“忘记文件存放位置,就用文件搜索工具!”和描述中提到的情况,当你记不清某个文件存储的具体位置...
我们欢迎所有用户反馈问题和建议,以帮助我们持续改进这个工具。如果你在使用过程中遇到任何问题,或者有新的功能需求,都请随时向我们提出,共同推动StarUML的发展。在这个开源社区中,每一个用户的参与都是我们...
"文件隐身工具",顾名思义,是一种用于保护个人隐私和重要数据的软件工具,其主要功能是隐藏、加密或伪装电脑中的文件和文件夹,以防止未经授权的访问。在现代社会,信息安全变得越来越重要,无论是个人用户还是企业...