Я пытаюсь настроить Rails (v3.2.2) для использования нескольких баз данных. Я делаю это на основе этого Connecting Rails 3.1 with Multiple Databases.Rails: указание другой базы данных в модели
Моя модель:
class Category < ActiveRecord::Base
establish_connection :category_database
self.primary_key = "cat_id"
validates_presence_of :name, :display_name, :description, :icon, :image, :parent_category_id, :create_time
end
database.yml:
category_database:
adapter: mysql2
encoding: utf8
reconnect: false
database: main_cat
pool: 5
username: root
password: blah
socket: /var/run/mysqld/mysqld.sock
Когда я запускаю этот файл спецификации:
require 'spec_helper'
describe Category do
puts "ENV: #{Rails.env}"
it { should validate_presence_of :name }
it { should validate_presence_of :display_name }
it { should validate_presence_of :description }
it { should validate_presence_of :icon }
it { should validate_presence_of :image }
it { should validate_presence_of :parent_category_id }
it { should validate_presence_of :create_time }
end
так:
>rspec /path/to/category_spec.rb
я получаю:
/home/user/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
Я также попытался установить establish_connection так:
establish_connection(
:adapter => "mysql2",
:encoding => "utf8",
:reconnect => false,
:database => "main_cat",
:pool => 5,
:username => "root",
:password => "blah",
:socket => "/var/run/mysqld/mysqld.sock")
, что приводит к тем же исключением. (AdapterNotSpecified)
Что странно, что если я вообще отказаться от establish_connection и применить ту же самую конфигурацию соединения через database.yml файл, как это:
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: main_cat
pool: 5
username: root
password: blah
socket: /var/run/mysqld/mysqld.sock
это работает.
Кажется, что Rails игнорирует установление_соединения вообще ... Я не хватает какой-либо настройки конфигурации на уровне приложения или что-то в этом роде? Как мне получить Rails для распознавания connection_connection, чтобы я мог размещать разные модели в разных базах данных?
Большое спасибо!