Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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中调试gem_Ruby_Debugging_Rubygems_Pry - Fatal编程技术网

在ruby中调试gem

在ruby中调试gem,ruby,debugging,rubygems,pry,Ruby,Debugging,Rubygems,Pry,我有一个gem,nanoc,我想调试一下 其命令行nanoc执行以下脚本(在/.rvm/gems/ruby-1.9.2-p290/bin中) 它本身在最后一行加载解析为(/.rvm/gems/ruby-1.9.2-p290/gems/nanoc-3.6.2/bin)的内容 调试这些脚本的干扰最小的选项是什么? 如果我只是撬动第一个文件,ARGV将是文件名本身 我必须修改文件才能运行调试器吗?老实说,我不确定我是否理解这个问题。你可以把你的撬子放在nanoc的库里 或者,您也可以将git repo

我有一个gem,nanoc,我想调试一下

其命令行nanoc执行以下脚本(在/.rvm/gems/ruby-1.9.2-p290/bin中)

它本身在最后一行加载解析为(/.rvm/gems/ruby-1.9.2-p290/gems/nanoc-3.6.2/bin)的内容

调试这些脚本的干扰最小的选项是什么? 如果我只是撬动第一个文件,ARGV将是文件名本身


我必须修改文件才能运行调试器吗?

老实说,我不确定我是否理解这个问题。你可以把你的撬子放在nanoc的库里

或者,您也可以将git repo分叉,然后克隆它并使用它的捆绑包运行gem,并以这种方式进行调试:

https://github.com/nanoc/nanoc


克隆repo,添加调试代码,然后运行
bundle exec-bin/nanoc
,这样可以保持本地安装的副本干净。一旦找出问题所在,就可以构建一个新的gem,安装它,提交代码,并发出请求为每个人修复它。

我在lib中的一个过滤器(一些nanoc概念)中遇到了一个异常。我想知道如何轻松地设置断点。
#!/usr/bin/env ruby
#
# This file was generated by RubyGems.
#
# The application 'nanoc' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/
    version = $1
    ARGV.shift
  end
end

gem 'nanoc', version
load Gem.bin_path('nanoc', 'nanoc', version)
#!/usr/bin/env ruby
# encoding: utf-8

# Try loading bundler if it's possible
begin
  require 'bundler/setup'
rescue LoadError
  # no problem
end

# Add lib to load path
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))

# Load nanoc
require 'nanoc'
require 'nanoc/cli'

# Run base
Nanoc::CLI.run(ARGV)