0

DataMapper を使用している Rails アプリケーションがあります。ActiveRecordを使用するように変換しようとしています。可能であれば、一度に 1 つのモデル (またはモデルのグループ) を実行したいと考えています。

現在、2 つの ORM が異なるアダプターを必要とするように見えるため、アプリを起動することさえできません。

database.ymladaptermysqlを指定すると、次の値が発生しbundler/rubygems_integration.rbます。

Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.)

を指定するmysql2と、activesupport/dependencies以下が発生します。

cannot load such file -- dm-mysql2-adapter (LoadError)

mysql2アダプタでActiveRecord用の別環境を作って、establish_connection変換したい個別機種から使ってみたのですが、アプリが起動しません。

誰もこれを成功させましたか?

4

2 に答える 2

0

この特定の問題の解決策は、DataMapper にデータベース接続情報をuriオプションとして提供することであると思われますが、ActiveRecord はアダプター、ユーザー名、ルート、およびホスト オプションで指定された接続を使用します。

defaults: &defaults
  adapter: mysql2
  username: root
  password: somePassword
  host: localhost

development: &development
  database: myapp_dev
  uri: mysql://localhost/myapp_dev?user=root&password=somePassword
  <<: *defaults

test:
  database: myapp_test
  uri: mysql://localhost/myapp_test?user=root&password=somePassword
  <<: *defaults
production:
  database: myapp_dev
  <<: *defaults

ただし、2 つの ORM をうまく連携させるには、他にも多くの問題が伴います。個人的にはあきらめて、DataMapper を完全にリッピングしています。

于 2012-07-24T16:35:55.290 に答える
0

これを試すことができます。このコードは、ActiveRecord モデルがロードされた後に実行する必要があります。

db_settings = YAML::load_file("#{ROOT_PATH}/config/database_settings_for_active_record.yml")
db_config = db_settings[Rails.env]
spec = Hash.new
[:adapter, :host, :username, :password, :pool, :database].each { |x| spec.merge!(x => db_config[x.to_s]) }
YourModel.establish_connection(spec)

database_settings_for_active_record.yml には次のようなものが含まれます。

production:
  adapter: mysql2
  encoding: utf8
  host: localhost
  username: root
  password:
  pool: 5
  database: my_db
于 2012-12-13T13:19:22.543 に答える