【问题标题】:Using factory_girl within a rake task - getting uninitialized constant在 rake 任务中使用 factory_girl - 获取未初始化的常量
【发布时间】:2011-11-10 17:08:18
【问题描述】:

我正在尝试在这样的 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 => "pending@acme.com")
    Factory(:approved_user, :email => "user@acme.com") 
  end

end

但是,当我运行 rake users:create_sample_users 时,我收到错误 uninitialized constant Entry(条目是我的应用程序类之一的名称)。

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

【问题讨论】:

    标签: ruby-on-rails rake factory factory-bot


    【解决方案1】:

    我猜 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 => "pending@acme.com")
        Factory(:approved_user, :email => "user@acme.com") 
      end
    
    end
    

    【讨论】:

    • 谢谢 - 已经整理好了!作为奖励,你知道我可以把require File.expand_path("spec/factories.rb")放在哪里,这样我就不必在每项任务中都包含它了吗?再次感谢。
    【解决方案2】:

    对于已替换 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 => "pending@acme.com")
      end
    end
    

    【讨论】:

      【解决方案3】:

      @dmcnally 的回答对我不起作用,因为我遇到了未找到常量的奇怪错误。相反,我通过向 rails runner 发起攻击来解决它:

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

      【讨论】:

        猜你喜欢
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 1970-01-01
        相关资源
        最近更新 更多