When using Ruby 1.8.7 and Kramdown 0.14.0 and newer, the following build error would occur if any page in your site contained a `<name@example.com>` email address link: Generating... Conversion error: There was an error converting 'contribute.markdown'. /Users/nick/Documents/puppet-docs/vendor/bundle/ruby/1.8/gems/kramdown-1.0.2/lib/kramdown/converter/html.rb:404:in `obfuscate': undefined method `encoding' for "mailto":String (NoMethodError) See also: http://rubyforge.org/tracker/index.php?func=detail&aid=29750&group_id=7403&atid=28673 This problem traced back to the following line in the Kramdown source: result.force_encoding(text.encoding) if result.respond_to?(:force_encoding) Strings aren't supposed to respond to the :force_encoding method in Ruby < 1.9, but lib/jekyll/core_ext.rb was modifying the string class like so: def force_encoding(enc) self end Strings still won't respond to :encoding, though, so we get an error when Kramdown tries to read the incoming encoding and everything will blow up. An ack of the codebase suggests that this was only added so we could force an encoding for rdiscount on 1.9 without having to check whether we were running under 1.8. Since testing for said method to learn whether one is running under a 1.9-like encoding regime seems to be a thing in libraries we rely on, we shouldn't insert this dummy method without also dummying every other part of the Ruby 1.9+ encoding system. This commit removes the dummy :force_encoding method to stop poisoning core classes for libraries we use, and moves the adjustment for 1.9-like encoding regimes to the one place where it's needed. |
||
---|---|---|
bin | ||
features | ||
lib | ||
script | ||
site | ||
test | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.markdown | ||
Gemfile | ||
History.markdown | ||
LICENSE | ||
README.markdown | ||
Rakefile | ||
cucumber.yml | ||
jekyll.gemspec |
README.markdown
Jekyll
By Tom Preston-Werner, Nick Quaranto, and many awesome contributors!
Jekyll is a simple, blog aware, static site generator. It takes a template directory (representing the raw form of a website), runs it through Textile or Markdown and Liquid converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server. This is also the engine behind GitHub Pages, which you can use to host your project's page or blog right here from GitHub.
Getting Started
- Install the gem
- Read up about its Usage and Configuration
- Take a gander at some existing Sites
- Fork and Contribute your own modifications
- Have questions? Post them on the Mailing List
Diving In
- Migrate from your previous system
- Learn how the YAML Front Matter works
- Put information on your site with Variables
- Customize the Permalinks your posts are generated with
- Use the built-in Liquid Extensions to make your life easier
- Use custom Plugins to generate content specific to your site
Runtime Dependencies
- Commander: Command-line interface constructor (Ruby)
- Colorator: Colorizes command line output (Ruby)
- Classifier: Generating related posts (Ruby)
- Directory Watcher: Auto-regeneration of sites (Ruby)
- Kramdown: Markdown-superset converter (Ruby)
- Liquid: Templating system (Ruby)
- Maruku: Default markdown engine (Ruby)
- Pygments.rb: Syntax highlighting (Ruby/Python)
- RedCarpet: Markdown engine (Ruby)
- Safe YAML: YAML Parser built for security (Ruby)
Developer Dependencies
- Launchy: Cross-platform file launcher (Ruby)
- RDiscount: Discount Markdown Processor (Ruby)
- RedCloth: Textile support (Ruby)
- RedGreen: Nicer test output (Ruby)
- RR: Mocking (Ruby)
- Shoulda: Test framework (Ruby)
- SimpleCov: Coverage framework (Ruby)
License
See LICENSE.