首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >添加自定义种子文件

添加自定义种子文件
EN

Stack Overflow用户
提问于 2013-11-09 12:12:33
回答 3查看 40.7K关注 0票数 78

我想用虚拟数据填充一个新特性,但不想使用db/seeds.rb文件,因为它已经包含了与此特性无关的种子数据。

要运行默认的seeds.rb文件,可以运行命令rake db:seed

如果我在db seeds_feature_x.rb**,目录中创建了一个名为的文件,那么运行该文件(仅限)时,命令会是什么样子?**

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-09 12:34:34

首先创建一个单独的目录来保存您的自定义种子--本例使用db/seeds。然后,通过将rakefile添加到您的lib/tasks目录来创建自定义任务:

# lib/tasks/custom_seed.rake
namespace :db do
  namespace :seed do
    Dir[Rails.root.join('db', 'seeds', '*.rb')].each do |filename|
      task_name = File.basename(filename, '.rb')
      desc "Seed " + task_name + ", based on the file with the same name in `db/seeds/*.rb`"
      task task_name.to_sym => :environment do
        load(filename) if File.exist?(filename)
      end
    end
  end
end

这个rakefile接受db/seeds目录中种子文件的名称(不包括.rb扩展名),然后像运行seeds.rb一样运行它。您可以通过从命令行发出以下命令来执行rake任务:

rake db:seed:file_name # Name of the file EXCLUDING the .rb extension 

更新:现在它还应该列出运行rake --tasksrake -T时的种子任务。

票数 185
EN

Stack Overflow用户

发布于 2015-08-05 00:53:13

我尝试了zeantsoi的答案,但它没有给我想要的东西,它能处理目录中的所有文件。把它砍下来,得到了这个。

namespace :db do
  namespace :seed do
    task :single => :environment do
      filename = Dir[File.join(Rails.root, 'db', 'seeds', "#{ENV['SEED']}.seeds.rb")][0]
      puts "Seeding #{filename}..."
      load(filename) if File.exist?(filename)
    end
  end
end

要使用此功能,请执行以下操作:

rake db:seed:single SEED=<seed_name_without_.seeds.rb>

这将在Rails.root/db/seeds文件夹中查找没有.seeds.rb的文件名(它会为您添加这些文件名)。

工作示例:

rake db:seed:single SEED=my_custom_seed

上面的代码将作为Rails.root/db/seeds/my_custom_seed.seeds.rb文件的种子

票数 17
EN

Stack Overflow用户

发布于 2016-05-24 03:09:41

太复杂了!我只想要一个简单的任务来执行db/seeds目录下的每个文件,而不需要传入任何文件名。

# lib/tasks/seed.rake
desc "Run all files in db/seeds directory"

namespace :db do
  task seed: :environment do
    Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].each do |filename|
      puts "seeding - #{filename}. for reals, yo!"
      load(filename)
    end
  end
end
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19872271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档