Nicolas Shu
Nicolas Shu

Reputation: 337

Jekyll Website won't load

I've been trying for a while to get a Jekyll website running on Github Pages, but it doesn't seem to work. I've been getting the error

Your site is having problems building: The symbolic link /vendor/bundle/ruby/2.3.0/gems/ffi-1.9.18/ext/ffi_c/libffi-x86_64-linux-gnu/include/ffitarget.h targets a file which does not exist within your site's repository. For more information, see https://help.github.com/articles/page-build-failed-symlink-does-not-exist-within-your-site-s-repository/.

I have already tried it with 9 different Jekyll themes, but none of them seem to work, so I'm clearly doing something wrong. Here are the steps that I am taking

1) Create a new repo and put the files from a Jekyll Theme there, OR fork it from another repo (e.g. https://github.com/iwiedenm/jekyll-theme-massively-src)

2) Git pull it into my computer and make sure I'm on the gh-pages branch

3) Run bundle install --path vendor/bundle

4) Make sure it was built with bundle exec jekyll serve

5) Once it looks good, upload it into Github git add * git commit -m 'Test' git push

Then I go to the repo in the browser and I see the error above, and I can't see the website because of that missing "ffitarget.h" file. When I go look for it in that directory, I am able to find it, but Github doesn't seem to be able to find it.

Nick Shu

PS: Feel free to mark this as a duplicate. I have seen other pages, such as this and I tried it, but it didn't work.

Upvotes: 2

Views: 1081

Answers (2)

David Jacquel
David Jacquel

Reputation: 52829

Github page will use local gems in vendor. If you commit them, you will have errors each time github pages tries to resolve symbolic links.

From a fresh repository

Add vendor/** in your .gitignore file before you do a git add . *.

The dot in git add . * forces git to stage dotfiles (.gitignore, ...).

From an already existing repository containing gems in a vendor folder

  • Add vendor/** in your .gitignore file,

  • Remove vendor/ files from versioning, git rm --cached -r vendor/

You can now stage, commit and push

git add . *
git commit -m 'remove vendor from versioning'
git push origin master`

Notes :

  • you can publish master branch content, as gh-pages branch is no more mandatory. See documentation.
  • unless you have special needs like debuging, it's not necessary to download gems for each of your project. You can just do a bundle install.

Upvotes: 5

ashmaroli
ashmaroli

Reputation: 5434

Ensure the vendor/bundle/ directory has been excluded..

By default, Jekyll excludes that directory and therefore, it would not care about the contents in your vendor directory..

When you fork/clone a repo, there's a possibility that the exclude: list has been customized (therefore overriding the default setting). You can ensure vendor/bundle/ is ignored by Jekyll by adding it to your custom exclude list:

# Exclude list
exclude:
- README.md
- Gemfile
- Gemfile.lock
- node_modules
- gulpfile.js
- package.json
- _site
- src
- vendor
- CNAME
- LICENSE
- Rakefile
- old
- vendor/bundle/

To locally emulate how the site is built on GitHub Pages, you can build using the --safe switch:

bundle exec jekyll serve --safe

Upvotes: 2

Related Questions