2017-05-10 2 views
0

시스템을 EL 6에서 EL 7로 업그레이드 중입니다. Ruby를 사용하여 MySQL 데이터베이스를 설치하는 응용 프로그램이 있습니다. 나는 루비와 보석에 대해 거의 알지 못한다. 그래서 나는 이것이 갈수록 고심하고있다. EL 6에서는 설정 프로세스가 올바르게 작동합니다.CentOS 업그레이드 후 "rubygem mysql error : gem is not loaded"

Specified 'mysql' for database adapter, but the gem is not loaded. Add gem 'mysql' to your Gemfile

6에서, 나는 gem list를 사용하여 설치된 MySQL의 보석 파일을 볼 수 없지만, 설치 과정은 잘 작동하고 적절하게 우리의 데이터베이스를 생성 CentOS는 7 아래 rakefile을 처리 할 때 나는 다음과 같은 오류가 발생합니다.

7 세 미만인 경우 수동으로 실행할 수 있습니다 : gem install mysql --with-mysql-config=/usr/lib64/mysql/mysql_config. 그런 다음 설치 스크립트가 작동합니다.

대부분의 필수 보석/루비 응용 프로그램은 rpm을 통해 설치하고 있습니다.

나는이 :

ruby-2.0.0.648-29.el7.x86_64 
rubygem-rake-0.9.6-29.el7.noarch 
rubygem-activesupport-4.2.5.2-2.fc24.noarch 
rubygems-2.0.14.1-29.el7.noarch 
rubygem-activemodel-4.2.5.2-1.fc24.noarch 
rubygem-activerecord-4.2.5.2-1.fc24.noarch 
ruby-mysql-2.8.2-1.el7.x86_64 

루비 MySQL은 /usr/local/lib64/ruby/site_ruby/mysql.so을 만듭니다.

mysql.so 라이브러리는 MySQL 어댑터를 제공합니까? 아니면 mysql 젬을 효과적으로 제공하는 다른 제품이 있습니까? EL 6에서 아무 것도 할 필요가 없지만 EL 7에 특별히 설치해야한다는 것은 혼란입니다.

이것은 경로 문제입니까? 아니면 소스의 주요 변경입니까? 필자는 분명히 Fedora에서 activesupport와 activerecord rpms를 가져오고 있습니다. 그래서 충돌이있을 수 있다고 생각합니다.하지만 알기가 매우 어렵습니다.

database.yml 파일은 다음과 같습니다 :

당신의 Gemfile에 :

gem 'mysql2' 

및 database.yml을 :

adapter: mysql2 
adapter: mysql 
encoding: utf8 
database: mydatabase 
username: root 
password: 
host: 127.0.0.1 
port: 3306 
+0

만약 Gemfile이 있다면, 당신은 보통'gem install bundler;를 호출 할 것입니다. 번들 설치 '를 선택하여 환경을 설정하십시오. – AlexN

+0

el6 시스템 또는 el7 시스템에서 mysql과 관련된 gem 파일을 찾을 수 없습니다. 사실, 나는 "보석"의 부름에 관한 어떤 언급도 언급하지 않는다. Rakefile과 database.yml과 ruby ​​마이그레이션 스크립트 만 있습니다. 내가 rpms 중 하나처럼 느껴, activerecord 어쩌면 뭔가 마술을하고 자신의 MySQL의 어댑터를 사용하고 있습니다. –

+0

Gemfile은 스크립트의 루트에 있고'Gemfile'이라고 불립니다. – AlexN

답변

0

그래서 왜 원래 스크립트에는 gemfile이 존재하지 않았는지 확실하지 않습니다. 내 OP에서 언급했듯이, 기본 솔루션은 gem install mysql을 실행하는 것이지만 이전에는 필요하지 않았기 때문에 이상했다.

내가 생각하는 것 : EL6에서 ruby-mysql rpm은 mysql.so를 적절한 위치에두고 기본적으로 gem install 명령을 내리고있었습니다. 내가 가지고있는 EL7 버전은 rpm에서 적절한 설정 매크로를 호출하지 않았습니다.

나는 이것을 고치기 위해 무엇을 했는가 : 나는 gem2rpm (훌륭한 rpm/패키지)을 사용하여 rubygem-mysql spec 파일을 생성했다.

https://github.com/fedora-ruby/gem2rpm

gem2rpm의 --fetch mysql을 (보석을 얻기 위해) gem2rpm -T> rubygem-mysql.spec.template gem2rpm -t rubygem-.spec.template MySQL의-2.9.1.gem> rubygem-mysql.spec

spec 파일이 생성 된 후 조금 수정해야합니다. 그런 다음 spec 템플릿을 사용하여 필요에 맞게 spec 파일을 올바르게 빌드해야합니다.

그런 다음 rpmbuild를 사용하여 실제로 rpm/srpm을 만드십시오.

보석 목록에 mysql이 표시되어 설정 스크립트가 작동합니다.

0

대신 mysql2 보석을 사용하십시오

희망이 도움이 될 것입니다.

+0

보석 파일이 없다고 생각합니다. 찾을 수 없습니다. –

+1

Gemfile을 사용하고 있지 않다면'gem install mysql2'를 대신 사용해보십시오. – Edward