为了加快开发过程,我正在使用文件zze.rb
,我在IDE中编辑并使用短命令zze
在pry控制台中重新加载(zz - uncommon开头的变量/方法名称;电子执行)。这样我可以通过binding.pry
在我的应用程序的任何位置停止执行过程,并且可以多次执行代码,而不是每次等待完整的Rails环境重启。
我的.pryrc
文件中包含此代码:
Pry.config.commands.command "zze", 'Execute all from .pry_exec/zze.rb' do
Dir['.pry_exec/autoload/**/*.rb']
.delete_if {|file| File.basename(file) =~ /^_/} # inore files that starting form underscore '_'
.each { |f| load(f) }
file_name = File.absolute_path '.pry_exec/zze.rb'
code = File.open(file_name, 'r') {|f| f.read}
eval(code, @target, file_name)
end
并拥有文件夹<myproject>/.pry_exec/
:
<myproject>/.pry_exec/ # ignored from CVS
autoload/ # this folder loads automatically each `zze` call in cosnole
some_class1.rb
some_code2.rb
zze.rb # this file loads automatically each `zze` call in console.
有时可能会在binding.pry
或<myproject>/zze.rb
中使用<myproject>/autoload/some_class1.rb
,但不起作用。它只是忽略了这一点。
我也尝试用这种方式重写zze
- 代码:
# ~/.pryrc
def zze(name = nil)
Dir['.pry_exec/autoload/**/*.rb']
.delete_if {|file| File.basename(file) =~ /^_/} # inore files that starting form underscore '_'
.each { |f| load(f) }
load ".pry_exec/#{name || 'zze'}.rb"
# instance_eval(File.read(".pry_exec/#{name || 'zze'}.rb"))
end
但它也会忽略binding.pry
或<myproject>/zze.rb
<myproject>/autoload/some_class1.rb
当zze
不是pry-command而是方法时,来自zze.rb
的代码在另一个范围内执行,我将无法访问我在zze.rb
中定义的局部变量撬开主语。没有找到如何解决这个问题的方法。