Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby mysql gem可以工作,但是当我使用-d$debug执行带有debug选项的脚本时,我看到了一个异常_Ruby_Rubygems_Rvm - Fatal编程技术网

Ruby mysql gem可以工作,但是当我使用-d$debug执行带有debug选项的脚本时,我看到了一个异常

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

我有一些CGI脚本。我在这些脚本中使用mysql连接和查询。在看到脚本中的一些异常之后,我想使用ruby调试选项执行它们。 下面是一个显示问题的小测试脚本

如果没有调试选项,就没有任何错误,我可以连接到数据库并运行查询,但当我使用调试选项(-d$debug)时,它会引发异常。有趣的是,即使有异常,它也可以工作,它连接到数据库

有什么想法吗?有什么问题?我怎样才能修好它?这是新安装的Ubuntu 11.04。详情如下


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基础设施

您看到的是非gem
require
的失败(异常)。之后,gem
require
将跟踪并正确加载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'mysql'
    激活gem(这将设置初始非gem尝试查找gem的搜索路径)

谢谢你的回答,但肯定还有别的问题。我已经取下rubygems require行并执行了脚本,结果是一样的。它连接到数据库,但仍会引发异常。ruby-d$DEBUG dbtest.rb!/home/paul/.rvm/rubies/ruby-1.9.2-p290/bin/ruby require'mysql'connection=mysql.new(“localhost”、“”、“”、“”、“”、“”和“mymarket”)将connection.object_id异常'LoadError'放在:29-没有这样的文件要加载--mysql 13267700仍然使用rubygems,正如您可以从异常消息(“lib/rubygems/custom_require”)中清楚看到的那样。也许你的另一个
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