# Ruby compactor/consolidator?

**URL:** <https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052>\
**Category:** Ruby\
**Created:** [April 8, 2009, 5:26pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052 "2009-04-08T17:26:06Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 5:26pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/1 "2009-04-08T17:26:06Z")

</div>

Is there a built-in or common way to consolidate a ruby project into one  
file?

I’ve got a project of 8-10 files (one class per file & a script that  
use the classes). For ease of distributing it to my servers, I’ve got  
a secondary script that consolidates all of them to one big ugly  
script.

While the script to consolidate the project does does work well enough  
for now, I can easily see it may not in the future.

Thanks  
–Kyle

---

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 5:29pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/2 "2009-04-08T17:29:02Z")

</div>

2009/4/8 Kyle S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Is there a built-in or common way to consolidate a ruby project into one  
> file?

cat `find . -name '*.rb'` \> all.rb

---

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 5:31pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/3 "2009-04-08T17:31:22Z")

</div>

2009/4/8 James C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> 2009/4/8 Kyle S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> > Is there a built-in or common way to consolidate a ruby project into one  
> > file?
> 
> cat `find . -name '*.rb'` \> all.rb

My apologies, that was kind of a silly answer. Best idea is to package  
it as  
a gem. I use hoe for this, for which there is an excellent tutorial:

[http://nubyonrails.com/articles/tutorial-publishing-rubygems-with-hoe](http://nubyonrails.com/articles/tutorial-publishing-rubygems-with-hoe)

---

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 5:39pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/4 "2009-04-08T17:39:01Z")

</div>

On Wed, Apr 8, 2009 at 10:28 AM, James C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> cat `find . -name '*.rb'` \> all.rb

Did you get that from the new O’Reilly book, “Mastering cat”? 😉

> **[Interview with the author of “Mastering cat” \[satire\] - Shlomi Fish’s Homesite](https://www.shlomifish.org/humour/bits/Mastering-Cat/)**
>
> Shlomi Fish is about to publish the O’Reilly book “Mastering cat” which details everything you wanted to know about the misunderstood UNIX command. “Mastering ‘cat’ is almost as difficult as herding cats.”

For some reason I never even _thought_ of doing it as a gem. Although  
I’m not sure gem works by default on CentOS… I’ll have to see.

Thanks  
–Kyle

---

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 7:21pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/5 "2009-04-08T19:21:40Z")

</div>

Kyle S. wrote:

> Is there a built-in or common way to consolidate a ruby project into one file?

Might be helpful:

[http://raa.ruby-lang.org/project/darb](http://raa.ruby-lang.org/project/darb)

(Doesn’t package binary extensions, though, only ruby source.)

---

<div class="post-metadata">

**Author:** ![kyle\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f6c823/32.png) [@kyle\_s](https://www.ruby-forum.com/u/kyle_s)\
**Post date:** [April 8, 2009, 5:54pm UTC](https://www.ruby-forum.com/t/ruby-compactor-consolidator/165052/6 "2009-04-08T17:54:19Z")

</div>

2009/4/8 Kyle S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> On Wed, Apr 8, 2009 at 10:28 AM, James C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> wrote:
> 
> > cat `find . -name '*.rb'` \> all.rb
> 
> Did you get that from the new O’Reilly book, “Mastering cat”? 😉  
> [Interview with the author of “Mastering cat” [satire] - Shlomi Fish’s Homesite](http://www.shlomifish.org/humour/bits/Mastering-Cat/)

Hey, it’s worth knowing your cat… although I really wish someone  
actually  
would publish that book, I’d love to see how much mileage they could eke  
out  
of it.

I slightly more robust thing to do would be to list all the files in a  
config file e.g. Manifest.txt, since order can be important, then write  
a  
build take in your Rakefile:

task :build do  
files = File.read(‘Manifest.txt’).strip.split(/\s+/)  
code = files.map(&File.method(:read)) \* “\n\n”  
File.open(‘build.rb’, ‘wb’) { |f| f.write(code) }  
end
