2011-12-06 3 views
1

잘 동작하는 mysqlite3을 사용합니다. 공유 서버의 프로덕션 환경에서는 mysql을 사용한다. 모든 카피 스트라 노에 잘 배치,하지만 승객이 오류 제공합니다 "를 mysql2 어댑터를 설치하십시오 : (.. mysql2가 번들의 일부가 아닌 Gemfile에 추가) gem install activerecord-mysql2-adapter을" 개발 환경이 아닌 개발 환경 인 Mysql2가 필요합니다. 레일 레일 앱 (레일 3.1)의 개발 및 테스트 환경을 위해

그래서 나는 gemfile이 추가를 :

group :production do 
    gem 'activerecord-mysql2-adapter' 
end 

그러나 "번들 설치"를 수행하면 해당 보석을 찾을 수 없다고 말합니다. 그리고 mysql2 보석을 먼저 추가하려 할 때 공유 서버에 installe 할 것이라고 가정하면서 로컬 Mac (이 방법은 고통 스럽습니다)에 설치하려고합니다.

+0

'mysqlite3'으로'sqlite3'을 실제로 사용합니까? – Frost

+0

예, 미안 해요 내 실수 ;-) – John

답변

1

번들러는 보석이 없기 때문에 activerecord-mysql2-adapter 보석을 찾을 수 없습니다.

mysql2의 버전을 사용하는 경우 (예 : ~> 0.3.x)이 오류가 발생합니다. 이러한 버전은 Rails 3.1 이상에서 사용되기 때문입니다.

당신은 너무 좋아, 당신은 mysql2 보석의 특정 버전에서 원하는 3.1 또는 Gemfile 이야기를 레일 중 하나를 업그레이드 응용 프로그램에서이 문제를 해결할 수 있습니다

gem 'mysql2', '~> 0.2.7' 

당신은 또한 있는지 확인해야합니다 당신의 대신 mysql을 말한다면 당신은,983를 설치하는 데 대해 뭔가를 말하는 오류 메시지가 될 겁니다,

production: 
    adapter: mysql2 

: config/database.ymlmysql2 어댑터를 지정합니다gem (이미 완료 했더라도).

이 두 가지 대답은 모두 here, btw에도 기록되어 있습니다.

+0

레일 3.1을 사용하고 있습니다. 프로덕션 환경을위한 어댑터로 mysql2를 가지고 있습니다. 내 프로덕션 환경이 공유 서버에 있다고 가정 할 때 Bundler는 로컬 컴퓨터에 mysql gem을 설치할 필요가 없다고 가정하고 있었습니까? – John

+0

아니요, 그렇지 않습니다. 'bundle install --without production'을 로컬에서 실행하여 개발 환경에서 그 그룹을 제외시킬 수 있습니다. 그러나 이것은 Gemfile.lock에 mysql2 gem을 추가하지 않을 것이다. – Frost

0

.bundle/config 파일을보십시오.

BUNDLE_WITHOUT: production 

이 줄을 삭제하고 RAILS_ENV=production bundle install을 다시 실행하십시오.

관련 문제