ChatGPT解决这个技术问题 Extra ChatGPT

How to make --no-ri --no-rdoc the default for gem install?

I don't use the RI or RDoc output from the gems I install in my machine or in the servers I handle (I use other means of documentation).

Every gem I install installs RI and RDoc documentation by default, because I forget to set --no-ri --no-rdoc.

Is there a way to make those two flags the default?

It's not a good idea though. I recently needed to write code on the road and when I launched gem server I remembered that I had these in my $HOME/.gemrc and really killed me... Google isn't always there.
Depends on the context. It's a great idea if you can tether or you're doing this on a server that doesn't need gem documentation.
with pry one can use show-source as an alternative to generated docs. It will show inline comments, which are generally the same content as the ri/rdoc anyway.

J
Jirapong

You just add the following line to your local ~/.gemrc file (it is in your home folder):

gem: --no-document

by

echo 'gem: --no-document' >> ~/.gemrc

or you can add this line to the global gemrc config file.

Here is how to find it (in Linux):

strace gem source 2>&1 | grep gemrc

The --no-document option is documented in the RubyGems CLI Reference.


Anyway to make this a system wide default without editing /etc/skel and every user's home directory?
/etc/gemrc didn't work for me, but .gemrc did. I wonder if it's rvm specific that it doesn't read the system gemrc?
Yea I'm using RVM and /etc/gemrc doesn't work for me either.
@gdelfino's answer is the least obtrusive
deprecated - please see my answer
h
hd1

From RVM’s documentation:

Just add this line to your ~/.gemrc or /etc/gemrc:

gem: --no-document

Note: The original answer was:

install: --no-rdoc --no-ri 
update: --no-rdoc --no-ri 

This is no longer valid; the RVM docs have since been updated, thus the current answer to only include the gem directive is the correct one.


Since RubyGems version 2.0.0preview2, you can instead use --no-document or --document=rdoc for just rdoc.
I disagree with @mpapis's edit on Jun 20, 2013. He totally changed this answer and there were lots of people that voted for it because they thought it was better than the accepted answer. The person who posted this answer explicitly wrote that they do not want to add those two options to every gem command because it breaks some commands. Before @mpapis totally changed the answer, the code in the answer was: install: --no-rdoc --no-ri\nupdate: --no-rdoc --no-ri @mpapis, why did you change the RVM documentation and also change this answer?
because it is true, there is no reason to keep two separate lines, keeping track of multi project compatibility is tricky - and the RVM docs get sometimes updated when we find something is off - like in this case, it is not true that rubygems would behave wrong, it's all fine to use gem: instead of two separate entries.
Use ruby -e "require 'etc';puts Etc.sysconfdir" to determine the path to your gemrc config file.
J
James Lim

Note that --no-ri and --no-rdoc have been deprecated according to the new guides. The recommended way is to use --no-document in ~/.gemrc or /etc/gemrc.

install: --no-document
update: --no-document

or

gem: --no-document

3
3 revs

On Linux (and probably Mac):

echo 'gem: --no-document' >> ~/.gemrc

This one-liner used to be in comments here, but somehow disappeared.


You should use >> in case the user already has a ~/.gemrc.
Is there a difference between this echo 'gem: --no-doc --no-ri' >> ~/.gemrc and the one you wrote or both have same effect?
@Lykos --no-doc --no-ri is deprecated (see guides.rubygems.org/command-reference/#gem_install for options)
D
Daniel X Moore

# /home/{user}/.gemrc

---
:update_sources: true
:sources:
- http://gems.rubyforge.org/
- http://gems.github.com
:benchmark: false
:bulk_threshold: 1000
:backtrace: false
:verbose: true
gem: --no-ri --no-rdoc

http://webonrails.com/2008/12/03/skiping-installation-of-ri-and-rdoc-documentation-while-installing-gems/


Thanks for this example, perfect to help me strip out the embedded Ruby that I copied & pasted at some point and then resulted in psych errors while installing RubyGems 1.8.10 under Ruby 1.9.2.
Please don't post "first result on Google" replies. The first result on Google now shows your reply, self-proving why you shouldn't do this. Thanks, of course, for your answer.
Actually, "first result on Google" shows: ""first result on Google" shows: ""first result on Google" shows: ""... ERROR: Stack Overflow.
I have to add my thanks for steve's comment (above). I was pulling my hair out as to why I could not install the latest RubyGems. Turns out I had a malformed .gemrc file as well. I kept getting this error: ../.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:148:in `parse': couldn't parse YAML at line 2 column 10 (Psych::SyntaxError)
and if you type "google" into google you'll break the internet
B
Brad Larson

On Windows XP the path to the .gemrc file is

c:\Documents and Settings\All Users\Application Data\gemrc 

and this file is not created by default, you should create it yourself.


Under Windows 7 it's C:\ProgramData\gemrc
the win7 location works for windows 200. Also make sure you have "Hide extensions for known file types" off it wont pick up gemrc.txt.... facepalm
s
skywinder

A oneliner for the windows 7 users:

(echo install: --no-document && echo update: --no-document) >> c:\ProgramData\gemrc


V
Vincent Robert

You can specify default options using the .gemrc configuration file.

Documentation about gem configuration file


C
Community

As mentioned above, put gem: --no-document in your gem file. However, the system-wide gemrc will not always necessarily go into /etc/gemrc. If you are using RVM, or you have Ruby installed under /usr/local/bin, it needs to go in a different location. You can find this location by running irb and typing...

require 'rubygems'
Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE

See the original post on this over here.


Oneliner: ruby -rrubygems -e'puts Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE'
A
Andreas

Step by steps:

To create/edit the .gemrc file from the terminal:

vi  ~/.gemrc

You will open a editor called vi. paste in:

gem: --no-ri --no-rdoc

click 'esc'-button.

type in:

:exit

You can check if everything is correct with this command:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit ~/.gemrc

To clarify, that last command is OS X specific. It opens the ~/.gemrc file in a texteditor.
~ is representation for home directory. (the following stuff in caps are environment variables) Order of checking directories for .gemrc: 1. Use HOME if it is defined. 2. Use USERPROFILE if it is defined. 3. Use HOMEDRIVE and HOMEPATH together if they are defined. 4. Use the path you get by having Ruby expand “~”. 5. Use “C:/” if you are on a Windows machine. That is per: docs.rubygems.org/read/chapter/12
You shouldn't need sudo to edit your own user's ~/.gemrc.
p
peter

On Windows7 the .gemrc file is not present, you can let Ruby create one like this (it's not easy to do this in explorer).

gem sources --add http://rubygems.org

You will have to confirm (it's unsafe). Now the file is created in your userprofile folder (c:\users\)

You can edit the textfile to remove the source you added or you can remove it with

gem sources --remove http://rubygems.org

R
Rajkaran Mishra

For Windows users, Ruby doesn't set up .gemrc file. So you have to create .gemrc file in your home directory (echo %USERPROFILE%) and put following line in it:

gem: --no-document

As already mentioned in previous answers, don't use --no-ri and --no-rdoc cause its deprecated. See it yourself:

gem help install