https://github.com/jish/sinatra-gen
A simple Sinatra generator
https://github.com/jish/sinatra-gen
Last synced: about 1 year ago
JSON representation
A simple Sinatra generator
- Host: GitHub
- URL: https://github.com/jish/sinatra-gen
- Owner: jish
- Created: 2014-11-01T18:21:31.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-01-11T19:42:34.000Z (over 8 years ago)
- Last Synced: 2025-02-12T08:17:57.217Z (over 1 year ago)
- Language: Shell
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
## sinatra-gen -- A simple Sinatra generator
I write small [Ruby][1] web services in [Sinatra][2] every once in a while. I
found myself writing the same boilerplate code over and over again. This bash
script will generate a simple Sinatra app.
[1]: https://www.ruby-lang.org/en/
[2]: https://github.com/sinatra/sinatra/
## Installation
The `sinatra-gen` script will run on its own as a standalone execuatable. You can clone this repository, or download the script.
To clone:
$ git clone git@github.com:jish/sinatra-gen.git
To download:
$ curl "https://raw.githubusercontent.com/jish/sinatra-gen/master/sinatra-gen" > ~/bin/sinatra-gen
### Generating a new project
`sinatra-gen` generates a Sinatra project in the current directory.
$ mkdir foo
$ cd foo
$ sinatra-gen foo
A test suite is created for you.
$ rake test
$ autotest
### What is generated?
When you generate a new project the following files are generated:
$ find .
.
./.autotest
./config.ru
./Gemfile
./Gemfile.lock
./lib
./lib/foo.rb
./Rakefile
./test
./test/foo_test.rb
The implementation
```ruby
# lib/foo.rb
require 'sinatra/base'
class Foo < Sinatra::Base
get "/" do
[200, {}, ["Hello World!"]]
end
end
```
A test
```ruby
# test/foo_test.rb
require 'minitest/autorun'
require 'rack/test'
require 'foo'
class FooTest < MiniTest::Test
include Rack::Test::Methods
def app
Foo.new
end
def test_root_route
get "/"
assert last_response.ok?, "Must respond with '200 OK' at the root route"
end
end
```
A rackup configuration file
```ruby
# config.ru
$LOAD_PATH.unshift("lib") unless $LOAD_PATH.include?("lib")
require 'foo'
run Foo
```
A `Gemfile`
```ruby
# Gemfile
source "https://rubygems.org"
gem "sinatra"
group :development do
gem "rake"
end
group :test do
gem "autotest"
gem "autotest-suffix"
gem "rack-test"
end
```
A `Rakefile`
```ruby
# Rakefile
require 'rake/testtask'
Rake::TestTask.new do |test|
test.libs << "test" << "lib"
test.pattern = "test/**/*_test.rb"
end
```
An `.autotest` configuration file
```ruby
# .autotest
require 'autotest/restart'
require 'autotest/suffix'
Autotest.add_hook :initialize do |at|
at.testlib = "minitest/autorun"
end
```