How can I reload a script in IRB?

44,720

Solution 1

In irb, File.expand_path(__FILE__)} will just return "#{path you ran irb from}/(irb)". Which creates a path that doesn't actually exist. Luckily all file paths are relative to where you ran irb anyway. This means all you need is:

load "lib/query.rb"

If you want to use the __FILE__ in an actual file, that's fine, but don't expect it to produce a valid path in irb. Because an irb there is no "file" at all, so it cannot return valid path at all.

Also, __FILE__ will work fine if used in a file loaded into irb via load or require. Cause that's kinda what it's for.

Solution 2

Instead of using require, try load. The former only loads a source file once, while the latter loads it every time you call it.

Solution 3

according to this link you need to load your file and do not forget the extention.

Here is a fancier version to use too at this link number 2 which could be helpful for you too.

You may want to try hashing out why your rails console isn't working for you though.

Solution 4

I think load is what you are looking for.

Share:
44,720
jdahlgren
Author by

jdahlgren

Updated on July 05, 2022

Comments

  • jdahlgren
    jdahlgren almost 2 years

    I am writing a Ruby script for use in the Rails environment, but I chose to run it from irb because reloading the Rails console can be a pain. Now the wait time is much shorter from irb, but I'm bothered that I have to restart irb and require the script everytime I make a change. Is there a simpler way of reloading a script from irb?

    I found a method in this thread, but that only applies to gem files apparently. My require statement looks like this

     require "#{File.expand_path(__FILE__)}/../lib/query"
    

    EDIT: Having tried load rather than require, I still couldn't get it to work. I can't get a stop on these errors.

    ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
    LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb
    
  • jdahlgren
    jdahlgren over 13 years
    Rails console is simply too slow to load. I tried load but it keeps complaining that it cannot find the file, and I did put the rb extension at the end of the line.
  • jdahlgren
    jdahlgren over 13 years
    I tried load but it keeps complaining that it cannot find the file, and I did put the rb extension at the end of the line.
  • jdahlgren
    jdahlgren over 13 years
    I tried load but it keeps complaining that it cannot find the file, and I did put the rb extension at the end of the line.
  • pjammer
    pjammer over 13 years
    if this file is inside of your lib directory, then it's loaded and you can/should be able to use it, unless it pukes up errors on starting. To use it in another file, you just need to add require NameOfModuleOrClass (that is inside that query file), to one of the files in your rails app.
  • Purplejacket
    Purplejacket almost 12 years
    For reference, look at "Ruby Require VS Load VS Include VS Extend" -- ionrails.com/2009/09/19/…
  • hyeomans
    hyeomans almost 11 years
    Try putting the extension of the file