J
Joseph Wilk
You cannot guarantee the order of files in the list returned from:
----
Dir['/tmp/*']
----
The order in which the files are loaded is not deterministic. I had an
example were a 32bit machine and a 64bit machine (both ubuntu-hardy)
where generating the files in a different order.
Some people use Dir as a shortcut to require files.
Example:
----
Dir[File.join(File.dirname(__FILE__), 'example/*.rb')].each{ |f| require
f }
----
I've come across this on a couple of open-source projects. This is
great until you start having dependencies that rely on the order of the
files being required.
----
example/x.rb
example/y.rb
y.rb->
class Y < X
x.rb->
class X
----
Its not safe to assume that just because on your machine it loads x.rb
first then y.rb that it will use the same order on other machines.
I try and ensure that dependencies are required in the files that need
them.
----
y.rb->
require 'x'
class Y < X
x.rb->
class X
----
I'm sure there are lots of other neat idioms that people use to require
files.
Anyone have any good ideas why a 32bit and 64bit machine would generate
a different order on Dir[]?
----
Dir['/tmp/*']
----
The order in which the files are loaded is not deterministic. I had an
example were a 32bit machine and a 64bit machine (both ubuntu-hardy)
where generating the files in a different order.
Some people use Dir as a shortcut to require files.
Example:
----
Dir[File.join(File.dirname(__FILE__), 'example/*.rb')].each{ |f| require
f }
----
I've come across this on a couple of open-source projects. This is
great until you start having dependencies that rely on the order of the
files being required.
----
example/x.rb
example/y.rb
y.rb->
class Y < X
x.rb->
class X
----
Its not safe to assume that just because on your machine it loads x.rb
first then y.rb that it will use the same order on other machines.
I try and ensure that dependencies are required in the files that need
them.
----
y.rb->
require 'x'
class Y < X
x.rb->
class X
----
I'm sure there are lots of other neat idioms that people use to require
files.
Anyone have any good ideas why a 32bit and 64bit machine would generate
a different order on Dir[]?