From: Austin Ziegler Date: 2005-02-27T12:47:40+09:00 Subject: Re: File resource location? On Sun, 27 Feb 2005 06:20:00 +0900, Robert Klemme wrote: > "Jim Crossley" schrieb im Newsbeitrag > news:87650fuvvy.fsf@vaio.crossleys.net... >> I have a Java application that I wish to port to Ruby. One of its >> features is to convert a string of digits to a raw audio stream >> of DTMF tones. >> So the Java jar file includes raw audio files for each digit. >> These are loaded as resources from the classpath. >> What's the *right* way to do that in Ruby? Where do people >> typically package resources for their applications? > Never had that problem, but one way would be to place them beside > the module ..rb file or in a subdirectory and load them via the > module file's name. I've solved it a couple of ways. The first was to basically do: % irb --noprompt Dir["icons/*jpg"].each do |file| File.open("#{file}.rb", "wb") do |wfile| data = nil File.open("#{file}", "rb") { |rfile| data = rfile.read } wfile.write "#{file.tr('/.', '_').upcase} = #{data.inspect}" end end The bad news, of course, is that this makes the file MUCH larger. If you wanted, you could BASE64 encode the files and then decode them on reading. However, the trick here is that you will get a valid Ruby source file for your resource, and it can be found without any additional work. Alternatively, you can do what I'm doing in PDF::Writer, which is to look for resource files in a predictable location, or in a specified location. I do this with .afm files and now the appropriate .ttf files. -austin -- Austin Ziegler * halostatue@gmail.com * Alternate: austin@halostatue.ca