Skip to main content

Ruby

Gems

A gem is code you can include in Ruby projects. It allows you to package up functionality and share it across other projects or with other people. Gems can perform functionality such as:

Gemfile

A Gemfile is a list of gems required for your site. For a simple Jekyll site it might look something like this:

source "https://rubygems.org"

gem "jekyll"

group :jekyll_plugins do
gem "jekyll-feed"
gem "jekyll-seo-tag"
end

Bundler

Bundler installs the gems in your Gemfile. It's not a requirement for you to use a Gemfile and bundler however it's highly recommended as it ensures you're running the same version of Jekyll and Jekyll plugins across different environments.

gem install bundler installs Bundler. You only need to install it once - not every time you create a new Jekyll project. Here are some additional details:

If you're using a Gemfile you would first run bundle install to install the gems, then bundle exec jekyll serve to build your site. This guarantees you're using the gem versions set in the Gemfile. If you're not using a Gemfile you can just run jekyll serve.

# https://jekyllrb.com/tutorials/using-jekyll-with-bundler/
mkdir my-jekyll-website
cd my-jekyll-website
bundle init

bundle add jekyll

bundle exec jekyll new --force --skip-bundle .
bundle install

bundle exec jekyll serve

bundle exec jekyll serve --host 0.0.0.0 --port 8000 --incremental

https://jekyllrb.com/docs/ruby-101

Quickstart

irb - Interactive ruby

Commands

irb(main):001:0> puts "Hello World"

def hi(name)
puts "Hello #{name}!"
end

hi("deepak")

test.rb |-
#!/usr/bin/env ruby
class MegaGreeter
attr_accessor :names
# Create the object
def initialize(names = "World")
@names = names
end
# Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @names.respond_to?("each")
# @names is a list of some kind, iterate!
@names.each do |name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end
# Say bye to everybody
def say_bye
if @names.nil?
puts "..."
elsif @names.respond_to?("join")
# Join the list elements with commas
puts "Goodbye #{@names.join(", ")}. Come back soon!"
else
puts "Goodbye #{@names}. Come back soon!"
end
end
end

if __FILE__ == $0
mg = MegaGreeter.new
mg.say_hi
mg.say_bye
# Change name to be "Zeke"
mg.names = "Zeke"
mg.say_hi
mg.say_bye
# Change the name to an array of names
mg.names = ["Albert", "Brenda", "Charles",
"Dave", "Engelbert"]
mg.say_hi
mg.say_bye
# Change to nil
mg.names = nil
mg.say_hi
mg.say_bye
end

# Run - ruby test.rb

https://www.ruby-lang.org/en/documentation/quickstart

Frameworks

https://www.toptal.com/ruby/ruby-pattern-matching-tutorial

Ruby on rails

https://www.toptal.com/ruby-on-rails/ruby-on-rails-ecommerce-tutorial

Sinatra

Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort

http://sinatrarb.com

RefineryCMS

An open source content management system for Rails 5.1+ http://refinerycms.com

Solidus

A free, open-source ecommerce platform that gives you complete control over your store. https://solidus.io https://github.com/solidusio/solidus

Christopher Hitchens on Ruby on Rails - YouTube