Я использую приложение Rails 4.2.5 с двумя разными базами данных.Первый, назовем его db_main
, использует формат схемы sql
(потому что в этой БД есть некоторые конструкции БД, которые схема ruby
не может обработать).Я достиг этого, поместив config.active_record.schema_format = :sql
в application.rb
.
Теперь есть вторая БД, назовем ее db_other
.Эта БД имеет схему ruby, но проблема в том, что ее задачи БД ожидают схему SQL.Я определил все db
связанные задачи для этой базы данных следующим образом:
namespace :other do
task :set_custom_db_config_paths do
ENV['SCHEMA'] = 'db_other/schema.rb'
Rails.application.config.paths['db'] = ['other']
Rails.application.config.paths['db/migrate'] = ['db_other/migrate']
Rails.application.config.paths['config/database'] = ['config/database_other.yml']
end
namespace :db do
task :migrate => :set_custom_db_config_paths do
Rake::Task["db:migrate"].invoke
end
... other tasks
namespace :test do
task :prepare => :set_custom_db_config_paths do
# Tried setting ActiveRecord::Base.schema_format = :ruby here, but problem remains
Rake::Task["db:test:prepare"].invoke
end
end
end
end
При вызове rake other:test:prepare
происходит следующее
`psql: db_other / schema.rb: 135: ОШИБКА: синтаксическая ошибка в или около "#" ``
Как я могу настроить так, чтобы rake other:test:prepare
принимал схему ruby, а не схему SQL?