如何创建自定义IRB文件来加载Ruby项目的文件,宝石和依赖项?

时间:2018-05-12 17:28:15

标签: ruby irb

有没有人知道如何从终端运行一个ruby文件,该文件需要N个文件/ gems,并完成IRB会话以及那些已经加载到内存中的文件?

换句话说,我希望有这样的事情:

$ ruby project_console.rb

# project_console.rb
IRB.new do |config|
  require 'bundler/setup'
  require 'import_project_file'
  require_relative "spec/muffin_blog/app/models/random_file"
  Post.establish_connection({database: "spec/muffin_blog/db/development.sqlite3"})
end

# yay. I'm in my custom IRB session with all of the above already loaded
2.4.1 :001 >

VS

 $ irb
     2.4.1 :001 > require 'bundler/setup'
     => true
    2.4.1 :002 > require 'import_project_file'
     => true
    2.4.1 :003 > require_relative "spec/muffin_blog/app/models/random_file"
     => true
    2.4.1 :004 > Post.establish_connection({database: "spec/muffin_blog/db/development.sqlite3"})
        # this makes me sad because its manual every time I want to play around with my project.

我正在开发一个ruby项目,并且在构建这个项目的过程中,我发现我需要类似rails console的东西,它将整个项目及其捆绑器依赖项加载到内存中,所以我不必这样做它手动。我认为如果我建立自己的超级东西' rails console'为了在构建它时调试/玩我的红宝石。

我也读到某个地方,我可以使用.irbc,但这听起来好像我会在我的机器上全局更改IRB - 而且我不希望这样。我想为每个ruby项目加载特定的文件,gem和配置。

对于它的价值,我已阅读这些SO帖子:

然而,他们似乎没有提供上述问题的答案。

1 个答案:

答案 0 :(得分:4)

非常简单,实际上:

#!/usr/bin/env ruby
require "bundler/setup"
# ...
# everything else you need
# ...
require "irb"
IRB.start

当您使用IRB.start启动IRB时,您将拥有在它之前加载/初始化的所有内容。