Can you 'require' ruby file in irb session, automatically, on every command?

后端 未结 3 448
小鲜肉
小鲜肉 2021-01-11 17:56

I am currently editing a file, and I\'m using irb to test the api:

> require \'./file.rb\'
> o = Object.new
> o.method

I then want

相关标签:
3条回答
  • 2021-01-11 18:19

    This won't run every command, but you can include a file on every IRb session. ~/.irbrc is loaded each time you start an IRb session.

    ~/.irbrc

    require "~/somefile.rb"
    

    ~/somefile.rb

    puts "somefile loaded"
    

    terminal

    > irb
    somefile loaded
    irb(main):001:0> 
    

    ~/.irbrc is loaded each time you start an irb session

    0 讨论(0)
  • 2021-01-11 18:34

    What about require_dependency from ActiveSupport library?

    require 'active_support/dependencies' #load it at the beginning
    require_dependency 'myscript.rb'
    

    Then require_dependency should track the changes in myscript file and reload it.

    0 讨论(0)
  • 2021-01-11 18:40

    I usually create a simple function like this:

    def reload
        load 'myscript.rb'
        # Load any other necessary files here ...
    end
    

    With that, a simple reload will re-import all of the scripts that I'm working on. It's not automatic, but it's the closest thing that I've been able to come up with.

    You may be able to override method_missing to call this function automatically when your object is invoked with a method that doesn't exist. I've never tried it myself, though, so I can't give any specific advice. It also wouldn't help if you're calling a method that already exists but has simply been modified.

    In my own laziness, I've gone as far as mapping one of the programmable buttons on my mouse to the key sequence "reload<enter>". When I'm using irb, all it takes is the twitch of a pinky finger to reload everything. Consequently when I'm not using irb, I end up with the string "reload" inserted in documents unintentionally (but that's a different problem entirely).

    0 讨论(0)
提交回复
热议问题