From: Jon Forums Date: 2011-11-09T00:21:55+09:00 Subject: Re: About the main RubyGems application, gem Kaye Ng wrote in post #1030792: > Hi! > I'm running windows 7. Inside this directory, C:\Ruby192\bin , is the > file 'gem' . It's just 'gem' , no extension like .rb or anything. > > Opened it with a text editor: > ------------------------------------------------------------------------ > > #!/usr/bin/env ruby > #-- > # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. > # All rights reserved. > # See LICENSE.txt for permissions. > #++ > > require 'rubygems' > require 'rubygems/gem_runner' > require 'rubygems/exceptions' > > required_version = Gem::Requirement.new ">= 1.8.7" > > unless required_version.satisfied_by? Gem.ruby_version then > abort "Expected Ruby Version #{required_version}, is > #{Gem.ruby_version}" > end > > args = ARGV.clone > > begin > Gem::GemRunner.new.run args > rescue Gem::SystemExitException => e > exit e.exit_code > end > ------------------------------------------------------------------------ > > My questions are: > 1. Is this the main RubyGems application? If it is, can someone explain > to me the significance of it not having an extension like .rb ? Think of that as a helper that does a little bit of management and starts up the main RubyGems application. On a Windows system, `gem` is called by the `gem.bat` file in the `C:\Ruby192\bin` directory. Since `C:\Ruby192\bin` in on your `PATH`, you simply type things like `gem list` and things just work. On a Linux system, > 2. Is RubyGems required for any simple library I would create myself? > for example, mylibrary.rb > Or is RubyGems used solely for downloaded gems like RedCloth? It depends on what you're doing in `mylibrary.rb`. If it's standalone with no dependencies on another gem, then probably not. But more than likely you'll be reusing others code via RG so it's a bit of a moot point. And your little library may cleverly be reusing very useful RG helpers like `Gem.ruby` or `Gem.win_platform?` or `Gem.user_dir` > 3. If I have a file, test.rb , and the first line of code is: > require 'rubygems' , > what file is it requiring? Is it the 'gem' file in C:\Ruby192\bin ? Hey, you're missing out on one of the best ways to learn Ruby; spelunking Ruby's innards via `irb` or `ripl`. Try something this and see what you discover :) C:\>irb irb(main):001:0> puts $LOAD_PATH C:/ruby193/lib/ruby/site_ruby/1.9.1 C:/ruby193/lib/ruby/site_ruby/1.9.1/i386-msvcrt C:/ruby193/lib/ruby/site_ruby C:/ruby193/lib/ruby/vendor_ruby/1.9.1 C:/ruby193/lib/ruby/vendor_ruby/1.9.1/i386-msvcrt C:/ruby193/lib/ruby/vendor_ruby C:/ruby193/lib/ruby/1.9.1 C:/ruby193/lib/ruby/1.9.1/i386-mingw32 => nil irb(main):002:0> Jon --- Fail fast. Fail often. Fail publicly. Learn. Adapt. Repeat. http://thecodeshop.github.com | http://jonforums.github.com/ twitter: @jonforums -- Posted via http://www.ruby-forum.com/.