Hi -
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
···
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b "as is". I've tried load() and it changes the scope so that magic_file.rb doesn't realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this is *not* the way to do it, but I don't have a choice... so please no "do it this other way" solutions 
Thanks!
-philip
class A
eval(File.read("magic_file.rb"))
end
···
On May 8, 2006, at 4:05 PM, Philip Hallstrom wrote:
Hi -
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b "as is". I've tried load() and it changes the scope so that magic_file.rb doesn't realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this is *not* the way to do it, but I don't have a choice... so please no "do it this other way" solutions 
Thanks!
-philip
I believe the following is your only choice:
eval File.read("magic_file.rb")
···
On 5/8/06, Philip Hallstrom <ruby@philip.pjkh.com> wrote:
How can I include the contents of magic_file.rb into both a and b "as is".
I've tried load() and it changes the scope so that magic_file.rb doesn't
realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this
is *not* the way to do it, but I don't have a choice... so please no "do
it this other way" solutions 
--
Christoffer Sawicki
I realize this is against your "no other solutions" rule, but why won't
% cat magic_file.rb
module Stuff
...
end
% cat a.rb
class A
require 'magic_file'
include Stuff
end
work?
···
On May 8, 2006, at 4:08 PM, Logan Capaldo wrote:
On May 8, 2006, at 4:05 PM, Philip Hallstrom wrote:
Hi -
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b "as is". I've tried load() and it changes the scope so that magic_file.rb doesn't realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this is *not* the way to do it, but I don't have a choice... so please no "do it this other way" solutions 
Thanks!
-philip
class A
eval(File.read("magic_file.rb"))
end
> Hi -
>
> For a variety of reasons I have the following situation:
>
> ---- file_a.rb --------------------------------------
> class A
> ... magic loading goes here...
> end
> --------------------------------------------------
>
> ---- file_b.rb --------------------------------------
> class B
> ... magic loading goes here...
> end
> --------------------------------------------------
>
> ---- magic_file.rb -----------------------------
> ... does some stuff... ----------------------------------------------
>
> How can I include the contents of magic_file.rb into both a and b
> "as is".
> ...
>
> -philip
>
class A
eval(File.read("magic_file.rb"))
end
Interesting solution. What about its effectivenes? And in general,
effectivenes of require'ing something vs. eval'ing it?
Victor
···
From: Logan Capaldo [mailto:logancapaldo@gmail.com]
On May 8, 2006, at 4:05 PM, Philip Hallstrom wrote:
Well require-ing only parses the file once. Other than that, this takes more memory (since it puts the entire file inside a string) but other than that I'm pretty sure the difference is effectively zero. The 'ideal' solution to this problem would be if load took an optional binding argument
e.g.:
class A
load("magic_file.rb", false, binding)
end
···
On May 8, 2006, at 4:16 PM, Victor Shepelev wrote:
From: Logan Capaldo [mailto:logancapaldo@gmail.com]
On May 8, 2006, at 4:05 PM, Philip Hallstrom wrote:
Hi -
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b
"as is".
...
-philip
class A
eval(File.read("magic_file.rb"))
end
Interesting solution. What about its effectivenes? And in general,
effectivenes of require'ing something vs. eval'ing it?
Victor
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b "as is". I've tried load() and it changes the scope so that magic_file.rb doesn't realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this is *not* the way to do it, but I don't have a choice... so please no "do it this other way" solutions 
Thanks!
-philip
class A
eval(File.read("magic_file.rb"))
end
That worked. Thanks!
I realize this is against your "no other solutions" rule, but why won't
% cat magic_file.rb
module Stuff
...
end
% cat a.rb
class A
require 'magic_file'
include Stuff
end
work?
Not sure... (i'm fairly new to ruby) but I tried it and it doesn't. Here's specific details on what I'm doing (rails web services):
-philip
% cat magic_stuff.rb
module FindNewerThan
def self.included(other)
other.class_eval do
api_method :find_newer_than,
:expects => [{:created_at => :datetime}],
:returns => [[Class.const_get(self.name.to_s.gsub(/Api$/, ''))]]
end
end
end
% cat a.rb
require 'magic_stuff.rb'
class A
include FindNewerThan
end
class B
include FindNewerThan
end
etc...
···
On May 8, 2006, at 5:23 PM, Philip Hallstrom wrote:
For a variety of reasons I have the following situation:
---- file_a.rb --------------------------------------
class A
... magic loading goes here...
end
--------------------------------------------------
---- file_b.rb --------------------------------------
class B
... magic loading goes here...
end
--------------------------------------------------
---- magic_file.rb -----------------------------
... does some stuff... ----------------------------------------------
How can I include the contents of magic_file.rb into both a and b "as is". I've tried load() and it changes the scope so that magic_file.rb doesn't realize it's in A or B.
I guess I'm looking for the PHP include() equivalent.
I realize this is a weird question and I realize in most situations this is *not* the way to do it, but I don't have a choice... so please no "do it this other way" solutions 
Thanks!
-philip
class A
eval(File.read("magic_file.rb"))
end
That worked. Thanks!
I realize this is against your "no other solutions" rule, but why won't
% cat magic_file.rb
module Stuff
...
end
% cat a.rb
class A
require 'magic_file'
include Stuff
end
work?
Not sure... (i'm fairly new to ruby) but I tried it and it doesn't. Here's specific details on what I'm doing (rails web services):
Including common code among multiple web services issue? - Rails - Ruby-Forum
-philip