revelry_generate 0.4.9 → 0.5.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 +4 -4
- data/README.md +32 -22
- data/bin/after_bundle +4 -0
- data/bin/revelry_generate +26 -0
- data/template.rb +107 -0
- metadata +50 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd699664d6b70a221289915581113375d5c8741c
|
4
|
+
data.tar.gz: 9e64fa55eb9d21bbb73f203c20a916665d29c865
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e346dd7faee1294ab76584277a45e0aaab68813fc854e6dc1d8b532ef3327be87eccf91eb89376dbaa5ce50767e55050f03bd2509b4344e7cadb5d6e3c2e134a
|
7
|
+
data.tar.gz: 6a6836f6a7a00f26f3358958cea0d602c4200e908c840b8c490a823efa28691b56fff57d8ab48e405af2620e7036bef1e9a16d57db5e8f89a8f8132d12951f0c
|
data/README.md
CHANGED
@@ -1,41 +1,51 @@
|
|
1
|
-
#
|
1
|
+
# revelry_generate
|
2
2
|
|
3
|
-
|
4
|
-
Revelry 2016 Name TBD stack.
|
3
|
+
Generate a Rails project with a React-based view engine.
|
5
4
|
|
6
|
-
##
|
5
|
+
## Generated App Features
|
7
6
|
|
8
|
-
|
9
|
-
rails new app_name -m template.rb -T -d postgresql
|
10
|
-
```
|
7
|
+
### Node.js render service
|
11
8
|
|
12
|
-
|
9
|
+
* Full-fledged Express app with Webpack, Babel, React, Redux, and more
|
10
|
+
* Domain-centric module structure for better code organization
|
11
|
+
* Receives POSTed JSON payloads, uses them as React props, and responds with HTML
|
13
12
|
|
14
|
-
|
15
|
-
bin/rake rails:template LOCATION=template.rb
|
16
|
-
```
|
13
|
+
### Rails glue
|
17
14
|
|
18
|
-
|
19
|
-
|
15
|
+
* `jbuilder` templates define React props
|
16
|
+
* Controller concern connects view rendering to the Node service
|
17
|
+
* Generator hooks cause JavaScript modules to be generated in the render service as well
|
20
18
|
|
21
|
-
##
|
19
|
+
## Usage
|
22
20
|
|
23
|
-
|
24
|
-
revelry framework. After creating a new app with the template (see above), you
|
25
|
-
can:
|
21
|
+
### Install
|
26
22
|
|
27
|
-
|
23
|
+
```
|
24
|
+
gem install revelry_generate
|
25
|
+
```
|
26
|
+
|
27
|
+
### Create a new app
|
28
28
|
|
29
29
|
```
|
30
|
-
|
30
|
+
revelry_generate new my_app && cd my_app
|
31
31
|
```
|
32
32
|
|
33
33
|
### Scaffold a new resource
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
Same as a normal Rails app:
|
37
36
|
```
|
38
37
|
rails g scaffold Article
|
39
38
|
```
|
40
39
|
|
41
|
-
|
40
|
+
### Run local servers
|
41
|
+
|
42
|
+
```
|
43
|
+
npm run dev
|
44
|
+
```
|
45
|
+
|
46
|
+
### Applying the template to an existing app
|
47
|
+
|
48
|
+
From the app's directory, run:
|
49
|
+
```
|
50
|
+
revelry_generate install
|
51
|
+
```
|
data/bin/after_bundle
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
class RevelryGenerateCLI < Thor
|
5
|
+
desc 'new [NAME]', 'Create a new Rails app from the revelry_generate template'
|
6
|
+
def new(name)
|
7
|
+
system "rails new #{name} -m #{template_path} --skip-spring -T -d postgresql"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'install', 'Apply the revelry_generate template to an existing Rails app'
|
11
|
+
def install
|
12
|
+
system "rails app:template LOCATION=#{template_path} && #{after_bundle_path}"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def template_path
|
18
|
+
@template_path ||= File.expand_path('../../template.rb', __FILE__)
|
19
|
+
end
|
20
|
+
|
21
|
+
def after_bundle_path
|
22
|
+
@after_bundle_path ||= File.expand_path('../after_bundle', __FILE__)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
RevelryGenerateCLI.start ARGV
|
data/template.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
gem 'rails_render_service'
|
2
|
+
gem 'foreman'
|
3
|
+
gem 'dotenv'
|
4
|
+
|
5
|
+
# Add our default server config
|
6
|
+
gem 'puma'
|
7
|
+
gem 'rails_12factor'
|
8
|
+
|
9
|
+
gem_group :development do
|
10
|
+
gem 'revelry_generate'
|
11
|
+
end
|
12
|
+
|
13
|
+
# Add our testing config
|
14
|
+
gem_group :development, :test do
|
15
|
+
gem "rspec-rails"
|
16
|
+
end
|
17
|
+
|
18
|
+
comment_lines 'Gemfile', 'turbolinks'
|
19
|
+
gsub_file('app/assets/javascripts/application.js', '//= require turbolinks', '')
|
20
|
+
comment_lines 'Gemfile', 'spring'
|
21
|
+
|
22
|
+
application 'Dotenv.load'
|
23
|
+
application <<-RB
|
24
|
+
config.generators do |g|
|
25
|
+
g.jbuilder = :jbuilder_props
|
26
|
+
g.assets = false
|
27
|
+
end
|
28
|
+
RB
|
29
|
+
|
30
|
+
file File.join('app', 'controllers', 'concerns', 'rejax.rb'), <<-RUBY
|
31
|
+
module Rejax
|
32
|
+
extend ActiveSupport::Concern
|
33
|
+
|
34
|
+
included do
|
35
|
+
alias_method :redirect_to_without_default_303, :redirect_to
|
36
|
+
alias_method :redirect_to, :redirect_to_with_default_303
|
37
|
+
|
38
|
+
alias_method :url_for_without_include_json_format_ext, :url_for
|
39
|
+
alias_method :url_for, :url_for_with_include_json_format_ext
|
40
|
+
end
|
41
|
+
|
42
|
+
def redirect_to_with_default_303(options = {}, response_status = {})
|
43
|
+
response_status.reverse_merge! status: 303
|
44
|
+
redirect_to_without_default_303 options, response_status
|
45
|
+
end
|
46
|
+
|
47
|
+
def url_for_with_include_json_format_ext(record_or_hash_or_array, options = {})
|
48
|
+
options.reverse_merge! format: :json if request.format == :json
|
49
|
+
url_for_without_include_json_format_ext options
|
50
|
+
end
|
51
|
+
end
|
52
|
+
RUBY
|
53
|
+
|
54
|
+
file File.join('app', 'helpers', 'json_helper.rb'), <<-RUBY
|
55
|
+
module JsonHelper
|
56
|
+
# E.g., json_form(@article, nest: [:author, :comments])
|
57
|
+
def json_form(model, opts = {})
|
58
|
+
# return unless model
|
59
|
+
Jbuilder.new do |json|
|
60
|
+
_json_form_json(json, model, opts)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def _json_form_json(json, model, opts={})
|
67
|
+
return unless model
|
68
|
+
json.merge! model.attributes
|
69
|
+
json.errors model.errors.any? ? model.errors.to_hash : nil
|
70
|
+
|
71
|
+
# Requested inclusion of nested attributes
|
72
|
+
if opts[:nest]
|
73
|
+
opts[:nest].each do |relationship_sym|
|
74
|
+
nested_model = model.send(relationship_sym)
|
75
|
+
# Relationship is a collection we need to map
|
76
|
+
if nested_model.respond_to? :map
|
77
|
+
json.set! relationship_sym, nested_model do |model|
|
78
|
+
_json_form_json(json, model)
|
79
|
+
end
|
80
|
+
# Singular relationship to set
|
81
|
+
else
|
82
|
+
json.set! relationship_sym, json_form(nested_model)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
RUBY
|
89
|
+
|
90
|
+
inside(File.join('app', 'controllers')) do
|
91
|
+
inject_into_file 'application_controller.rb', after: "class ApplicationController < ActionController::Base\n" do
|
92
|
+
" include RailsRenderService::Concern\n include Rejax\n"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
initializer 'rails_render_service.rb', <<-ruby
|
97
|
+
Rails.application.config.rails_render_service.get_uri = lambda do
|
98
|
+
"unix://\#{Rails.root.join ENV['RENDER_SERVICE_SOCKET']}"
|
99
|
+
end
|
100
|
+
ruby
|
101
|
+
|
102
|
+
remove_file 'README.rdoc'
|
103
|
+
|
104
|
+
after_bundle do
|
105
|
+
run File.expand_path('../bin/after_bundle', __FILE__)
|
106
|
+
git :init
|
107
|
+
end
|
metadata
CHANGED
@@ -1,24 +1,67 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revelry_generate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Prehn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07
|
12
|
-
dependencies:
|
11
|
+
date: 2017-08-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4'
|
20
|
+
- - "<="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '4'
|
30
|
+
- - "<="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: thor
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.19'
|
40
|
+
- - "<="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '1'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.19'
|
50
|
+
- - "<="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '1'
|
13
53
|
description: ''
|
14
54
|
email:
|
15
55
|
- robert@revelry.co
|
16
|
-
executables:
|
56
|
+
executables:
|
57
|
+
- revelry_generate
|
17
58
|
extensions: []
|
18
59
|
extra_rdoc_files: []
|
19
60
|
files:
|
20
61
|
- LICENSE
|
21
62
|
- README.md
|
63
|
+
- bin/after_bundle
|
64
|
+
- bin/revelry_generate
|
22
65
|
- lib/rails/generators/jbuilder_props/jbuilder_props_generator.rb
|
23
66
|
- lib/rails/generators/jbuilder_props/templates/edit.json.jbuilder
|
24
67
|
- lib/rails/generators/jbuilder_props/templates/index.json.jbuilder
|
@@ -59,6 +102,7 @@ files:
|
|
59
102
|
- skeletons/slush/app.json
|
60
103
|
- skeletons/slush/config/initializers/scaffold.rb
|
61
104
|
- skeletons/slush/package.json
|
105
|
+
- template.rb
|
62
106
|
homepage: https://github.com/revelrylabs/generate.git
|
63
107
|
licenses:
|
64
108
|
- MIT
|
@@ -79,8 +123,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
123
|
version: '0'
|
80
124
|
requirements: []
|
81
125
|
rubyforge_project:
|
82
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.5.2
|
83
127
|
signing_key:
|
84
128
|
specification_version: 4
|
85
129
|
summary: ''
|
86
130
|
test_files: []
|
131
|
+
has_rdoc:
|