Tinycms

This gem is used to integrate your Rails app with the Tinycms headless CMS. Add the gem to your Rails app, set the api_key in the initializer, and you're ready to go.

Installation

This gem is meant to be used with Rails apps.

Install the gem and add to the application's Gemfile by executing:

$ bundle add tinycms

Create an initializer in config/initializers/tinycms.rb. And configure the initializer as:

Tinycms.configure do |config|
  config.api_key = `YOUR-API-KEY`
end

To get the api key, sign up for TinyCMS and grab the api key in the settings page.

Usage

The gem is simple, meant to pull down blogs and posts.

Blogs

# get all blogs
Tinycms::Blogs::Api.get_all

# get blog via blog_id or slug
Tinycms::Blogs::Api.get(<blog_id>)
# or
Tinycms::Blogs::Api.api.get(<slug>)

The blogs api will return instance(s) of blog(s) with a list of posts. You can use the post ids that you get in this endpoint to make requests to the posts endpoint.

Posts

# get post via post_id or slug
Tinycms::Posts::Api.get(<post_id>)
Tinycms::Posts::Api.get(<slug>)

The posts api will return an instance of a post with the author information.

Rendering Blogs and Posts

Add to your routes file config/routes.rb the following routes. Customize the routes to your needs/preferences.

Rails.application.routes.draw do
  get "blogs", to: "blogs#index"
  get "blogs/:id", to: "blogs#show"

  get "posts/:id", to: "posts#show"

  # OR...
  resources :blogs, only: [:index, :show]
  resources :posts, only: :show
end

Rendering blogs and posts

class BlogsController < ApplicationController
  def index
    @blogs = Tinycms::Blogs::Api.get_all
  end

  def show
    @blog = Tinycms::Blogs::Api.get(params[:id])
  end
end
# index.html.erb
# link via via blog id
<ul>
  <% @blogs.each do |blog| %>
    <li><%= link_to blog.name, blog_path(id: blog.id) %></li>
  <% end %>
</ul>

# link via via blog slug
<ul>
  <% @blogs.each do |blog| %>
    <li><%= link_to blog.name, blog_path(id: blog.slug) %></li>
  <% end %>
</ul>

# show.html.erb
# link via post id
<ul>
  <% @blog.posts.each do |post| %>
    <li><%= link_to post.title, post_path(id: post.id) %></li>
  <% end %>
</ul>

# link via post slug
<ul>
  <% @blog.posts.each do |post| %>
    <li><%= link_to post.title, post_path(id: post.slug) %></li>
  <% end %>
</ul>

Rendering a post

class PostsController < ApplicationController
  def show
    @post = Tinycms::Posts::Api.get(params[:id])
  end
end
<%= @post.content.html_safe %>

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/typefastco/tinycms. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Tinycms project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.