clearwater-roda 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/README.md +29 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +6 -0
- data/clearwater-roda.gemspec +23 -0
- data/exe/clearwater-roda +29 -0
- data/lib/clearwater/roda/application.rb +136 -0
- data/lib/clearwater/roda/template.rb +34 -0
- data/lib/clearwater/roda/version.rb +5 -0
- data/lib/clearwater/roda.rb +12 -0
- data/templates/Gemfile +11 -0
- data/templates/Rakefile +13 -0
- data/templates/app.rb +30 -0
- data/templates/assets/js/app.rb +125 -0
- data/templates/config.ru +6 -0
- data/templates/dev +5 -0
- metadata +107 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 5aa8a6d72425620e259a51f9b0bf48d092744bbf
|
|
4
|
+
data.tar.gz: 11ee3b36747c99c46cdc860e5a92c098bfa47571
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 4a5adf5cc6bb97edc91448ec367d955ddfc61190fdc437b465790146fb9a8f41c2508831663991fa7dbbb06dc684c143f396993fe3bb52dc82ada1aa3c0afea3
|
|
7
|
+
data.tar.gz: f9df03eba77c6e7af91d069f0fa85731e5c9cc780856befdcac3ec3aa599761d222f35874fb67c3bb6a33a89eeed802076067edfcce53bc77e525165c04352dc
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Contributor Code of Conduct
|
|
2
|
+
|
|
3
|
+
As contributors and maintainers of this project, and in the interest of
|
|
4
|
+
fostering an open and welcoming community, we pledge to respect all people who
|
|
5
|
+
contribute through reporting issues, posting feature requests, updating
|
|
6
|
+
documentation, submitting pull requests or patches, and other activities.
|
|
7
|
+
|
|
8
|
+
We are committed to making participation in this project a harassment-free
|
|
9
|
+
experience for everyone, regardless of level of experience, gender, gender
|
|
10
|
+
identity and expression, sexual orientation, disability, personal appearance,
|
|
11
|
+
body size, race, ethnicity, age, religion, or nationality.
|
|
12
|
+
|
|
13
|
+
Examples of unacceptable behavior by participants include:
|
|
14
|
+
|
|
15
|
+
* The use of sexualized language or imagery
|
|
16
|
+
* Personal attacks
|
|
17
|
+
* Trolling or insulting/derogatory comments
|
|
18
|
+
* Public or private harassment
|
|
19
|
+
* Publishing other's private information, such as physical or electronic
|
|
20
|
+
addresses, without explicit permission
|
|
21
|
+
* Other unethical or unprofessional conduct
|
|
22
|
+
|
|
23
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
|
24
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
25
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
26
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
|
27
|
+
threatening, offensive, or harmful.
|
|
28
|
+
|
|
29
|
+
By adopting this Code of Conduct, project maintainers commit themselves to
|
|
30
|
+
fairly and consistently applying these principles to every aspect of managing
|
|
31
|
+
this project. Project maintainers who do not follow or enforce the Code of
|
|
32
|
+
Conduct may be permanently removed from the project team.
|
|
33
|
+
|
|
34
|
+
This code of conduct applies both within project spaces and in public spaces
|
|
35
|
+
when an individual is representing the project or its community.
|
|
36
|
+
|
|
37
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
38
|
+
reported by contacting a project maintainer at jgaskins@gmail.com. All
|
|
39
|
+
complaints will be reviewed and investigated and will result in a response that
|
|
40
|
+
is deemed necessary and appropriate to the circumstances. Maintainers are
|
|
41
|
+
obligated to maintain confidentiality with regard to the reporter of an
|
|
42
|
+
incident.
|
|
43
|
+
|
|
44
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
45
|
+
version 1.3.0, available at
|
|
46
|
+
[http://contributor-covenant.org/version/1/3/0/][version]
|
|
47
|
+
|
|
48
|
+
[homepage]: http://contributor-covenant.org
|
|
49
|
+
[version]: http://contributor-covenant.org/version/1/3/0/
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Clearwater::Roda
|
|
2
|
+
|
|
3
|
+
This gem helps you generate a Clearwater/Roda app from scratch.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
$ gem install clearwater-roda
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
$ clearwater-roda new my_app
|
|
12
|
+
|
|
13
|
+
## Development
|
|
14
|
+
|
|
15
|
+
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.
|
|
16
|
+
|
|
17
|
+
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 tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
18
|
+
|
|
19
|
+
## Contributing
|
|
20
|
+
|
|
21
|
+
1. Fork it
|
|
22
|
+
1. Branch it
|
|
23
|
+
1. Hack it
|
|
24
|
+
1. Save it
|
|
25
|
+
1. Commit it
|
|
26
|
+
1. Push it
|
|
27
|
+
1. Pull-request it
|
|
28
|
+
|
|
29
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/clearwater-rb/clearwater-roda. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "clearwater/roda"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'clearwater/roda/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "clearwater-roda"
|
|
8
|
+
spec.version = Clearwater::Roda::VERSION
|
|
9
|
+
spec.authors = ["Jamie Gaskins"]
|
|
10
|
+
spec.email = ["jgaskins@gmail.com"]
|
|
11
|
+
|
|
12
|
+
spec.summary = %q{Generate a Roda/Clearwater app from scratch}
|
|
13
|
+
spec.homepage = "https://github.com/clearwater-rb/clearwater-roda"
|
|
14
|
+
|
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
16
|
+
spec.bindir = "exe"
|
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
18
|
+
spec.require_paths = ["lib"]
|
|
19
|
+
|
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
22
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
23
|
+
end
|
data/exe/clearwater-roda
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'clearwater/roda'
|
|
3
|
+
|
|
4
|
+
# If this grows beyond this simple app generator, may want to use something like
|
|
5
|
+
# Thor. But for now, this is all we really need.
|
|
6
|
+
|
|
7
|
+
command, app_name, _ = ARGV
|
|
8
|
+
|
|
9
|
+
usage = <<-USAGE
|
|
10
|
+
Usage:
|
|
11
|
+
$ clearwater-roda new APP_NAME'
|
|
12
|
+
# Generates a Clearwater/Roda app with the specified name.
|
|
13
|
+
$ clearwater-roda -v'
|
|
14
|
+
# Display version and exit
|
|
15
|
+
$ clearwater-roda -h'
|
|
16
|
+
# Display usage info
|
|
17
|
+
USAGE
|
|
18
|
+
|
|
19
|
+
case command
|
|
20
|
+
when 'new'
|
|
21
|
+
Clearwater::Roda.build_app app_name
|
|
22
|
+
when '-v'
|
|
23
|
+
puts Clearwater::Roda::VERSION
|
|
24
|
+
when '-h'
|
|
25
|
+
puts usage
|
|
26
|
+
else
|
|
27
|
+
warn usage
|
|
28
|
+
exit 1
|
|
29
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
require 'clearwater/roda/template'
|
|
4
|
+
|
|
5
|
+
module Clearwater
|
|
6
|
+
module Roda
|
|
7
|
+
class Application
|
|
8
|
+
DirectoryAlreadyExists = Class.new(StandardError)
|
|
9
|
+
|
|
10
|
+
attr_reader :name
|
|
11
|
+
|
|
12
|
+
def initialize name
|
|
13
|
+
@name = name
|
|
14
|
+
@previous_dirs = []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def build
|
|
18
|
+
dir_must_not_exist!
|
|
19
|
+
|
|
20
|
+
mkdir
|
|
21
|
+
chdir
|
|
22
|
+
write_files
|
|
23
|
+
bundle
|
|
24
|
+
git_init
|
|
25
|
+
git_commit
|
|
26
|
+
chdir_back
|
|
27
|
+
|
|
28
|
+
puts
|
|
29
|
+
puts <<-EOF
|
|
30
|
+
Thanks for using Clearwater::Roda!
|
|
31
|
+
|
|
32
|
+
To run your new app:
|
|
33
|
+
|
|
34
|
+
$ cd #{dir_name}
|
|
35
|
+
$ ./dev
|
|
36
|
+
|
|
37
|
+
Then point your browser to http://localhost:9292/
|
|
38
|
+
|
|
39
|
+
The Clearwater app lives in #{Dir.pwd}/#{dir_name}/assets/js/app.rb. To compile
|
|
40
|
+
your assets for production, simply run:
|
|
41
|
+
|
|
42
|
+
$ rake assets:precompile
|
|
43
|
+
|
|
44
|
+
EOF
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def mkdir
|
|
48
|
+
FileUtils.mkdir_p dir_name
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def chdir
|
|
52
|
+
@previous_dirs.push Dir.pwd
|
|
53
|
+
FileUtils.chdir dir_name
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def chdir_back
|
|
57
|
+
FileUtils.chdir @previous_dirs.pop
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def bundle
|
|
61
|
+
system "bundle -j12"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def git_init
|
|
65
|
+
`git init`
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def git_commit
|
|
69
|
+
`git add --all .`
|
|
70
|
+
`git commit -m 'Hello world!'`
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def write_files
|
|
74
|
+
files = %W(
|
|
75
|
+
Gemfile
|
|
76
|
+
config.ru
|
|
77
|
+
assets/js/app.rb
|
|
78
|
+
dev
|
|
79
|
+
Rakefile
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
files.each do |template_name|
|
|
83
|
+
Template.new(
|
|
84
|
+
template_path(template_name),
|
|
85
|
+
template_name,
|
|
86
|
+
template_options,
|
|
87
|
+
).write
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
app_filename = "#{underscore(name)}.rb"
|
|
91
|
+
Template.new(
|
|
92
|
+
template_path('app.rb'),
|
|
93
|
+
app_filename,
|
|
94
|
+
template_options,
|
|
95
|
+
).write
|
|
96
|
+
|
|
97
|
+
FileUtils.chmod 0744, 'dev'
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def template_options
|
|
101
|
+
{
|
|
102
|
+
underscored_name: dir_name,
|
|
103
|
+
titleized_name: class_name,
|
|
104
|
+
}
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def template_path(name)
|
|
108
|
+
"#{File.expand_path('../../../../templates', __FILE__)}/#{name}"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def underscore name
|
|
112
|
+
name.gsub(/\w[A-Z]/) { |match| "#{match[0]}_#{match[1]}" }.downcase
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def titleize name
|
|
116
|
+
name = name.gsub(/_[a-z]/) { |match| match[1].upcase }
|
|
117
|
+
name[0] = name[0].upcase
|
|
118
|
+
name
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def dir_must_not_exist!
|
|
122
|
+
if File.exist? dir_name
|
|
123
|
+
raise DirectoryAlreadyExists, "directory #{dir_name} already exists!"
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def class_name
|
|
128
|
+
titleize name
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def dir_name
|
|
132
|
+
underscore name
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Clearwater
|
|
4
|
+
module Roda
|
|
5
|
+
class Template
|
|
6
|
+
attr_reader :input, :output, :options
|
|
7
|
+
|
|
8
|
+
def initialize input_filename, output_filename, options={}
|
|
9
|
+
@input = input_filename
|
|
10
|
+
@output = output_filename
|
|
11
|
+
@options = options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def write
|
|
15
|
+
if output.respond_to? :write
|
|
16
|
+
output.write content
|
|
17
|
+
else
|
|
18
|
+
FileUtils.mkdir_p File.dirname(output)
|
|
19
|
+
File.write output, content
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def content
|
|
24
|
+
string = if input.respond_to? :read
|
|
25
|
+
input.read
|
|
26
|
+
else
|
|
27
|
+
File.read(input)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
string % options
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
data/templates/Gemfile
ADDED
data/templates/Rakefile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'bundler/setup'
|
|
2
|
+
require 'opal'
|
|
3
|
+
require 'clearwater'
|
|
4
|
+
require 'roda/opal_assets'
|
|
5
|
+
|
|
6
|
+
# Keep a single asset compiler in case we want to use it for multiple tasks.
|
|
7
|
+
assets = Roda::OpalAssets.new(env: :production)
|
|
8
|
+
|
|
9
|
+
desc 'Precompile assets for production'
|
|
10
|
+
task 'assets:precompile' do
|
|
11
|
+
assets << 'app.js'
|
|
12
|
+
assets.build
|
|
13
|
+
end
|
data/templates/app.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'roda'
|
|
2
|
+
require 'roda/opal_assets'
|
|
3
|
+
require 'opal'
|
|
4
|
+
require 'clearwater'
|
|
5
|
+
|
|
6
|
+
class %{titleized_name} < Roda
|
|
7
|
+
plugin :public
|
|
8
|
+
|
|
9
|
+
assets = Roda::OpalAssets.new
|
|
10
|
+
|
|
11
|
+
route do |r|
|
|
12
|
+
r.public
|
|
13
|
+
assets.route r
|
|
14
|
+
|
|
15
|
+
<<-HTML
|
|
16
|
+
<!DOCTYPE html>
|
|
17
|
+
<html>
|
|
18
|
+
<head>
|
|
19
|
+
<meta charset="utf-8" />
|
|
20
|
+
<title>%{titleized_name}</title>
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body>
|
|
24
|
+
<div id="app"></div>
|
|
25
|
+
#{assets.js 'app.js'}
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
28
|
+
HTML
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require 'opal'
|
|
2
|
+
require 'clearwater'
|
|
3
|
+
|
|
4
|
+
class Layout
|
|
5
|
+
include Clearwater::Component
|
|
6
|
+
|
|
7
|
+
def render
|
|
8
|
+
# Equivalent HTML:
|
|
9
|
+
# <div>
|
|
10
|
+
# <h1 class="heading">
|
|
11
|
+
# <a href="/">Hello, Clearwater</a>
|
|
12
|
+
# </h1>
|
|
13
|
+
# <nav>
|
|
14
|
+
# <a href="/foo">Foo</a>
|
|
15
|
+
# <a href="/bar">Bar</a>
|
|
16
|
+
# <a href="/bar/baz">Baz</a>
|
|
17
|
+
# </nav>
|
|
18
|
+
# <%%= outlet || HomePage.new.render %%>
|
|
19
|
+
# </div>
|
|
20
|
+
div([
|
|
21
|
+
h1({ class_name: 'heading' }, [
|
|
22
|
+
Link.new({ href: '/' }, 'Hello, Clearwater!'),
|
|
23
|
+
]),
|
|
24
|
+
nav([
|
|
25
|
+
# The Link component is how you navigate between routes in Clearwater
|
|
26
|
+
# apps. This leaves the `a` helper method to do a typical hard link.
|
|
27
|
+
Link.new({ href: '/foo' }, 'Foo'),
|
|
28
|
+
|
|
29
|
+
# One of the nice things about defining your UI with code instead of
|
|
30
|
+
# markup is that adding whitespace doesn't look out of place.
|
|
31
|
+
' ',
|
|
32
|
+
Link.new({ href: '/bar' }, 'Bar'),
|
|
33
|
+
' ',
|
|
34
|
+
Link.new({ href: '/bar/baz' }, 'Baz'),
|
|
35
|
+
]),
|
|
36
|
+
|
|
37
|
+
# The `outlet` method is a method for routing targets to render their
|
|
38
|
+
# child routes, similar to the same keyword in Ember.js templates. If
|
|
39
|
+
# there is no child route, we render a HomePage component.
|
|
40
|
+
outlet || HomePage.new,
|
|
41
|
+
])
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# This is our default homepage component. Note that in the Layout component, we
|
|
46
|
+
# render this by calling HomePage.new. This means we get a brand-new HomePage
|
|
47
|
+
# component each time we render, despite the Layout sticking around for the life
|
|
48
|
+
# of the app. Because of this, our HomePage cannot hold state and only knows
|
|
49
|
+
# about what it is told in its initialize method (which, in this case, is
|
|
50
|
+
# nothing).
|
|
51
|
+
class HomePage
|
|
52
|
+
include Clearwater::Component
|
|
53
|
+
|
|
54
|
+
def render
|
|
55
|
+
article([
|
|
56
|
+
h1('Welcome to Clearwater'),
|
|
57
|
+
|
|
58
|
+
p(<<-EOP),
|
|
59
|
+
Clearwater is a Ruby front-end framework.
|
|
60
|
+
EOP
|
|
61
|
+
])
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# We use a Struct here because it's shorthand for a class that takes an argument
|
|
66
|
+
# and gives us an accessor method with that name. Otherwise, it's identical to a
|
|
67
|
+
# typical template; we just wanted to take an argument.
|
|
68
|
+
ChildRoute = Struct.new(:name) do
|
|
69
|
+
include Clearwater::Component
|
|
70
|
+
|
|
71
|
+
def render
|
|
72
|
+
div([
|
|
73
|
+
h2(name),
|
|
74
|
+
p("This is the child route called #{name}"),
|
|
75
|
+
|
|
76
|
+
div([
|
|
77
|
+
h3('Child content:'),
|
|
78
|
+
outlet,
|
|
79
|
+
]),
|
|
80
|
+
])
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
router = Clearwater::Router.new do
|
|
85
|
+
# Routing targets are other components. They stick around for the life of the
|
|
86
|
+
# app, so they can store state or you can use them to fetch state from a data
|
|
87
|
+
# store somewhere else in your app.
|
|
88
|
+
#
|
|
89
|
+
# Syntax:
|
|
90
|
+
# route path_segment => target
|
|
91
|
+
# route another_segment => another_target do
|
|
92
|
+
# route
|
|
93
|
+
# end
|
|
94
|
+
route 'foo' => ChildRoute.new('foo')
|
|
95
|
+
route 'bar' => ChildRoute.new('bar') do
|
|
96
|
+
route 'baz' => ChildRoute.new('baz')
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# The Clearwater app itself takes 3 args:
|
|
101
|
+
app = Clearwater::Application.new(
|
|
102
|
+
# The component is any component that includes the Clearwater::Component mixin
|
|
103
|
+
component: Layout.new,
|
|
104
|
+
|
|
105
|
+
# This is the router we created above. If you're not using routing, you can
|
|
106
|
+
# safely omit this.
|
|
107
|
+
router: router,
|
|
108
|
+
|
|
109
|
+
# This is any existing element on the page. Note that it has to exist already
|
|
110
|
+
# at this point, so unless you're delaying the execution of this script with
|
|
111
|
+
# DOM events, you'll need to put the script tag below the element you're
|
|
112
|
+
# rendering into. This is usually accomplished by putting the script tag at
|
|
113
|
+
# the bottom of the <body> element.
|
|
114
|
+
element: Bowser.document['#app'],
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Uncomment the following line to display timing information in the console on
|
|
118
|
+
# every render.
|
|
119
|
+
#
|
|
120
|
+
# app.debug!
|
|
121
|
+
|
|
122
|
+
# This adds the app to the Clearwater app registry (so it can be re-rendered on
|
|
123
|
+
# route changes) and triggers the first render. Subsequent renders should use
|
|
124
|
+
# app.render instead.
|
|
125
|
+
app.call
|
data/templates/config.ru
ADDED
data/templates/dev
ADDED
metadata
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: clearwater-roda
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Jamie Gaskins
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-09-19 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.12'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.12'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.0'
|
|
55
|
+
description:
|
|
56
|
+
email:
|
|
57
|
+
- jgaskins@gmail.com
|
|
58
|
+
executables:
|
|
59
|
+
- clearwater-roda
|
|
60
|
+
extensions: []
|
|
61
|
+
extra_rdoc_files: []
|
|
62
|
+
files:
|
|
63
|
+
- ".gitignore"
|
|
64
|
+
- ".rspec"
|
|
65
|
+
- ".travis.yml"
|
|
66
|
+
- CODE_OF_CONDUCT.md
|
|
67
|
+
- Gemfile
|
|
68
|
+
- README.md
|
|
69
|
+
- Rakefile
|
|
70
|
+
- bin/console
|
|
71
|
+
- bin/setup
|
|
72
|
+
- clearwater-roda.gemspec
|
|
73
|
+
- exe/clearwater-roda
|
|
74
|
+
- lib/clearwater/roda.rb
|
|
75
|
+
- lib/clearwater/roda/application.rb
|
|
76
|
+
- lib/clearwater/roda/template.rb
|
|
77
|
+
- lib/clearwater/roda/version.rb
|
|
78
|
+
- templates/Gemfile
|
|
79
|
+
- templates/Rakefile
|
|
80
|
+
- templates/app.rb
|
|
81
|
+
- templates/assets/js/app.rb
|
|
82
|
+
- templates/config.ru
|
|
83
|
+
- templates/dev
|
|
84
|
+
homepage: https://github.com/clearwater-rb/clearwater-roda
|
|
85
|
+
licenses: []
|
|
86
|
+
metadata: {}
|
|
87
|
+
post_install_message:
|
|
88
|
+
rdoc_options: []
|
|
89
|
+
require_paths:
|
|
90
|
+
- lib
|
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - ">="
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
requirements: []
|
|
102
|
+
rubyforge_project:
|
|
103
|
+
rubygems_version: 2.6.6
|
|
104
|
+
signing_key:
|
|
105
|
+
specification_version: 4
|
|
106
|
+
summary: Generate a Roda/Clearwater app from scratch
|
|
107
|
+
test_files: []
|