在 Snow Leopard 上使用 rvm 安装 mysql2 gem 以配合 Rails 3

32

我最近升级到了Rails 3,并使用Rails 3.0.3创建了一个新的应用程序,但我一直在收到错误提示:

Macintosh:$ rails server    
=> 启动WEBrick    
=> Rails 3.0.3应用程序开始在http://0.0.0.0:3000上运行    
=> 使用-d选项以分离模式运行    
=> 按Ctrl-C关闭服务器    
[2010-11-28 11:32:47] INFO  WEBrick 1.3.1    
[2010-11-28 11:32:47] INFO  ruby 1.8.7 (2010-04-19) [i686-darwin10.4.0]    
[2010-11-28 11:32:47] INFO  WEBrick::HTTPServer#start: pid=1055 port=3000
Started GET "/" for 127.0.0.1 at Sun Nov 28 11:32:52 +0000 2010
RuntimeError (!!! Missing the mysql2 gem. Add it to your Gemfile: gem 'mysql2'):

我有一台64位的机器。错误只出现在文档中,并且看起来gem被正确安装了。

Macintosh:$ env ARCHFLAGS="-arch i386" gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config    
正在构建本地扩展,这可能需要一些时间......    
成功安装了mysql2-0.2.6    
已安装1个gem包    
正在为mysql2-0.2.6安装ri文档......    
Enclosing class/module 'mMysql2' for class Client not known    
正在为mysql2-0.2.6构建YARD (yri)索引...    
正在为mysql2-0.2.6安装RDoc文档......    
Enclosing class/module 'mMysql2' for class Client not known

我已经将gem添加到了我的GemFile中:

source 'http://rubygems.org/'
gem 'rails', '3.0.3' gem 'mysql2' gem 'sqlite3-ruby', :require => 'sqlite3'

我的GemFile.lock内容如下:

GEM    
  remote: http://rubygems.org/    
  specs:抽象类库 (1.0.0)
动作邮件 (3.0.3)
- 依赖于动作包 (= 3.0.3)
- 依赖于邮件 (~> 2.2.9)
动作包 (3.0.3)
- 依赖于活动模型 (= 3.0.3)
- 依赖于活动支持 (= 3.0.3)
- 依赖于构建者 (~> 2.1.2)
- 依赖于erubis (~> 2.6.6)
- 依赖于i18n (~> 0.4)
- 依赖于货架 (~> 1.2.1)
- 依赖于货架安装 (~> 0.6.13)
- 依赖于货架测试 (~> 0.5.6)
- 依赖于时区信息 (~> 0.3.23)
活动模型 (3.0.3)
- 依赖于活动支持 (= 3.0.3)
- 依赖于构建者 (~> 2.1.2)
- 依赖于i18n (~> 0.4)
活动记录 (3.0.3)
- 依赖于活动模型 (= 3.0.3)
- 依赖于活动支持 (= 3.0.3)
- 依赖于arel (~> 2.0.2)
- 依赖于时区信息 (~> 0.3.23)
活动资源 (3.0.3)
- 依赖于活动模型 (= 3.0.3)
- 依赖于活动支持 (= 3.0.3)
活动支持 (3.0.3)
arel (2.0.4)
构建者 (2.1.2)
erubis (2.6.6)
- 依赖于抽象类库 (>= 1.0.0)
国际化 (0.4.1)
邮件 (2.2.10)
- 依赖于活动支持 (>= 2.3.6)
- 依赖于国际化 (~> 0.4.1)
- 依赖于mime-types (~> 1.16)
- 依赖于treetop (~> 1.4.8)
多媒体类型 (1.16)
MySQL2 (0.2.6)
多语言 (0.3.1)
货架 (1.2.1)
货架安装 (0.6.13)
- 依赖于货架 (>= 1.0.0)
货架测试 (0.5.6)
- 依赖于货架 (>= 1.0)Rails(3.0.3)包括以下组件:ActionMailer(= 3.0.3),ActionPack(= 3.0.3),ActiveRecord(= 3.0.3),ActiveResource(= 3.0.3),ActiveSupport(= 3.0.3),Bundler(〜> 1.0),Railties(= 3.0.3)。Railties(3.0.3)包括以下组件:ActionPack(= 3.0.3),ActiveSupport(= 3.0.3),Rake(> = 0.8.7),Thor(〜> 0.14.4)。依赖关系包括sqlite3-ruby(1.2.4),Rake(0.8.7),Thor(0.14.6),Treetop(1.4.9),polyglot(> = 0.3.1),tzinfo(0.3.23)。平台为Ruby。依赖项包括mysql2,Rails(= 3.0.3),sqlite3-ruby。Gem清单包括abstract(1.0.0),actionmailer(3.0.3),actionpack(3.0.3),activemodel(3.0.3),activerecord(3.0.3),activeresource(3.0.3),activesupport(3.0.3),acts_as_ferret(0.4.4),arel(2.0.4),builder(3.0.0,2.1.2),bundler(1.0.7),capistrano(2.5.9),dnssd(1.3),erubis(2.6.6),fastthread(1.0.7),gnuplot(2.2),highline(1.6.1,1.5.1),hpricot(0.8.1),i18n(0.4.2,0.4.1),libxml-ruby(1.1.3),linecache(0.43),mail(2.2.10)。memcache-client (1.8.5、1.7.6)
memcached (0.17.5)
mime-types (1.16)
mysql2 (0.2.6)
net-scp (1.0.4、1.0.2)
net-sftp (2.0.5、2.0.2)
net-ssh (2.0.23、2.0.15)
net-ssh-gateway (1.0.1)
polyglot (0.3.1)
rack (1.2.1、1.0.1、1.0.0)
rack-mount (0.6.13)
rack-test (0.5.6)
rails (3.0.3)
railties (3.0.3)
rake (0.8.7、0.8.4)
rcov (0.9.9、0.9.8)
rdoc (2.5.11)
RedCloth (4.2.2)
rmagick (2.12.2)
ruby-debug-base (0.10.3)
ruby-debug-ide (0.4.5)
rubygems-update (1.3.7、1.3.5、1.3.3)
rvm (1.1.1)
sqlite3-ruby (1.3.2、1.2.4)
test-spec (0.10.0)
text-format (1.0.0)
text-hyphen (1.0.0)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.23)
yard (0.5.8)



我的MySQL已经运行:

Macintosh:$ mysql -uroot
欢迎来到 MySQL monitor,命令以;或\g结尾。
您的MySQL连接ID为1
服务器版本:5.1.53 MySQL Community Server(GPL)
版权所有(c)2000,2010,Oracle及/或其附属公司。保留所有权利。 此软件不提供任何保证。这是免费软件, 根据GPL v2许可证,您可以修改和重新分发它。
键入“help;”或“\h”获取帮助。 键入“\ c”以清除当前输入语句。
mysql>

这就是我全新应用程序中的全部内容,但仍然出现缺少mysql2 gem的问题。

我有安装了Snow Leopard 10.6.5和X Code 3.2.4。

有什么建议吗?

提前致谢!


谢谢,这让我有些困惑。你帮我省了很多时间。 - richo
2个回答

90

我实际上在我的database.yml文件中设置了错误的适配器

所以解决方法是:

development:
  adapter: mysql2
  database: development_database
  username: root
  password:

而不是

adapter: mysql

哎呀!


我遇到了同样的问题,感谢您提供了解决方法!!! 我想原始错误信息可能不是非常清晰。 ;) - Pirkka Esko
我现在已经遇到这个问题大约1000次了。 - ablemike

6

如果你最近看到这个问题,那是因为mysql2 0.3删除了ActiveRecord Adapter,现在它已经成为Rails 3.1的一部分。

WARNING: This version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1
WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x

如果您使用的是Rails 3.0.x,请相应地调整您的Gemfile。
gem 'mysql2', '~> 0.2.6'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接