About the main RubyGems application, gem

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 F., Rich Kilmer, Jim W. 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 ?

  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?

  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 ?

Thanks guys!

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 F., Rich Kilmer, Jim W. 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,

  1. 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

  1. 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 :slight_smile:

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

Jon F. wrote in post #1030863:
n 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 :slight_smile:

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>

Hi Jon! I am familiar with IRB and ‘puts $LOAD_PATH’. I fail to see
your point. I still don’t know what file is being required in:

require ‘rubygems’

Is it the rubygems.rb in C:\Ruby192\lib\ruby\1.9.1 ?

If it is, then why is that when I cut it and paste it somewhere else
(e.g. on the Desktop), the program which has the require ‘rubygems’ code
would still run?

Thanks!

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:
[…]

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 ?

That is the RubyGems wrapper for the RubyGems CLI interface.

That script is called from gem.bat

  1. 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?

gem and gem.bat are the CLI of RubyGems

Please see what RubyGems is for:

  1. 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 ?

No, is loading RubyGems loading mechanism. It will allow you libraries
distributed as gems using simple “require”


Luis L.

On 11/9/2011 00:23, Kaye Ng wrote:

C:/ruby193/lib/ruby/site_ruby/1.9.1
Hi Jon! I am familiar with IRB and ‘puts $LOAD_PATH’. I fail to see
your point. I still don’t know what file is being required in:

require ‘rubygems’

Is it the rubygems.rb in C:\Ruby192\lib\ruby\1.9.1 ?

If it is, then why is that when I cut it and paste it somewhere else
(e.g. on the Desktop), the program which has the require ‘rubygems’ code
would still run?

First of all, the version of Ruby you appear to be using (1.9.2)
automatically requires in the rubygems file, so you don’t need to do it
yourself in your scripts unless you want to ensure that they continue to
run on older Ruby versions (1.8.x).

If you would like to see where rubygems.rb lives for your Ruby instance,
try running the following:

ruby -e “puts $”"

That will print out the list of loaded files, and you should see full
path to rubygems.rb in there.

-Jeremy

On Fri, Nov 11, 2011 at 8:36 AM, Kaye Ng [email protected] wrote:

Hey Luis and other experts, I would really appreciate it if you could be
more specific about certain names. Like CLI, is it the Common Language
Infrastructure?

I don’t have context and without context the first thing I would be
thinking of is “command line interface”.

Kind regards

robert

Thanks guys!

Hey Luis and other experts, I would really appreciate it if you could be
more specific about certain names. Like CLI, is it the Common Language
Infrastructure?

Anyway, I’ll check out the website you gave me.

Thanks a lot.

On Fri, Nov 11, 2011 at 04:36:36PM +0900, Kaye Ng wrote:

Hey Luis and other experts, I would really appreciate it if you could be
more specific about certain names. Like CLI, is it the Common Language
Infrastructure?

With this one email, many of us will not know what prompted this message
of yours. In almost every case where you see “CLI” used in the Ruby
community, however, I rather suspect you’ll find it refers to “Command
Line Interface”, as Robert K. already pointed out.

I made a similar mistaken assumption when I was new to Unix-like
operating systems – thinking CLI referred to something other than the
shell.

-----Messaggio originale-----
Da: Stu [mailto:[email protected]]
Inviato: sabato 12 novembre 2011 19:08
A: ruby-talk ML
Oggetto: Re: CLI, what is it?


Caselle da 1GB, trasmetti allegati fino a 3GB e in piu’ IMAP, POP3 e
SMTP autenticato? GRATIS solo con Email.it http://www.email.it/f

Sponsor:
Conto Arancio al 4,20%. Soldi sempre disponibili, zero spese, aprilo in
due minuti!
Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=11920&d=29-12

-----Messaggio originale-----
Da: Kaye Ng [mailto:[email protected]]
Inviato: venerd 11 novembre 2011 08:37
A: ruby-talk ML
Oggetto: CLI, what is it?

Thanks guys!

Hey Luis and other experts, I would really appreciate it if you could be
more specific about certain names. Like CLI, is it the Common Language
Infrastructure?

Anyway, I’ll check out the website you gave me.

Thanks a lot.


Posted via http://www.ruby-forum.com/.


Caselle da 1GB, trasmetti allegati fino a 3GB e in piu’ IMAP, POP3 e
SMTP autenticato? GRATIS solo con Email.it http://www.email.it/f

Sponsor:
Conto Arancio al 4,20%. Soldi sempre disponibili, zero spese, aprilo in
due minuti!
Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid920&d)-12