0

非常に大きなRails 2.3アプリケーションをRuby 1.8から1.9に移行しています。途中で、私はいくつかのデータベースエンコーディングの問題を抱えていたようですが、これは古いruby-mysqlの宝石からmysql2に移動することによってのみ解決することができました。Ruby/Rails - ruby​​-mysqlとmysql2の両方で作業する

これはすべてのActiveRecord::Base ORMのようなクエリ(@users = User.find(:all, :conditions => {...})など)でうまく機能しましたが、アプリケーションはパフォーマンス関連の問題について直接DBにクエリすることにも大きく依存しています。私は、このクエリが書か指定されたクラスファイルに主に行われていることに注意してください

ActiveRecord::Base.connection.execute(optimized_sql).each_hash do |row| 
    # do some stuff with row 
end 

OR

# for specific connections (different servers, etc) 
client = Mysql.real_connect(host, username, password, schema) 
client.query(tweaked_sql).each_hash do |row| 
    # do some stuff with row 
end 

OR

# for batch inserts 
client.autocommit(false) 
insert_list.each { |insert| client.query(insert) } 
client.commit 

:それはこのようなものを見ることは非常に一般的ですコントローラ、モデルなどではなく、ほとんどのものはapp_root/lib/。私は古い宝石で使ったものと同等の多くの特徴を見つけることもできないようです。良い例は#autocommitのようなメソッドです(複数のINSERTのようなバッチクエリを有効にする)。

私は両方の宝石を使用して移行を円滑たい

- すべてのActiveRecordもののためmysql2、およびデータベースへの直接のクライアント接続のためのruby-mysql。しかし、私がアプリケーションのGemfileに両方を組み込むと、Railsはどちらか一方にデフォルト設定されているようです。 ruby-mysqlのみを含めるようにGemfileを設定する方法はありますが、アプリの読み込み時に自動的には必要としませんか?

両方とも存在することを確認するには、どうすれば私が厳密に古いgemを使いたいファイルにrequire 'mysql'を使用すればよいですか?私が取るべき他のアプローチはありますか?アプリケーション全体を1つのストロークから変換することはかなり危険です。私は、私のチームがMysqlからMysql2に古いコードを適応させて移行することを可能にしたいと思います。

ありがとうございました。

答えて

関連する問題