是否有一种简单的方法让rails操作加载外部命令文件然后执行它们?
例如,我正在尝试编写一堆rails创建方法来预先填充数据库中的一堆表。
理想情况下,我希望检查文件是否存在的操作,如果存在,则运行所有命令,然后删除该文件,使其不再执行。
因此,外部文件基本上如下所示:
MyTable.create :name => "New 1"
MyTable.create :name => "New 2"
在rails中这很容易实现吗?
一些细化:
这个想法是,如果某个设置表需要在发布后进行修改,并且您无法通过迁移脚本(即从schema.rb文件初始化数据库)这样做你可以:
这有帮助吗?它将是一个需要在发布后执行的一次性操作的文件。如果有更好的方法,我肯定都是耳朵!
答案 0 :(得分:2)
另一种选择是耙。你可以在lib / tasks中创建一个新文件 - 我们称之为你的bootstrap.rake
namespace :db do
desc 'Load an initial set of data'
task :bootstrap => :environment do
if your_file_exists
puts 'Loading data...'
this_is_where_the_magic_happens
end
end
end
然后从控制台你可以运行rake db:bootstrap并根据需要使用crontab进行安排。
答案 1 :(得分:1)
对于第4步:
load("update_data.rb")
我相信这会加载并执行你的脚本。
答案 2 :(得分:0)