自动将项目环境加载到irb

16

Rails有一个很有用的命令rails console,它会下载所有必要的数据,然后我们可以在irb中与Rails项目进行交互。对于基于Ruby语言构建的Ruby项目是否也有类似的技巧呢?有了这个技巧,我可以在irb中玩转Ruby项目,而不需要考虑加载库、模块、类、文件等等。

4个回答

22

你的项目应该有一个文件来加载环境。假设你的项目在lib/project.rb中,那么只需要:

$ irb -Ilib -rproject

1

来自我的一个项目:

# Creates an IRB console useful for debugging experiments
# Loads up the environment for the condition passed
def console
  File.open("./tmp/irb-setup.rb", 'w') do |f|
    f.puts "# Initializes the environment for IRb."
    f.puts "Code to initialize your project here"
    f.puts "$: << '#{File.expand_path(".")}/'"  #handle load path       
  end
  irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
  # require your code
  libs =  " -r irb/completion"
  libs <<  " -r #{File.dirname(__FILE__) + "/base"}"
  libs << " -r ./tmp/irb-setup.rb" # require the config file you just wrote
  puts "Loading #{@options.env} environment..."
  exec "#{irb} #{libs} --simple-prompt"
end

诀窍在于构建irb命令以自动加载所需的所有代码。我还需要设置一些配置,以便添加编写文件的魔力,然后在IRb中要求它。


请解释在项目中应该把这个函数放在哪里以及如何调用它。 - megas
这有点取决于你的项目组织方式。我将它放在一个文件中,包含一个命令行实用程序,可以执行生成器、服务器、运行代码等操作。但是,如果你在一个名为 console.rb 的文件中添加 console,然后在结尾处简单地添加 console,那么当你用 ruby console.rb 运行它时,它应该能够工作。你需要根据自己的需求进行自定义,我已经尽量指出了需要修改的部分。 - Jakub Hampl

0
对于任何项目,你也可以添加一个 .irbrc 文件,并在其中引入你需要的内容,很可能是项目的入口点。
require "lib/project"

0
在我的情况下,我的初始化脚本位于当前工作目录中。以下方法适用于我。
irb -r ./setup.rb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接