Link Checker
This Ruby gem enables you to easily check the links in your web site. It will scan each .html
or .htm
file and then check each external link within each file.
It will print the file path in green if all of the external links check out, and red if there are any problems. If there are any problems then it will list each problem URL. It will display yellow warnings for URLs that redirect to other URLs that are good, or red errors if the redirect does not lead to a good URL.
For more detailed information, please see the article Introducing the link-checker Ruby gem on ryanalynporter.com.
Features
- Scans files for links, or
- Crawls web pages for links
- Multi-threaded (fast) with a --max-threads parameter
- Warnings for links that redirect to valid links
- red/green/yellow colored output
- 100% test coverage
- Works great with Octopress or Jekyll
Installation
Add the link-checker
gem to your project's Gemfile
:
gem "link-checker"
Then bundle install
to install the gem.
Usage
You can use the check-links [PATH]
command to specify any directory to scan for HTML files. The default path is ./
.
For example, to check the links for an Octopress site:
check-links 'public'
To check the links for a Jekyll site:
check-links
To crawl a live web site:
check-links 'http://your-site.com'
Return value
The check-links
command will return a successful return value if there are no problems, or it will return an not-successful return code if it finds errors. So you can use the return code to make decisions on the command line. For example:
check-links 'public' && echo 'SUCCESS'
Parameters
If you don't want to see yellow warnings for URLs that redirect to valid URLs, then pass the --no-warnings
parameter:
check-links 'public' --no-warnings
If you want those redirects to be considered errors, even if they redirect to good URLs, then pass the --warnings-are-errors
parameter:
check-links 'public' --warnings-are-errors
The link checker will spawn a new thread for each HTML file, and a new thread for each link within each HTML file. That will get out of hand very quickly if you have a large site, so there is a maximum number of threads. When the maximum number is reached, it will block and wait for an existing thread to complete before spawning a new one. The default maximum threads setting is 100, but you can control that number with the --max-threads
parameter:
check-links 'public' --max-threads 500
...or:
check-links 'public' --max-threads 1
Testing
The link-checker
gem uses RSpec for testing and has 100% test coverage, verified using simplecov.
Run the specs with:
rake spec
API Documentation
The Yardoc documenation is hosted on RubyDoc.info.