问题 自动将项目环境加载到irb


Rails有用的命令 rails console,下载所有必要的数据,然后我们可以与rails项目进行交互 irb。 Ruby项目是否有相同的技术(基于Ruby语言)?通过这个技巧,我可以在Ruby项目中玩 irb 无需担心加载库,模块,类,文件等。 谢谢


6372
2018-03-24 20:08


起源



答案:


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

$ irb -Ilib -rproject

15
2018-03-25 00:20





从我的一个项目:

# 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中的文件的魔力。


1
2018-03-24 20:17



请解释将此功能放在项目中的位置以及如何调用它。 - megas
这取决于您的项目的组织方式。我有一个文件,其中包含一个命令行实用程序,可以执行生成器,服务器,运行代码等操作。但是如果你放入一个文件 console.rb 最后简单地补充一下 console 那么当你运行它时它应该工作 ruby console.rb 它应该工作。你必须自定义它以满足你的需求,我试图指出在哪里。 - Jakub Hampl


答案:


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

$ irb -Ilib -rproject

15
2018-03-25 00:20





从我的一个项目:

# 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中的文件的魔力。


1
2018-03-24 20:17



请解释将此功能放在项目中的位置以及如何调用它。 - megas
这取决于您的项目的组织方式。我有一个文件,其中包含一个命令行实用程序,可以执行生成器,服务器,运行代码等操作。但是如果你放入一个文件 console.rb 最后简单地补充一下 console 那么当你运行它时它应该工作 ruby console.rb 它应该工作。你必须自定义它以满足你的需求,我试图指出在哪里。 - Jakub Hampl


在我的例子中,我的初始化脚本位于当前工作目录中。以下对我有用。

irb -r ./setup.rb

0
2017-12-11 18:23