我正在尝试从 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'
=> 真