Использование Datamapper с существующим приложением rails - PullRequest
1 голос
/ 16 декабря 2011

У меня есть приложение Rails 3, использующее ActiveRecord, и я хочу переключиться на Datamapper.Инструкции, приведенные на странице dm-rails, говорят только о создании нового приложения.Кто-нибудь знает, как отбросить все зависимости activerecord и перейти на datamapper?

Спасибо!

1 Ответ

2 голосов
/ 16 декабря 2011

Это действительно просто, но есть несколько вещей, которые вам нужно сделать.

В вашем Gemfile удалите "rails" и вместо этого потребуйте следующее.

gem 'activesupport',      RAILS_VERSION, :require => 'active_support'
gem 'actionpack',         RAILS_VERSION, :require => 'action_pack'
gem 'actionmailer',       RAILS_VERSION, :require => 'action_mailer'
gem 'railties',           RAILS_VERSION, :require => 'rails'

Где RAILS_VERSION - это версия Rails, которую вы хотите использовать (например, ~> 3.1).Это в основном все рельсы, кроме ActiveRecord.

В верхней части config / application.rb удалите требование для рельсов (я забыл, как выглядит исходный запрос) и замените его конкретными требованиями для поручнейнужно.

require "action_controller/railtie"
require "action_mailer/railtie"

Я думаю, что единственное другое - это Test :: Unit railtie, но мы не используем Test :: Unit, поэтому мы не включаем его.

Наконец, если вы хотите использовать карту идентификации (я рекомендую вам это сделать, но она не нужна), поместите в тело класса вашего ApplicationController:

use Rails::DataMapper::Middleware::IdentityMap

Это должно быть все;остальное - просто настроить ваш database.yml в соответствии с README (в любом случае он в значительной степени взаимно совместим со стандартным rails).

Для справки, взгляните на действия генератора:

-zsh$  curl http://datamapper.org/templates/rails.rb
apply 'http://datamapper.org/templates/rails/gemfile.rb'
apply 'http://datamapper.org/templates/rails/application.rb'

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

...