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 

또는

# 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 

또는

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

나는이 쿼리 작성 지정된 클래스 파일에서 주로 이루어집니다 있음을 유의를 컨트롤러, 모델 등에서는 그렇지 않습니다. - 대부분은에 속합니다.. 나는 또한 옛날 보석에서 사용했던 것들과 비슷한 많은 특징을 찾을 수없는 것 같습니다. 좋은 예가 #autocommit과 같은 방법입니다 (여러 INSERT와 같은 일괄 쿼리를 사용하도록 설정하는 경우).

모든 보석을 사용하여 mysql2ActiveRecord 물건에 대해 전환을 원활하게하고 데이터베이스에 직접 클라이언트 연결을 위해 ruby-mysql을 사용하고 싶습니다. 그러나, 둘 다 내 애플 리케이션의 Gemfile에 포함 시키면, 레일스는 하나 또는 다른 것으로 디폴트로 보인다. ruby-mysql 만 포함하도록 Gemfile을 구성하는 방법이 있지만 앱이로드 될 때 자동으로 필요하지는 않습니까?

두 파일이 모두 있는지 확인하고 정확하게 오래된 파일을 사용하고 싶은 파일에만 require 'mysql'을 사용할 수 있습니까? 내가 취해야 할 다른 접근법이 있습니까? 한 번에 전체 애플리케이션을 변환하는 것은 매우 위험한 일이며, 팀이 MySQL의 Mysql2로 이전 코드를 변경하고 전환하는 데 시간을 할애 할 수 있기를 바랍니다.

감사합니다. 레일 비록

답변

관련 문제