[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文件分析工具也能帮助社区成员更深入地了解项目,从而推动项目的改进和发展。
而“更新内容.txt”则可能包含软件的更新日志或者使用说明,用户可以通过阅读这个文本文件了解软件的最新改进、修复的bug以及如何正确使用工具。 在实际使用中,用户需要注意以下几点: 1. 确保自己的QQ账号有足够...
5. **changelog.txt**:这是一个变更日志文件,记录了工具的更新历史和改进之处。 6. **bin**:这个目录可能包含了工具运行所需的其他二进制文件或库,比如动态链接库(DLLs)。 7. **docs**:这个目录很可能包含了...
1. 使用最新版本的Access,以获取最新的错误修复和性能改进。 2. 在关闭Access时,确保所有操作都已完成,避免突然断电或强制关闭软件。 3. 定期对mdb文件进行病毒扫描,防止病毒感染破坏文件。 4. 存储数据库文件在...
2. 无效文件灰色显示:当工具检测到某个文件无法正常读取或已损坏时,会将其显示为灰色,这一改进提高了用户对文件状态的识别度。这样,用户可以一眼看出哪些文件可能存在问题,避免了因使用无效文件而导致的错误或...
本篇文章将详细讲解如何将HEX文件转换为BIN文件,并介绍相关工具及其工作原理。 标题提及的“hex文件转bin文件工具”是一个专门用于将Intel HEX格式(HEX)文件转换为二进制格式(BIN)的工具。Intel HEX是一种文本...
使用场景及目标: 用户可以指定两个文本文件的路径,工具会逐行比较这两个文件的内容,找出差异之处并报告行号和具体差异内容。目标是提供一个可视化的方式来检测文件内容之间的差异,以便进行适当的处理,如修复错误...
软件开发过程改进,本内容主要是软件开发中的项目管理知识;1)引用敏捷开发管理技术;2)软件开发工具和流程改进;3)软件功能的改进方法和工具使用;
首先,这个工具非常易于使用,用户只需双击该.exe文件,即可在Windows环境下启动。界面简洁明了,操作流程清晰。第一步,用户需要通过点击“选择文件”按钮来选取需要拆分的CSV文件。确保选择的文件是CSV格式,因为...
作为开源软件,【C# 局域网文件传输工具】的源代码可供开发者研究和改进。这意味着用户和开发者可以根据自己的需求进行二次开发,添加新功能或者优化现有功能,从而满足更多样化的场景需求。同时,开源也意味着它不...
4. **使用方法**:使用 InstallShield CAB 文件解包工具通常包括打开 CAB 文件,浏览其内容,选择要解压的文件,然后指定目标解压位置。工具可能还会提供搜索功能,方便查找特定文件。 5. **版本信息**:提到的 ...
2. 使用虚拟中间目标点法:这种方法引入额外的虚拟目标点,作为从当前位置到实际目标点的过渡阶段。机器人首先被引导到达这个虚拟目标点,然后再继续向真实目标前进。这样可以避免机器人直接面对强大的斥力场,从而...
标题中的“1工具箱_改进vmd_VMD工具箱_emd、eemd_EMD_vmd_”表明这是一个关于VMD(Visual Molecular Dynamics)工具箱的更新版本,特别强调了emd(Empirical Mode Decomposition,经验模态分解)和eemd(Ensemble ...
"ostfileexporterdemo-setup.exe"很可能就是这个转换工具的安装程序,用户可以通过运行它来安装和使用工具。而"URET NFO v2.2.exe"和"URET.nfo"通常与软件的说明或信息有关,可能包含关于如何使用该工具、许可信息...
文件搜索工具是日常工作中不可或缺的助手,特别是在处理大量文件时,快速定位到所需文件能显著提高工作效率。在标题“忘记文件存放位置,就用文件搜索工具!”和描述中提到的情况,当你记不清某个文件存储的具体位置...
“rsync”是文件同步工具中一个知名的名字,它是一个广泛使用的开源工具,尤其在Linux环境中。rsync以其高效的数据传输和增量同步能力而著名,它能够仅传输文件的变化部分,而不是整个文件,从而大大节省了网络带宽...
"文件隐身工具",顾名思义,是一种用于保护个人隐私和重要数据的软件工具,其主要功能是隐藏、加密或伪装电脑中的文件和文件夹,以防止未经授权的访问。在现代社会,信息安全变得越来越重要,无论是个人用户还是企业...
"Windows上传文件到Linux的工具"这个话题恰好聚焦于如何在两种操作系统之间高效地进行文件交换。其中,FileZilla是一个备受推崇的解决方案,它是一个免费且开源的FTP(文件传输协议)客户端,支持多种协议,包括FTP...
6. **使用流程**:用户通常只需要将待处理的代码文件拖放到工具界面,或指定文件路径,然后点击“整理”按钮,即可完成整个处理过程。简单易用的界面设计是提高用户体验的关键。 7. **安全性与隐私保护**:在使用这...
.m3u8 文件是用于流媒体传输的播放列表文件,主要在互联网上用于分发音频、视频内容。这种格式由Apple公司开发,基于HTTP Live Streaming (HLS) 技术,允许内容分发网络按需提供高质量的视频流。一个.m3u8 文件通常...