8

Ruby 新手在这里试图弄清楚如何使用 Gem,到目前为止,体验并不是那么好。

通过 gem 安装 mysql2 后,我尝试在一个简单的文件中使用它。

需要'mysql2'

#client = Mysql2::Client.new(:host => "localhost", :username => "username")

虽然当我运行它时,我得到:

Parse.rb:1:in `require': 没有要加载的文件——mysql2 (LoadError)
 来自 Parse.rb:1

然而我的 gem 列表包含 mysql2:

Tanner-Smiths-MacBook-Pro:Humans_vs_Zombies_Parse tanner$ 宝石列表

*** 当地宝石 ***

摘要 (1.0.0)
动作邮件程序(3.0.1、2.3.5、1.3.6)
动作包(3.0.1、2.3.5、1.13.6)
actionwebservice (1.2.6)
活动模型(3.0.1)
活动记录(3.0.1、2.3.5、1.15.6)
活动资​​源(3.0.1、2.3.5)
主动支持(3.0.1、2.3.5、1.4.4)
act_as_ferret (0.4.3)
雷尔 (2.0.2)
建设者(2.1.2)
capistrano (2.5.19, 2.5.2)
cgi_multipart_eof_fix (2.5.0)
守护进程 (1.1.0, 1.0.10)
dnssd (1.4, 0.6.0)
厄鲁比斯 (2.6.6)
快速线程(1.0.7、1.0.1)
fcgi (0.8.8, 0.8.7)
雪貂 (0.11.6)
gem_plugin (0.2.3)
高线(1.6.1、1.5.0)
hpricot (0.8.3, 0.6.164)
i18n (0.4.2)
jk-雪貂 (0.11.8.2)
libxml-ruby (1.1.4, 1.1.2)
邮件 (2.2.9)
哑剧类型 (1.16)
杂种 (1.1.5)
mysql2 (0.2.6)
针 (1.3.0)
net-scp (1.0.4, 1.0.1)
网络 sftp (2.0.5, 2.0.1, 1.1.1)
网络SSH(2.0.23、2.0.4、1.1.4)
网络 ssh 网关 (1.0.1, 1.0.0)
多语言 (0.3.1)
机架(1.2.1、1.0.1)
机架式 (0.6.13)
机架测试(0.5.6)
导轨(2.3.5、1.2.6)
铁路(3.0.1)
耙子 (0.8.7, 0.8.3)
红布(4.2.3、4.1.1)
红宝石-openid (2.1.8, 2.1.2)
红宝石雅迪斯 (0.3.4)
红宝石节点(0.1.5)
sqlite3-ruby (1.3.2, 1.2.4)
终端 (0.9.4)
雷神 (0.14.4)
树顶 (1.4.8)
tzinfo (0.3.23)
xmpp4r (0.5, 0.4)

“红宝石环境”的结果:

RubyGems 环境:
  - 红宝石版本:1.3.5
  - 红宝石版本:1.8.7(2009-06-12 补丁级别 174)[universal-darwin10.0]
  - 安装目录:/Library/Ruby/Gems/1.8
  - RUBY 可执行文件:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - 可执行目录:/usr/bin
  - 红宝石平台:
    - 红宝石
    - 通用达尔文 10
  - 宝石路径:
     - /图书馆/Ruby/Gems/1.8
     - /Users/tanner/.gem/ruby/1.8
     - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  - 宝石配置:
     - :update_sources => 真
     - :详细 => 真
     - :基准 => 假
     - :回溯 => 假
     - :bulk_threshold => 1000
  - 远程资源:
     - http://gems.rubyforge.org/

我在这里做错了什么?我想不通。

谢谢

-皮匠

4

3 回答 3

6

尝试:

require 'rubygems'
require 'mysql2'
于 2010-11-12T14:58:05.970 回答
6

您可能已经注意到,您安装了多个版本的 ruby​​。我强烈建议您使用RVM来管理多个 ruby​​ 版本。

这是一个疯狂的猜测,但如果您不使用命令行来运行您的应用程序并使用 TextMate 等工具,您可能需要设置一个 shell 变量“TM_RUBY”以指向安装了 ruby​​gems 的 ruby​​ 版本(1.8.7 (2009-06-12 补丁级别 174))。

你可以试试:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/irb

要获得安装了 ruby​​gems 的 irb 版本,然后尝试:

require 'rubygems'
require 'mysql2'

如果那行得通并且您对此感到满意,您可以更新 /usr/bin/ruby、/usr/bin/irb、/usr/bin/gem 中的符号链接以指向旧版本的 ruby​​,或者再次安装 RVM让您的生活更轻松。

于 2010-11-14T21:23:54.950 回答
1

要获取更多信息,请启动 irb 并运行:

需要“红宝石”
gem 'mysql2' #=> 这会导致错误吗?
$:.grep /mysql2/ #=> 如果上一行没有错误,请发布显示的内容

同样在终端提示符下,运行“gem contents mysql2”。您是否看到以下结尾的路径?

lib/mysql2/error.rb
lib/mysql2/mysql2.bundle
lib/mysql2/client.rb
lib/mysql2/result.rb
库/mysql2.rb
于 2010-11-12T19:47:34.030 回答