1

我正在构建一个独立的 gem,你可以在这里查看源代码: https ://github.com/mabounassif/facebook_event_fetcher.git

使用我当前的设置,如果不先设置测试数据库,我将无法使用 FactoryGirl 进行测试。“准备”我的测试数据库的正确方法是什么?

我想到的解决方案是创建一个 db:test:prepare rake 任务。基本上,它会删除 test.sqlite3 文件(如果存在),然后创建一个新文件并使用正确的表设置迁移数据库。起初这似乎是一个干净的解决方案,但是当我运行 rake 任务时,我得到了 ActiveRecord NotConnected,而且我不得不在 Rakefile 中设置连接似乎很麻烦,尤其是我已经在 spec_helper 中完成了。 rb。它似乎重复和不干净。

谁能暗示我应该如何进行?

4

1 回答 1

0

我终于选择在 Rakefile 中再次设置 ActiveRecord 连接。这是我的最终设置,可能对那里的人有用:

https://github.com/mabounassif/facebook_event_fetcher

最有趣的部分是 rake 文件:

namespace :db do
  desc "Migrate the database through scripts in lib/generators/facebook_event_fetcher/install/templates. Target specific version with VERSION=x"
  task :prepare => :environment do
    ActiveRecord::Migration.verbose = true
    ActiveRecord::Migrator.migrate('lib/generators/facebook_event_fetcher/install/templates', nil)
  end

  task :environment do
    File.delete('db/test.sqlite3') if File.exist?('db/test.sqlite3')
    ActiveRecord::Base.establish_connection(YAML.load_file("config/database.yml"))
    ActiveRecord::Base.logger = Logger.new(File.open('db/database.log', 'a')) 
  end
end
于 2012-12-08T05:43:12.540 回答