Project

cuba-sugar

0.02
No commit activity in last 3 years
No release in over 3 years
Useful stuff to use with cuba
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.1.3
~> 1.3.3

Runtime

~> 3.3
~> 1.7
~> 2.4
 Project Readme

Cuba/Sugar

Build Status

n. bundled sugar for cuba

"See this fucking sugar road? I just fucking made it"

Description

It's like contrib stuff but with a cooler name. Provides helpers and utilities to use with cuba.

Usage

Like any other cuba app, but provides:

You have two choices:

  • require only the tool you want eg: require 'cuba/sugar/content_for'
  • require all the tools eg: require 'cuba/sugar'

content_for

require "cuba"
require "cuba/sugar/content_for"

Cuba.plugin Cuba::Sugar::ContentFor

In your views to define where the content block will be rendered

<% yield_for :menu %>

# And when you want to define a content
<% content_for :menu do %>
  <ul id="menu">
    <li class="active">Home</li>
    <li>Users</li>
  </ul>
<% end %>

as

require "cuba"
require "cuba/sugar/as"

Cuba.use Rack::Session::Cookie

Cuba.plugin Cuba::Sugar::As
Cuba.define do
  on post do
    on "users" do
      # create user
      as 201, {"Content-Location" => "http://somewhere.com/users/705"} do
        "user #{user.id} created"
      end
    end
  end
end

as_json

require "cuba"
require "cuba/sugar/as"

Cuba.use Rack::Session::Cookie

Cuba.plugin Cuba::Sugar::As
Cuba.define do
  on get do
    on "weather" do
      as_json do
        {
          city:         'La Habana',
          temperature:  '19 °C',
          pressure:     '1014 hPa',
        }
      end
    end
  end
end

csrf_tag && csrf_token

In the forms:

<%= csrf_tag %>

In the code:

require "cuba"
require "cuba/sugar/csrf"

Cuba.use Rack::Csrf

Cuba.plugin Cuba::Sugar::Csrf
Cuba.define do
  # Automatic csrf validation
  on post
  end
end

helpers

require "cuba"
require "cuba/sugar"

Cuba.plugin Cuba::Sugar
Cuba.define do
  helpers do
    def now
      Time.now
    end
  end

  on "time" do
    as { "The current time is: #{now}" }
  end
end

subdomain

require "cuba"
require "cuba/sugar/routes"

Cuba.plugin Cuba::Sugar::Routes
Cuba.define do
  on subdomain("wsdl") do
    run WSDL
  end

  on subdomain("api") do
    on root do
      as do
        "Welcome to API"
      end
    end

    on "users" do
      as_json do
        Users.all.to_json
      end
    end
  end
end

Contributors

Installation

$ gem install cuba-sugar