在 rake 任务中使用factory_girl - 获取未初始化的常量

发布于 2024-12-14 14:51:55 字数 807 浏览 4 评论 0原文

我正在尝试在这样的 rake 任务中使用 Factory Girl:

require 'factory_girl'
require File.expand_path("spec/factories.rb")

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    Factory(:user, :email => "[email protected]")
    Factory(:approved_user, :email => "[email protected]") 
  end

end

但是,当我运行 rake users:create_sample_users 时,我收到错误 uninitializedconstant Entry (Entry 是我的应用程序的课程之一)。

谁能告诉我如何让工厂女孩来看我的课程?它在我的测试中运行良好,只是在我的 rake 任务中失败了。

I'm trying to use Factory Girl in a rake task like this:

require 'factory_girl'
require File.expand_path("spec/factories.rb")

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    Factory(:user, :email => "[email protected]")
    Factory(:approved_user, :email => "[email protected]") 
  end

end

However when I run rake users:create_sample_users I get the error uninitialized constant Entry (Entry is the name of one of my app's classes).

Can anyone tell me how to get Factory girl to see my classes? It's working fine in my tests, just failing in my rake tasks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沫离伤花 2024-12-21 14:51:56

对于已替换 factory_girlfactory_bot 使用:

require 'factory_bot'

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    include FactoryBot::Syntax::Methods

    create(:user, :email => "[email protected]")
  end
end

For factory_bot which has replaced factory_girl use:

require 'factory_bot'

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    include FactoryBot::Syntax::Methods

    create(:user, :email => "[email protected]")
  end
end
此刻的回忆 2024-12-21 14:51:56

@dmcnally 的答案对我不起作用,因为我收到了未找到常量的奇怪错误。相反,我通过向 Rails runner 解决这个问题:

sh "rails runner 'FactoryGirl.create :user'"

@dmcnally's answer didn't work for me, as I was getting odd errors of constants not found. Instead, I resolved it by shelling out to rails runner:

sh "rails runner 'FactoryGirl.create :user'"
︶ ̄淡然 2024-12-21 14:51:55

我猜测 Rails 在您需要工厂时尚未加载您的模型。试试这个:

require 'factory_girl'

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    require File.expand_path("spec/factories.rb")
    Factory(:user, :email => "[email protected]")
    Factory(:approved_user, :email => "[email protected]") 
  end

end

I'm guessing that Rails hasn't loaded your models at the point you are requiring the factories. Try this:

require 'factory_girl'

namespace :users do

  desc "Create sample users for use in development" 
  task :create_sample_users => :environment do
    require File.expand_path("spec/factories.rb")
    Factory(:user, :email => "[email protected]")
    Factory(:approved_user, :email => "[email protected]") 
  end

end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文