Рельсы 3 загружают почтовые приспособления. Как я могу предотвратить это? - PullRequest
1 голос
/ 13 марта 2012

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

Но когда я запускаю свои модульные тесты, я замечаю, что рельсы поднимаются и выдают ошибку, потому что он пытается отбросить имена тестовой таблицы после того, как класс mailer и класс действия mailer вместе взятые ... это странно, я бы предположил, что rails будет знать лучше и игнорируйте эти приборы, которые просто используются для сравнения форматирования содержимого почтовой программы.

Документация по Rails 3 на почтовые приспособления:

10.2.1 Месть светильников

Для целей модульного тестирования почтовой программы используются приспособления для приведите пример того, как должен выглядеть результат. Потому что это примеры электронных писем, а не данных Active Record, как другие приборы, они хранятся в своем собственном подкаталоге отдельно от других устройств. Название каталога в пределах test / fixtures напрямую соответствует имя отправителя. Итак, для почтовой программы с именем UserMailer, приборы должны находиться в каталоге test / fixtures / user_mailer.

Я использую рельсы 3.0.12

Содержимое теста помощника:

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
    fixtures :all
    # Add more helper methods to be used by all tests here...
end

макет каталога моих приборов:

test/fixtures/card_sender_mailer/card_update_notificaiton.yml

Это ошибка:

ActiveRecord::StatementInvalid: Mysql2::Error: Table 'monkey_test.card_sender_mailer_card_update_notification' doesn't exist: DELETE FROM `card_sender_mailer_card_update_notification`

Я предполагаю, что, поскольку я загружаю все приборы, он также пытается загрузить это, так как мне загрузить все приборы, кроме почтовых приборов?

Обновление 1

Когда я пытаюсь загрузить приборы с граблями в терминал, я получаю похожую ошибку:

Tasks: TOP => db:fixtures:load
(See full trace by running task with --trace)
/Users/victorstan/Sites/ContactMonkey ∴ bundle exec rake db:fixtures:load 
rake aborted!
Mysql2::Error: Table 'monkey_development.card_sender_mailer_card_update_notification' doesn't exist: DELETE FROM `card_sender_mailer_card_update_notification

Ответы [ 2 ]

6 голосов
/ 13 марта 2012

Я отвечу на свой вопрос, несмотря на документацию Rails: приспособления почтовой программы должны быть файлами .txt, а не файлами .yml, если вы не хотите, чтобы они загружались в БД. Может быть, я внесу свой вклад в документацию однажды.

0 голосов
/ 27 июля 2012

Я переместил все подпапки в test / files

...