Ruby mysql gem可以工作,但是当我使用-d$debug执行带有debug选项的脚本时,我看到了一个异常
我有一些CGI脚本。我在这些脚本中使用mysql连接和查询。在看到脚本中的一些异常之后,我想使用ruby调试选项执行它们。 下面是一个显示问题的小测试脚本 如果没有调试选项,就没有任何错误,我可以连接到数据库并运行查询,但当我使用调试选项(-d$debug)时,它会引发异常。有趣的是,即使有异常,它也可以工作,它连接到数据库 有什么想法吗?有什么问题?我怎样才能修好它?这是新安装的Ubuntu 11.04。详情如下Ruby mysql gem可以工作,但是当我使用-d$debug执行带有debug选项的脚本时,我看到了一个异常,ruby,rubygems,rvm,Ruby,Rubygems,Rvm,我有一些CGI脚本。我在这些脚本中使用mysql连接和查询。在看到脚本中的一些异常之后,我想使用ruby调试选项执行它们。 下面是一个显示问题的小测试脚本 如果没有调试选项,就没有任何错误,我可以连接到数据库并运行查询,但当我使用调试选项(-d$debug)时,它会引发异常。有趣的是,即使有异常,它也可以工作,它连接到数据库 有什么想法吗?有什么问题?我怎样才能修好它?这是新安装的Ubuntu 11.04。详情如下 rvm-v: rvm 1.8.4由Wayne E.Seguin编写(wayne
rvm-v:
rvm 1.8.4由Wayne E.Seguin编写(wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]
ruby-v:
ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-linux]
gem-v:
1.8.10
创业板名单:
*本地宝石*
mysql(2.8.1)
mysql2(0.3.7)
耙(0.9.2)
ruby dbtest.rb:
14701920
ruby-d$DEBUG dbtest.rb:
异常“LoadError”位于/home/mehmet/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36-无需加载此类文件--mysql
11340120
更多dbtest.rb:
#!/home/paul/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
需要“rubygems”
需要“mysql”
connection=Mysql.new(“localhost”、“mymarket”、“localhost”、“mymarket”)
放置connection.object\u id
干杯,Rubgems首先尝试通过正常的Ruby
require
机制加载require
d文件。只有在失败的情况下,它才会使用gem基础设施
您看到的是非gemrequire
的失败(异常)。之后,gemrequire
将跟踪并正确加载gem
全局变量$DEBUG
使Ruby显示异常,即使它们被捕获
从custom_require.rb的来源,突出显示第36行:
alias gem_original_require require
...
def require path
if Gem.unresolved_deps.empty? or Gem.loaded_path? path then
gem_original_require path # <---- line 36
else
...
end
rescue LoadError => load_error
if load_error.message.end_with?(path) and Gem.try_activate(path) then
return gem_original_require(path)
end
raise load_error
end
alias gem\u original\u require
...
def要求路径
如果Gem.unresolved\u deps.empty?或者Gem.u路径?那么路径呢
gem_原始_需要路径#加载_错误
如果加载错误。消息。用?(路径)和Gem结束。然后尝试激活(路径)
返回gem\u原始\u需要(路径)
结束
提升加载错误
结束
更新:
为了解决这个问题
- 忽略该消息(它是无害的。)
- 在
之前,使用require
激活gem(这将设置初始非gem尝试查找gem的搜索路径)gem'mysql'
require
d文件require
s rubygems?或者,我必须这样问,我想,我如何摆脱这个?我已经尝试了下面的方法,它现在的工作方式是我想要的:gem'mysql'require'mysql'我在谷歌上搜索并看到gem方法加载,然后我必须要求加载gem@undur_gongor,非常感谢您的关注,并引导我了解gem方法。干杯,可能是重复的
alias gem_original_require require
...
def require path
if Gem.unresolved_deps.empty? or Gem.loaded_path? path then
gem_original_require path # <---- line 36
else
...
end
rescue LoadError => load_error
if load_error.message.end_with?(path) and Gem.try_activate(path) then
return gem_original_require(path)
end
raise load_error
end