Professional Web Applications Themes

"require_next"? - Ruby

Trying to run irb on QNX6, I learned that there is a 48 char limit to file names. The long filenames generated by Tempfile (called from irb/locale.rb) were preventing irb from running. So I installed the following code in site_ruby under the name "tempfile.rb" so that it would be loaded before the real tempfile: ==== tempfile.rb ==== basename = File.basename(__FILE__) $".delete(basename) dirname = File.dirname(__FILE__) idx = $:.index(dirname) $:.delete(dirname) require basename $:.insert(idx, dirname) class Tempfile alias long_filename_initialize initialize def initialize(basename, tmpdir=Dir::tmpdir) basename = basename[/.{0,25}$/] # last 25 chars long_filename_initialize(basename, tmpdir) end end ===================== It's a horrible hack. What I would really ...

  1. #1

    Default "require_next"?


    Trying to run irb on QNX6, I learned that there is a 48 char limit to
    file names. The long filenames generated by Tempfile (called from
    irb/locale.rb) were preventing irb from running. So I installed the
    following code in site_ruby under the name "tempfile.rb" so that it
    would be loaded before the real tempfile:

    ==== tempfile.rb ====
    basename = File.basename(__FILE__)
    $".delete(basename)
    dirname = File.dirname(__FILE__)
    idx = $:.index(dirname)
    $:.delete(dirname)
    require basename
    $:.insert(idx, dirname)

    class Tempfile
    alias long_filename_initialize initialize
    def initialize(basename, tmpdir=Dir::tmpdir)
    basename = basename[/.{0,25}$/] # last 25 chars
    long_filename_initialize(basename, tmpdir)
    end
    end
    =====================

    It's a horrible hack. What I would really like is something like "super"
    but which applies to the way require finds files, rather than the way
    ruby finds methods. (One problem with this hack is that whatever happens
    during "require basename" had better not depend on the directory that
    was temporarily hidden, or else you may get the wrong file or no file at
    all.)

    Is there an easy way to implement this in ruby? If not, should it be
    provided as a primitive by the interpreter?


    Joel Guest

  2. #2

    Default Re: "require_next"?

    > Trying to run irb on QNX6, I learned that there is a 48 char limit to 
    [...] 

    How about something like that?:

    def require_next the_first
    basename = File.basename(the_first)
    dirname = File.dirname(the_first)
    loaded = false
    idx = $:.index(dirname)+1
    $:[idx..-1].each do |dir|
    begin
    require "#{dirname}/#{basename}"
    loaded = true
    break
    rescue LoadError
    next
    end
    end
    raise LoadError, basename if !loaded
    end

    require_next __FILE__

    (not tested).


    Carlos Guest

  3. #3

    Default Re: "require_next"?

    [...] 
    [...] 
    ^^^^^^^ only "dir" here, no "dirname"


    Carlos Guest

Similar Threads

  1. Replies: 1
    Last Post: April 24th, 01:27 PM
  2. CFINPUT type="radio" w/ "value" requires "label"
    By Iceborer in forum Macromedia ColdFusion
    Replies: 2
    Last Post: February 21st, 06:16 PM
  3. dr("field").toString returns "400.0000" instead of "400"
    By Dan C Douglas in forum ASP.NET General
    Replies: 5
    Last Post: July 22nd, 05:48 PM
  4. "Start" "Program" "Menu" list is empty
    By Pete in forum Windows XP/2000/ME
    Replies: 2
    Last Post: July 10th, 10:42 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139