WEBrick CGI处理程序指向错误的gem位置

时间:2012-06-03 11:45:26

标签: ruby gem rvm webrick

我正在尝试从WEBrick CGIhandler执行我的CGI程序并且继续使用gemdriver的'loaderror'失败。以前有人看过以下行为吗?我怎样才能获得我的CGI脚本来搜索有效的宝石位置?

[Situaltion]

当我通过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`requirement':无法加载此类文件 - 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”]

实际创业板: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”库。当我从本地运行时,脚本可以加载'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'

     

=>真

1 个答案:

答案 0 :(得分:0)

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

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

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