Introduction
- Jekyll is a popular static site generator for creating blogs, documentation, and personal websites.
- Bundler is a package manager for Ruby, which helps manage dependencies in Jekyll projects.
- This guide goes through the process of installing Jekyll and Bundler in Vanilla OS using apx.
Installing Jekyll and Bundler
- Open your preferred Terminal emulator/application, and follow the steps to install it in a specific container.
Ubuntu container
- Enter the container using the following command:-
apx enter
- Install the required prerequisite packages using the following command:-
sudo apt-get install ruby-full build-essential zlib1g-dev
- After installation, execute the following commands:-
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
- Now, install Jekyll and Bundler using the following command:-
gem install jekyll bundler
-
You have now successfully installed the packages. You can execute them using
apx run <command>
, or directly by entering the container usingapx enter
. -
Optionally, you can export the binary to use it from the host directly without requiring the
apx run
command. You can do this by using the following commands:-
apx export --bin jekyll
apx export --bin bundler
Fedora container
- Enter the container using the following command:-
apx enter --dnf
- Install the required prerequisite packages using the following command:-
sudo dnf install ruby ruby-devel make gcc g++
- Now, install Jekyll using the following command:-
gem install jekyll
-
You have now successfully installed the packages. You can execute them using
apx run --dnf <command>
, or directly by entering the container usingapx enter --dnf
. -
Optionally, you can export the binary to use it from the host directly without requiring the
apx run --dnf
command. You can do this by using the following commands:-
apx export --dnf --bin jekyll
apx export --dnf --bin bundler
Arch Linux container
- Enter the container using the following command:-
apx enter --aur
- Install the required prerequisite packages using the following command:-
sudo pacman -S ruby base-devel
- Now, install Jekyll using the following command:-
gem install jekyll
-
You have now successfully installed the packages. You can execute them using
apx run --aur <command>
, or directly by entering the container usingapx enter --aur
. -
Optionally, you can export the binary to use it with the host directly without requiring the
apx run --aur
command. You can do this by using the following commands:-
apx export --aur --bin jekyll
apx export --aur --bin bundler
Testing sites from a repository locally
- Clone a repository using
git
orgh
. - Move to the destination of the cloned directory using
cd <path/to/directory>
. - Run
bundler install
to install necessary packages (This step is required only once and doesn’t require re-running it in future. You must have a Gemfile in the repository for this to work). - Run
bundler exec jekyll build
to build the page to./_site
once. Then you can either test the pages manually or use thebundler exec jekyll serve
command. - Run
bundler exec jekyll serve
to build your site any time a source file changes and serve it locally.- Navigate to
http://127.0.0.1:4000/
orhttp://localhost:4000/
in your browser to preview and test the page.
- Navigate to
- Now, commit the changes using
git
and create a PR in GitHub.
Tip:-
- You can test your pages on your phone using
bundler exec jekyll serve --host=<ip>
. - Using
0.0.0.0
instead of a specific IP binds port 4000 to any interface, which is prone to be blocked by your routers firewalls. That’s why we recommended using a particular IP address with the--host
flag. After executing the command in any browser on your phone, go to this address<ip>:4000
. - For example, if the IP you used is
192.168.0.123
, you will need to visit192.168.0.123:4000
on your mobile.
Conclusion
- You have now successfully installed Jekyll & Bundler via the command line and successfully served and tested your site locally.