База данных фабрикантов по спасению для развития (вопрос охраны) - PullRequest
0 голосов
/ 27 января 2012

Я на Rails 3.2 , и мой gemfile настроен так:

# Testing Gems
gem "factory_girl_rails", :group => :test

group :development, :test do
  gem "capybara"
  gem "rspec-rails"
  gem "guard-rspec"
  gem "ruby_gntp", :require => false
  gem "addressable"
  gem "launchy"
end

Однако Factory Girl настаивает на сохранении записей тестирования в моей базе данных разработки, а не в базе данных тестирования. Обратите внимание, что я использую Guard для запуска тестов через оболочку.

Вот что у меня в database.yml:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

Я знаю, что мой вопрос похож на этот: Фабричная девушка, сохраняющая записи в моей базе данных разработки , но я делаю все, что он делал, и он все еще не работает для меня.

Я также запустил bundle update, bundle install, bundle install --without test и затем bundle install снова. Сначала я думал, что это проблема Gemfile.lock, но все, что я делаю для обновления, не имеет никакого эффекта.

У кого-нибудь есть идеи?

Обновление

Все мои фабрики используют базу данных development.sqlite3, но вот пример:

FactoryGirl.define do
    factory :saddle, :class => Saddle do
        name            "Carlton"
        saddle_category_id  2
        description     "This is a saddle description"
        details         "Saddle details will go here!"
        best_uses       "List of best uses should go here."
        price           3025.00
    end
end

Тестовый код, который сохраняется в моей базе данных, просто saddle = Factory(:saddle).

Ответы [ 3 ]

1 голос
/ 27 января 2012

У вас та же проблема.Посмотрите на свой Gemfile:

group :development, :test do

Он также загружает все эти драгоценные камни для :test.Удалите эту часть, и все будет хорошо.

0 голосов
/ 25 июня 2014

Как я вижу, у вас есть ответ здесь .И проблема была в использовании == вместо =.

Я только что столкнулся с подобной проблемой (Rspec 3).Как вы знаете, внутри есть файл spec/rails_helper.rb и строка ENV["RAILS_ENV"] ||= 'test'.Сначала я подумал, что оно уже установлено с неправильным значением, и попытался заменить его на ENV["RAILS_ENV"] = 'test', но это мне не помогло.

Затем я переместил эту строку в spec/spec_helper.rb, и она работает правильно.Я пока не могу объяснить это поведение, но оно работает.

0 голосов
/ 27 января 2012

Вы пытались определить RAILS_ENV в командной строке:

rake test RAILS_ENV=test
...