On Oct 8, 2007, at 22:23 , ara.t.howard wrote:
> On Oct 6, 2007, at 12:28 PM, Nathaniel Brown wrote:
>> What about looking at a script/gem install which installs the gem
>> into the load path of a vendor/gems/ directory? This could provide
>> the dependency requirements by leveraging what's existing.
>
> it's been written, submitted, and ignored for quite a while (like >
> 3 years). here it is:
>
> [...]
You shouldn't need this anymore. With trunk (beta this week) RubyGems:
$ rm -rf ~/mygems
$ GEM_PATH=~/mygems ruby -rubygems -e "require 'dike'"
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require': no such file to load -- dike (LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `require'
from -e:1
$ gem install dike --install-dir ~/mygems
Installing gem pervasives-1.1.0
Downloading gem pervasives-1.1.0.gem
Installing gem attributes-3.7.0
Downloading gem attributes-3.7.0.gem
Installing gem orderedhash-0.0.2
Downloading gem orderedhash-0.0.2.gem
Installing gem dike-0.0.3
Downloading gem dike-0.0.3.gem
Successfully installed pervasives-1.1.0
Successfully installed attributes-3.7.0
Successfully installed orderedhash-0.0.2
Successfully installed dike-0.0.3
4 gems installed
$ GEM_PATH=~/mygems ruby -rubygems -e "require 'dike'"
$ GEM_PATH=~/mygems ruby -rubygems -e "require 'zentest'"
zentest was loaded from GEM_HOME. GEM_PATH stacks with it.
>> One thing that comes to mind which the config.plugins does that a
>> gem won't neccessarly do, is the load order of them.
>
> but it doesn't need to? gems already does that automatically, as
> does ruby. if you require 'a' and it requires 'b' which requires
> 'c' and all of them are in the load path then, whammo, you have
> constructed a dag and you are in business - so long as the load
> path is set correctly before hand - aka GEM_HOME
You probably don't want to mess with GEM_HOME. GEM_PATH is much
better since you can have your own set of gems and the system set, or
even multiple sets (system, user, rails) if you're crazy like that.
>> I am strongly for the idea of using Gems instead of plugins. This
>> has always been a wish of mine.
>
> agreed. we don't use any plugins in our code for precisely the
> reason that gems, though not perfect, is light years ahead of
> plugins for code management. building on top of this functionality
> is clearly the path of least resistance.
>
> on a side note, i'm very surprised that no one in this thread has
> mentioned tsort.rb - it's part of the stdlib and does dependancy
> (dag) tree construction, including detecting cycles, in a few
> methods calls.
See Gem::DependencyList#dependency_order. Its what
Gem::DependencyInstaller uses to figure out how to install things.
See above.
Of course, you should just wait and use Gem::DependencyInstaller.
I'm confident it and the rest of RubyGems does everything you could
possibly want.
It installs from cache:
$ rm -rf ~/mygems/gems/ ~/mygems/specifications/
$ ls ~/mygems/cache/
attributes-3.7.0.gem orderedhash-0.0.2.gem
dike-0.0.3.gem pervasives-1.1.0.gem
$ gem install dike --install-dir ~/mygems
Installing gem pervasives-1.1.0
Installing gem attributes-3.7.0
Installing gem orderedhash-0.0.2
Installing gem dike-0.0.3
Successfully installed pervasives-1.1.0
Successfully installed attributes-3.7.0
Successfully installed orderedhash-0.0.2
Successfully installed dike-0.0.3
4 gems installed
$ GEM_PATH=~/mygems/ ruby -rubygems -e "require 'dike'"
Note that the downloading was skipped.
And lets you fetch gems:
$ gem fetch rake
Downloaded rake-0.7.3.gem
$ mv rake-0.7.3.gem ~/mygems/cache/
$ gem install rake --install-dir ~/mygems
Installing gem rake-0.7.3
Successfully installed rake-0.7.3
1 gem installed
Installing ri documentation for rake-0.7.3...
Installing RDoc documentation for rake-0.7.3...
> i know eric is working very hard on gems now - maybe a few patches
> and his momentum would solve this in short order.
Actually, I'm trying not to work hard. I'm doing the minimum
possible cleanup necessary to get a RubyGems beta out the door this
week.
PS: Don't use Gem::GemRunner to invoke gem stuff. Go in through the
proper interfaces. There's too many moving parts in Gem::GemRunner,
so I can't promise its stability.
--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---