Ну, хорошо, тогда я просто сообщу всем, что я сделал, в надежде, что кто-то найдет это полезным.
Я решил пойти с обычными моделями рельсов с внешней базой данных, настроенной в database.yml:
# MySQL. Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
# gem install mysql
# On Mac OS X:
# sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
# On Mac OS X Leopard:
# sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql- config=/usr/local/mysql/bin/mysql_config
# This sets the ARCHFLAGS environment variable to your native architecture
# On Windows:
# gem install mysql
# Choose the win32 build.
# Install MySQL and put its /bin directory on your path.
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
adapter: mysql
encoding: utf8
reconnect: false
database: myapp_development
pool: 5
username: db_user
password: db_pass
socket: /private/tmp/mysql.sock
# 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: mysql
encoding: utf8
reconnect: false
database: myapp_test
pool: 5
username: db_user
password: db_pass
socket: /private/tmp/mysql.sock
production:
adapter: mysql
encoding: utf8
reconnect: false
database: my_app_production
pool: 5
username: db_user
password: db_pass
socket: /private/tmp/mysql.sock
## This is the external DB ##
external_app:
adapter: mysql
encoding: utf8
reconnect: false
database: external_db
pool: 5
username: db_user
password: db_pass
socket: /private/tmp/mysql.sock
Затем создать модели со стандартным генератором рельсов:
rails g model external_app_name/model_name --no-migrations
Поскольку модели находятся в существующей, не-рельсовой базе данных, я не хочу миграций, делайте что хотите здесь.
Это создает базовую пустую модель в app / models / external_app_name / model_name.rb, котораяЗатем я изменяю таким образом:
class ExernalApp::ModelName < ActiveRecord::Base
establish_connection :external_app # from database.yml
set_table_name :external_app_table_name
set_primary_key :id
end
Оттуда вы можете продолжить разработку, как если бы это была обычная модель рельсов (что, конечно, так и есть;).
Этот метод также создаствсе тесты и прочее барахло, которое создает ваш обычный генератор, чтобы вы могли просто двигаться вперед.Предположительно, вы также можете сделать это с помощью строительных лесов и т. Д., Если на то есть веская причина (не для меня, нужны только модели).
ПРИМЕЧАНИЕ:
Этотакже создает модуль в app / models / external_app.rb, который выглядит следующим образом:
module ExternalApp
def self.table_name_prefix
'external_app_'
end
end
Первоначально я установил префикс в '', но, похоже, он не оказывает никакого влияния при создании.
Я знаю, что ничего из этого не является ракетостроением или даже очень далеко от компьютерных наук, но я думаю, что это организационно-технологическая вещь, которая, как мне кажется, сделает жизнь максимально легкой и «рельсовой», насколько это возможно, во время этой части проекта.
Надеюсь, это поможет!