Sinatra Cyclist Multi
This is a fork of the original gem vrish88/sinatra_cyclist, thank you vrish88.
Added option to use multiple cycled routes.
cycled routes | routes pages | cycle time |
---|---|---|
first-cycled-route | ['dashboard1', 'dashboard2', 'dash3'] | 10 |
another-cycled-route | ['dashboard12', 'dashboardY'] | 5 |
prod-cycle-route | ['dashi', 'dashou', 'dashbord36'] | 45 |
Installation
Add this line to your application's Gemfile:
gem 'sinatra_cyclist_multi'
And then execute:
$ bundle
Or install it yourself as:
$ gem install sinatra_cyclist_multi
Installation into your code depends on how you are using Sinatra.
Configuration
If you need only one cycled route you can use vrish88/sinatra_cyclist gem or set only one cycled route:
set :cycles_configuration, [
{cycled_route: '_cycle', routes: [:page1, :page2], cycle_duration: 15},
{cycled_route: '_cycle2', routes: [:page12, :page3, :page4], cycle_duration: 5},
{cycled_route: '_prod', routes: [:page7, :page4, :page5, :page6], cycle_duration: 45},
]
Dashing
If you are using dashing update your config.ru
to look something like:
require "sinatra/cyclist"
require 'dashing'
configure do
set :auth_token, 'YOUR_AUTH_TOKEN'
helpers do
def protected!
# Put any authentication code you want in here.
# This method is run before accessing any resource.
end
end
end
map Sinatra::Application.assets_prefix do
run Sinatra::Application.sprockets
end
set :cycles_configuration, [
{cycled_route: '_cycle', routes: [:page1, :page2], cycle_duration: 15},
{cycled_route: '_cycle2', routes: [:page12, :page3, :page4], cycle_duration: 5},
{cycled_route: '_prod', routes: [:page7, :page4, :page5, :page6], cycle_duration: 45},
]
run Sinatra::Application
Require
sinatra_cyclist_multi
beforedashing
otherwise you will see this error:No such file or directory - sample/dashboards/_cycle.erb
Set the
routes_to_cycle_through
before running the application.
Classic Applications
Require the gem and specify the routes you want to cycle through.
require "sinatra"
require "sinatra/cyclist"
set :cycles_configuration, [
{cycled_route: '_cycle', routes: [:page1, :page2], cycle_duration: 30},
]
get "/page_1" do
"Page 1"
end
get "/page_2" do
"Page 2"
end
Modular Applications
Require the gem, explicitly register the extension, and specify the routes.
require "sinatra/base"
require "sinatra/cyclist"
class MyApp < Sinatra::Base
register Sinatra::Cyclist
set :cycles_configuration, [
{cycled_route: '_cycle', routes: [:page1, :page2], cycle_duration: 30},
]
get "/page_1" do
"Page 1"
end
get "/page_2" do
"Page 2"
end
end
Usage
Now visit one of your configured cycled routes /_cycle/#{cycled_route}
to start cycling!
You can also specify a duration (in seconds) in the params to the cycle action
http://sinatra_app.com/_cycle/#{cycled_route}?duration=10
/!\ Do not use this gem with the original, it will conflict /!\
Try it with on Dashing
You can try with the Dockerfile in test folder. Considering you have a working docker installation you can run:
cd sinatra_cyclist_multi/test
docker build -t nfaa/cyclist . && docker run --name cyclist -p8080:3030 nfaa/cyclist
There are three cycled routes configured:
http://{docker host ip}:8080/_cycle/_cycle
http://{docker host ip}:8080/_cycle/cycle
http://{docker host ip}:8080/_cycle/prod
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request