0

我正在尝试从 WEBrick CGIhandler 执行我的 CGI 程序,但由于 gem 库的“加载错误”而一直失败。以前有人看到过以下行为吗?如何让我的 CGI 脚本搜索有效的 gem 位置?

[情况]

当我通过 Webrick 服务器运行需要“mysql2”库的 CGI 脚本时,出现以下错误:

错误 CGIHandler:/home/charles/code/svr/lib/cgitest.rb:/home/charles/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require。 rb:36:in `require': 无法加载此类文件 -- mysql2/version (LoadError)

从 cgitest.rb 中注释掉这个特殊的 'require' 会使这个脚本工作,所以看起来只是无法加载这个库。在脚本中添加“puts Gem.path”表示 CGIHandler 正在寻找以下目录以查找 gem;

["/home/charles/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1", "/.gem/ruby/1.9.1"]

而实际的 GEM:HOME 和 GEM:PATH 如下;

["/home/charles/.rvm/gems/ruby-1.9.3-p194", "/home/charles/.rvm/gems/ruby-1.9.3-p194@global"]

我想我错过了一些非常简单但无法弄清楚的东西。如果有人引导我走向正确的方向,我真的很感激。任何意见都将受到高度欢迎。

[环境]

使用 RVM 将 Ruby 1.9.3 安装到 Ubuntu Server 12.4,其中包含“mysql2”库等一系列 gem。当我从本地运行时,脚本可以加载“mysql2”。

$哪个红宝石

/home/charles/.rvm/rubies/ruby-1.9.3-p194/bin/ruby

$irb

1.9.3-p194:001 > Gem.path

=> ["/home/charles/.rvm/gems/ruby-1.9.3-p194", "/home/charles/.rvm/gems/ruby-1.9.3-p194@global"]

1.9.3-p194:002 > 需要'mysql2'

=> 真

4

1 回答 1

0

您需要使用包装器而不是 bin/ruby:

/home/charles/.rvm/wrappers/ruby-1.9.3-p194/ruby

这将确保您在启动 ruby​​ 时加载正确的环境。

于 2012-06-03T18:39:46.487 回答