rails_app_generator 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/CHANGELOG.md +7 -0
- data/after_templates/addons/acts_as_list/_.rb +62 -0
- data/after_templates/addons/acts_as_list/app/controllers/home_controller.rb +7 -0
- data/after_templates/addons/acts_as_list/app/controllers/todo_items_controller.rb +132 -0
- data/after_templates/addons/acts_as_list/app/models/todo_item.rb +23 -0
- data/after_templates/addons/acts_as_list/app/models/todo_list.rb +12 -0
- data/after_templates/addons/acts_as_list/app/views/home/index.html.erb +23 -0
- data/after_templates/addons/acts_as_list/app/views/layouts/_alerts.html.erb +2 -0
- data/after_templates/addons/acts_as_list/app/views/layouts/_footer.html.erb +3 -0
- data/after_templates/addons/acts_as_list/app/views/layouts/_navbar.html.erb +8 -0
- data/after_templates/addons/acts_as_list/app/views/layouts/application.html.erb +28 -0
- data/after_templates/addons/acts_as_list/app/views/todo_items/_todo_item.html.erb +21 -0
- data/after_templates/addons/acts_as_list/app/views/todo_items/index.html.erb +25 -0
- data/after_templates/addons/acts_as_list/config/routes.rb +15 -0
- data/after_templates/addons/acts_as_list/db/seeds.rb +17 -0
- data/lib/rails_app_generator/addons/acts_as_list.rb +26 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/acts_as_list.json +13 -0
- data/tasks/profile.thor +14 -3
- data/templates/thor_task/profile/{after_template.rb.tt → after_template.rb} +11 -1
- data/templates/thor_task/profile/app/controllers/home_controller.rb +7 -0
- data/templates/thor_task/profile/app/views/home/index.html.erb.tt +23 -0
- data/templates/thor_task/profile/app/views/layouts/_alerts.html.erb.tt +2 -0
- data/templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt +3 -0
- data/templates/thor_task/profile/app/views/layouts/_navbar.html.erb +7 -0
- data/templates/thor_task/profile/app/views/layouts/application.html.erb.tt +28 -0
- data/templates/thor_task/profile/config/initializers/addon_name.rb +1 -0
- data/templates/thor_task/profile/db/seeds.rb +16 -0
- metadata +26 -4
- data/after_templates/addons/rails_html_sanitizer_xxx/home/index.html.erb +0 -31
- data/templates/thor_task/profile/home/index.html.erb.tt +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a70b5c05cd9a463bcfde6eeaf50a48380c37dc39a88e3c8239e145fee4b1934
|
4
|
+
data.tar.gz: 5c1bbda9632a77534a36943bc81594b14a38ab2654c3de3f61a19e8cb5b8d9d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43579cfcb2ca45ffeb1d7f8f504b7c480ab7e484f163c9af3e238fd5a066d26942e860167f7e2c91a1aa69b98ced19000538eacacee38a18b8382a6ea4201c7e
|
7
|
+
data.tar.gz: a099c2c9e2cb390101fccd6363a2957cbc58e049994f16ecde69a7545572b5e8fa472fa64dca63026c16da4601305f2e4615968ea507c4e1151f889625eb9b27
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.1.14](https://github.com/klueless-io/rails_app_generator/compare/v0.1.13...v0.1.14) (2022-08-04)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add twilio addon ([2a70a12](https://github.com/klueless-io/rails_app_generator/commit/2a70a1216dc9d7475289a154f6c7b8c4a2a80403))
|
7
|
+
|
1
8
|
## [0.1.13](https://github.com/klueless-io/rails_app_generator/compare/v0.1.12...v0.1.13) (2022-08-03)
|
2
9
|
|
3
10
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# require 'pry'
|
4
|
+
|
5
|
+
# This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list. The class that has this specified needs to have a "position" column defined as an integer on the mapped database table.
|
6
|
+
#
|
7
|
+
# exe/rag addons/acts_as_list
|
8
|
+
|
9
|
+
self.local_template_path = File.dirname(__FILE__)
|
10
|
+
|
11
|
+
gac 'base rails 7 image created'
|
12
|
+
|
13
|
+
add_controller('home', 'index')
|
14
|
+
route("root 'home#index'")
|
15
|
+
|
16
|
+
force_copy
|
17
|
+
|
18
|
+
add_scaffold('todo_list', 'name')
|
19
|
+
add_scaffold('todo_item', 'task', 'position:integer', 'todo_list:references')
|
20
|
+
|
21
|
+
copy_file 'app/controllers/home_controller.rb' , 'app/controllers/home_controller.rb'
|
22
|
+
copy_file 'app/controllers/todo_items_controller.rb' , 'app/controllers/todo_items_controller.rb'
|
23
|
+
copy_file 'app/models/todo_list.rb' , 'app/models/todo_list.rb'
|
24
|
+
copy_file 'app/models/todo_item.rb' , 'app/models/todo_item.rb'
|
25
|
+
|
26
|
+
copy_file 'app/views/home/index.html.erb' , 'app/views/home/index.html.erb'
|
27
|
+
|
28
|
+
copy_file 'app/views/layouts/_alerts.html.erb' , 'app/views/layouts/_alerts.html.erb'
|
29
|
+
copy_file 'app/views/layouts/_navbar.html.erb' , 'app/views/layouts/_navbar.html.erb'
|
30
|
+
copy_file 'app/views/layouts/_footer.html.erb' , 'app/views/layouts/_footer.html.erb'
|
31
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
32
|
+
|
33
|
+
copy_file 'app/views/todo_items/index.html.erb' , 'app/views/todo_items/index.html.erb'
|
34
|
+
copy_file 'app/views/todo_items/_todo_item.html.erb' , 'app/views/todo_items/_todo_item.html.erb'
|
35
|
+
|
36
|
+
copy_file 'config/routes.rb' , 'config/routes.rb'
|
37
|
+
|
38
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
39
|
+
|
40
|
+
after_bundle do
|
41
|
+
setup_db
|
42
|
+
end
|
43
|
+
|
44
|
+
def setup_db
|
45
|
+
|
46
|
+
db_migrate
|
47
|
+
rails_command('db:seed')
|
48
|
+
end
|
49
|
+
|
50
|
+
# Other template command examples
|
51
|
+
# css_install('tailwind')
|
52
|
+
# rails_command('db:migrate')
|
53
|
+
# bundle_add('hotwire-rails')
|
54
|
+
# rails_command('hotwire:install')
|
55
|
+
# run('bin/importmap pin sortablejs')
|
56
|
+
# run('npm install daisyui')
|
57
|
+
# create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
|
58
|
+
# append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
|
59
|
+
# insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
|
60
|
+
# before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
|
61
|
+
# gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
|
62
|
+
# template 'home.css', 'app/assets/stylesheets/home.css'
|
@@ -0,0 +1,132 @@
|
|
1
|
+
class TodoItemsController < ApplicationController
|
2
|
+
before_action :set_todo_item, only: %i[
|
3
|
+
show
|
4
|
+
edit
|
5
|
+
update
|
6
|
+
destroy
|
7
|
+
insert_at
|
8
|
+
move_lower
|
9
|
+
move_higher
|
10
|
+
move_to_bottom
|
11
|
+
move_to_top
|
12
|
+
remove_from_list
|
13
|
+
]
|
14
|
+
|
15
|
+
before_action :set_todo_items, only: %i[
|
16
|
+
index
|
17
|
+
insert_at
|
18
|
+
move_lower
|
19
|
+
move_higher
|
20
|
+
move_to_bottom
|
21
|
+
move_to_top
|
22
|
+
remove_from_list
|
23
|
+
]
|
24
|
+
|
25
|
+
# GET /todo_items or /todo_items.json
|
26
|
+
def index
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /todo_items/1 or /todo_items/1.json
|
30
|
+
def show
|
31
|
+
end
|
32
|
+
|
33
|
+
def insert_at
|
34
|
+
@todo_item.insert_at(2)
|
35
|
+
render :index, params
|
36
|
+
end
|
37
|
+
|
38
|
+
def move_lower
|
39
|
+
@todo_item.move_lower
|
40
|
+
render :index, params
|
41
|
+
end
|
42
|
+
|
43
|
+
def move_higher
|
44
|
+
@todo_item.move_higher
|
45
|
+
render :index, params
|
46
|
+
end
|
47
|
+
|
48
|
+
def move_to_bottom
|
49
|
+
@todo_item.move_to_bottom
|
50
|
+
render :index, params
|
51
|
+
end
|
52
|
+
|
53
|
+
def move_to_top
|
54
|
+
@todo_item.move_to_top
|
55
|
+
render :index, params
|
56
|
+
end
|
57
|
+
|
58
|
+
def remove_from_list
|
59
|
+
@todo_item.remove_from_list
|
60
|
+
render :index, params
|
61
|
+
end
|
62
|
+
|
63
|
+
# GET /todo_items/new
|
64
|
+
def new
|
65
|
+
@todo_item = TodoItem.new
|
66
|
+
end
|
67
|
+
|
68
|
+
# GET /todo_items/1/edit
|
69
|
+
def edit
|
70
|
+
end
|
71
|
+
|
72
|
+
# POST /todo_items or /todo_items.json
|
73
|
+
def create
|
74
|
+
@todo_item = TodoItem.new(todo_item_params)
|
75
|
+
|
76
|
+
respond_to do |format|
|
77
|
+
if @todo_item.save
|
78
|
+
format.html { redirect_to todo_item_url(@todo_item), notice: "Todo item was successfully created." }
|
79
|
+
format.json { render :show, status: :created, location: @todo_item }
|
80
|
+
else
|
81
|
+
format.html { render :new, status: :unprocessable_entity }
|
82
|
+
format.json { render json: @todo_item.errors, status: :unprocessable_entity }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# PATCH/PUT /todo_items/1 or /todo_items/1.json
|
88
|
+
def update
|
89
|
+
respond_to do |format|
|
90
|
+
if @todo_item.update(todo_item_params)
|
91
|
+
format.html { redirect_to todo_item_url(@todo_item), notice: "Todo item was successfully updated." }
|
92
|
+
format.json { render :show, status: :ok, location: @todo_item }
|
93
|
+
else
|
94
|
+
format.html { render :edit, status: :unprocessable_entity }
|
95
|
+
format.json { render json: @todo_item.errors, status: :unprocessable_entity }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# DELETE /todo_items/1 or /todo_items/1.json
|
101
|
+
def destroy
|
102
|
+
@todo_item.destroy
|
103
|
+
|
104
|
+
respond_to do |format|
|
105
|
+
format.html { redirect_to todo_items_url, notice: "Todo item was successfully destroyed." }
|
106
|
+
format.json { head :no_content }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def query_params
|
111
|
+
params.permit(:todo_list_id)
|
112
|
+
end
|
113
|
+
helper_method :query_params
|
114
|
+
|
115
|
+
private
|
116
|
+
# Use callbacks to share common setup or constraints between actions.
|
117
|
+
def set_todo_item
|
118
|
+
@todo_item = TodoItem.find(params[:id])
|
119
|
+
end
|
120
|
+
|
121
|
+
def set_todo_items
|
122
|
+
todo_list_id = params[:todo_list_id]
|
123
|
+
|
124
|
+
@todo_items = todo_list_id.nil? ? TodoItem.all : TodoItem.where(todo_list_id: todo_list_id)
|
125
|
+
@todo_items = @todo_items.order(:todo_list_id, :position)
|
126
|
+
end
|
127
|
+
|
128
|
+
# Only allow a list of trusted parameters through.
|
129
|
+
def todo_item_params
|
130
|
+
params.require(:todo_item).permit(:task, :position, :todo_list_id)
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: todo_items
|
4
|
+
#
|
5
|
+
# id :integer not null, primary key
|
6
|
+
# position :integer
|
7
|
+
# task :string
|
8
|
+
# created_at :datetime not null
|
9
|
+
# updated_at :datetime not null
|
10
|
+
# todo_list_id :integer not null
|
11
|
+
#
|
12
|
+
# Indexes
|
13
|
+
#
|
14
|
+
# index_todo_items_on_todo_list_id (todo_list_id)
|
15
|
+
#
|
16
|
+
# Foreign Keys
|
17
|
+
#
|
18
|
+
# todo_list_id (todo_list_id => todo_lists.id)
|
19
|
+
#
|
20
|
+
class TodoItem < ApplicationRecord
|
21
|
+
belongs_to :todo_list
|
22
|
+
acts_as_list scope: :todo_list
|
23
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: todo_lists
|
4
|
+
#
|
5
|
+
# id :integer not null, primary key
|
6
|
+
# name :string
|
7
|
+
# created_at :datetime not null
|
8
|
+
# updated_at :datetime not null
|
9
|
+
#
|
10
|
+
class TodoList < ApplicationRecord
|
11
|
+
has_many :todo_items, -> { order(position: :asc) }
|
12
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<style>
|
2
|
+
.alert { color: red; }
|
3
|
+
.notice { color: green; }
|
4
|
+
</style>
|
5
|
+
|
6
|
+
<% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
|
7
|
+
<% if flash.any? %><hr /><% end %>
|
8
|
+
|
9
|
+
<h1>Acts as list</h1>
|
10
|
+
|
11
|
+
<h2>This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list. The class that has this specified needs to have a "position" column defined as an integer on the mapped database table.</h2>
|
12
|
+
|
13
|
+
<!--
|
14
|
+
Add/Remove as needed
|
15
|
+
-->
|
16
|
+
|
17
|
+
<!--
|
18
|
+
<= link_to 'Some Action', home_some_action_path %>
|
19
|
+
|
20
|
+
<= link_to 'Products', products_path %> |
|
21
|
+
<= link_to 'Posts', posts_path %> |
|
22
|
+
<= link_to 'People', people_path %>
|
23
|
+
-->
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<header>
|
2
|
+
<%= link_to 'Home', root_path %> |
|
3
|
+
<%= link_to 'ToDo List', todo_lists_path %> |
|
4
|
+
<%= link_to 'ToDo Items', todo_items_path %> |
|
5
|
+
<%= link_to 'People', todo_items_path(todo_list_id: TodoList.find_by(name: 'people')) %> |
|
6
|
+
<%= link_to 'Jobs', todo_items_path(todo_list_id: TodoList.find_by(name: 'jobs')) %>
|
7
|
+
<hr />
|
8
|
+
</header>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= camelized %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%%= csrf_meta_tags %>
|
7
|
+
<%%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<%- if options[:skip_hotwire] || options[:skip_javascript] -%>
|
10
|
+
<%%= stylesheet_link_tag "application" %>
|
11
|
+
<%- else -%>
|
12
|
+
<%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
|
13
|
+
<%- end -%>
|
14
|
+
<style>
|
15
|
+
.alert { color: red; }
|
16
|
+
.notice { color: green; }
|
17
|
+
</style>
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body>
|
21
|
+
<%%= render 'layouts/navbar' %>
|
22
|
+
<main>
|
23
|
+
<%%= render 'layouts/alerts' %>
|
24
|
+
<%%= yield %>
|
25
|
+
</main>
|
26
|
+
<%%= render 'layouts/footer' %>
|
27
|
+
</body>
|
28
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<tr>
|
2
|
+
<td>
|
3
|
+
<%= todo_item.task %>
|
4
|
+
</td>
|
5
|
+
<td>
|
6
|
+
<%= todo_item.position %>
|
7
|
+
</td>
|
8
|
+
<td>
|
9
|
+
<%= todo_item.todo_list.name %>
|
10
|
+
</td>
|
11
|
+
<td>
|
12
|
+
<%= link_to "Show", todo_item %> |
|
13
|
+
<%= link_to "Insert At #2", insert_at_todo_item_path(todo_item.id, **query_params) %> |
|
14
|
+
<%= link_to "Higher", move_higher_todo_item_path(todo_item.id, **query_params) %> |
|
15
|
+
<%= link_to "Lower", move_lower_todo_item_path(todo_item.id, **query_params) %> |
|
16
|
+
<%= link_to "Top", move_to_top_todo_item_path(todo_item.id, **query_params) %> |
|
17
|
+
<%= link_to "Bottom", move_to_bottom_todo_item_path(todo_item.id, **query_params) %> |
|
18
|
+
<%= link_to "Remove From List", remove_from_list_todo_item_path(todo_item.id, **query_params) %>
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<p style="color: green"><%= notice %></p>
|
2
|
+
|
3
|
+
<h1>Todo items</h1>
|
4
|
+
|
5
|
+
<div id="todo_items">
|
6
|
+
<table>
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th>Task</th>
|
10
|
+
<th>Position</th>
|
11
|
+
<th>List Name</th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
<tbody>
|
15
|
+
|
16
|
+
<% @todo_items.each do |todo_item| %>
|
17
|
+
<%= render todo_item %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
</tbody>
|
21
|
+
</table>
|
22
|
+
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<%= link_to "New todo item", new_todo_item_path %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
resources :todo_items do
|
3
|
+
member do
|
4
|
+
get :insert_at
|
5
|
+
get :move_lower
|
6
|
+
get :move_higher
|
7
|
+
get :move_to_bottom
|
8
|
+
get :move_to_top
|
9
|
+
get :remove_from_list
|
10
|
+
end
|
11
|
+
end
|
12
|
+
resources :todo_lists
|
13
|
+
root 'home#index'
|
14
|
+
get 'home/index'
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
+
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
|
3
|
+
#
|
4
|
+
# User.find_or_create_by(email: "admin@admin.com") do |user|
|
5
|
+
# user.name = 'Admin'
|
6
|
+
# user.password = 'password'
|
7
|
+
# user.admin = true
|
8
|
+
# end
|
9
|
+
|
10
|
+
people = TodoList.create(name: 'people')
|
11
|
+
jobs = TodoList.create(name: 'jobs')
|
12
|
+
# lisa = User.create(email: 'lisa@site.com', name: 'lisa', password: 'password')
|
13
|
+
|
14
|
+
5.times do |i|
|
15
|
+
TodoItem.create(todo_list: people, task: "Person Name #{i}", position: i)
|
16
|
+
TodoItem.create(todo_list: jobs , task: "Profession #{i}", position: i)
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Custom add-ons for RailsAppGenerator
|
5
|
+
module AddOns
|
6
|
+
# Add ActsAsList to rails application
|
7
|
+
class ActsAsList < AddOn
|
8
|
+
depends_on :active_record
|
9
|
+
required_gem gem.version('acts_as_list', '1.0.4', <<~COMMENT)
|
10
|
+
This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list.
|
11
|
+
The class that has this specified needs to have a "position" column defined as an integer on the mapped database table.
|
12
|
+
COMMENT
|
13
|
+
|
14
|
+
def apply
|
15
|
+
# say 'Setting up ActsAsList'
|
16
|
+
# template('acts_as_list_template.rb', 'target/acts_as_list.rb', force: true)
|
17
|
+
# template('app/javascript/stylesheets/components.scss')
|
18
|
+
# create_file('target/acts_as_list.rb', 'put your content here')
|
19
|
+
# directory 'app/template', 'app/target', force: true
|
20
|
+
# empty_directory 'app/target'
|
21
|
+
# inject_into_file('app/application.js', "some content")
|
22
|
+
# rails_command('tailwindcss:install')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "rails_app_generator",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.15",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "rails_app_generator",
|
9
|
-
"version": "0.1.
|
9
|
+
"version": "0.1.15",
|
10
10
|
"dependencies": {
|
11
11
|
"daisyui": "^2.20.0"
|
12
12
|
},
|
data/package.json
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"args": {
|
3
|
+
"app_path": "acts_as_list",
|
4
|
+
"destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
|
5
|
+
},
|
6
|
+
"opts": {
|
7
|
+
"skip_git": true,
|
8
|
+
"skip_test": true,
|
9
|
+
"template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/acts_as_list/_.rb",
|
10
|
+
"add_acts_as_list": true,
|
11
|
+
"add_annotate": true
|
12
|
+
}
|
13
|
+
}
|
data/tasks/profile.thor
CHANGED
@@ -39,10 +39,21 @@ class Profile < Thor
|
|
39
39
|
say "Creating profile #{name}"
|
40
40
|
puts "Variant: #{options[:variant]}"
|
41
41
|
|
42
|
-
template('profile/profile.json', profile_path("#{data.name_dash}.json"), force: options[:force])
|
43
|
-
template('profile/after_template.rb', after_template_path('_.rb'), force: options[:force])
|
44
|
-
template('profile/
|
42
|
+
template('profile/profile.json' , profile_path("#{data.name_dash}.json") , force: options[:force])
|
43
|
+
template('profile/after_template.rb' , after_template_path('_.rb') , force: options[:force])
|
44
|
+
template('profile/app/controllers/home_controller.rb' , after_template_path('app/controllers/home_controller.rb') , force: options[:force])
|
45
|
+
template('profile/app/views/home/index.html.erb' , after_template_path('app/views/home/index.html.erb') , force: options[:force])
|
46
|
+
|
47
|
+
copy_file('profile/app/views/layouts/_alerts.html.erb' , after_template_path('app/views/layouts/_alerts.html.erb') , force: options[:force])
|
48
|
+
copy_file('profile/app/views/layouts/_navbar.html.erb' , after_template_path('app/views/layouts/_navbar.html.erb') , force: options[:force])
|
49
|
+
copy_file('profile/app/views/layouts/_footer.html.erb' , after_template_path('app/views/layouts/_footer.html.erb') , force: options[:force])
|
50
|
+
copy_file('profile/app/views/layouts/application.html.erb' , after_template_path('app/views/layouts/application.html.erb') , force: options[:force])
|
51
|
+
|
52
|
+
copy_file('profile/db/seeds.rb' , after_template_path('db/seeds.rb') , force: options[:force])
|
53
|
+
|
54
|
+
copy_file('profile/config/initializers/addon_name.rb' , after_template_path("config/initializers/#{name}.rb") , force: options[:force])
|
45
55
|
end
|
56
|
+
|
46
57
|
# rubocop:enable Metrics/AbcSize
|
47
58
|
|
48
59
|
# rubocop:disable Metrics/BlockLength
|
@@ -15,7 +15,17 @@ route("root 'home#index'")
|
|
15
15
|
|
16
16
|
force_copy
|
17
17
|
|
18
|
-
copy_file '
|
18
|
+
copy_file 'app/controllers/home_controller.rb' , 'app/controllers/home_controller.rb'
|
19
|
+
copy_file 'app/views/home/index.html.erb' , 'app/views/home/index.html.erb'
|
20
|
+
|
21
|
+
copy_file 'app/views/layouts/_alerts.html.erb' , 'app/views/layouts/_alerts.html.erb'
|
22
|
+
copy_file 'app/views/layouts/_navbar.html.erb' , 'app/views/layouts/_navbar.html.erb'
|
23
|
+
copy_file 'app/views/layouts/_footer.html.erb' , 'app/views/layouts/_footer.html.erb'
|
24
|
+
template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
|
25
|
+
|
26
|
+
template 'db/seeds.rb' , 'db/seeds.rb'
|
27
|
+
|
28
|
+
copy_file 'config/initializers/<%= data.name_snake %>.rb' , 'config/initializers/<%= data.name_snake %>.rb'
|
19
29
|
|
20
30
|
after_bundle do
|
21
31
|
setup_db
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<style>
|
2
|
+
.alert { color: red; }
|
3
|
+
.notice { color: green; }
|
4
|
+
</style>
|
5
|
+
|
6
|
+
<%% flash.each do |type, msg| %><div class="<%%= type %>"><%%= msg %></div><%% end %>
|
7
|
+
<%% if flash.any? %><hr /><%% end %>
|
8
|
+
|
9
|
+
<h1><%= data.name_human %></h1>
|
10
|
+
|
11
|
+
<h2><%= data.description %></h2>
|
12
|
+
|
13
|
+
<!--
|
14
|
+
Add/Remove as needed
|
15
|
+
-->
|
16
|
+
|
17
|
+
<!--
|
18
|
+
<= link_to 'Some Action', home_some_action_path %>
|
19
|
+
|
20
|
+
<= link_to 'Products', products_path %> |
|
21
|
+
<= link_to 'Posts', posts_path %> |
|
22
|
+
<= link_to 'People', people_path %>
|
23
|
+
-->
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= camelized %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%%= csrf_meta_tags %>
|
7
|
+
<%%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<%- if options[:skip_hotwire] || options[:skip_javascript] -%>
|
10
|
+
<%%= stylesheet_link_tag "application" %>
|
11
|
+
<%- else -%>
|
12
|
+
<%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
|
13
|
+
<%- end -%>
|
14
|
+
<style>
|
15
|
+
.alert { color: red; }
|
16
|
+
.notice { color: green; }
|
17
|
+
</style>
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body>
|
21
|
+
<%%= render 'layouts/navbar' %>
|
22
|
+
<main>
|
23
|
+
<%%= render 'layouts/alerts' %>
|
24
|
+
<%%= yield %>
|
25
|
+
</main>
|
26
|
+
<%%= render 'layouts/footer' %>
|
27
|
+
</body>
|
28
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
# Custom initializer for rails application
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
+
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
|
3
|
+
#
|
4
|
+
# User.find_or_create_by(email: "admin@admin.com") do |user|
|
5
|
+
# user.name = 'Admin'
|
6
|
+
# user.password = 'password'
|
7
|
+
# user.admin = true
|
8
|
+
# end
|
9
|
+
|
10
|
+
# david = User.create(email: 'david@site.com', name: 'david', password: 'password')
|
11
|
+
# bob = User.create(email: 'bob@site.com', name: 'bob', password: 'password')
|
12
|
+
# lisa = User.create(email: 'lisa@site.com', name: 'lisa', password: 'password')
|
13
|
+
|
14
|
+
# 10.times do |i|
|
15
|
+
# Post.create(title: "Post #{i}", body: "This is the body of post #{i}", user: User.all.sample)
|
16
|
+
# end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_app_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -160,6 +160,20 @@ files:
|
|
160
160
|
- README.md
|
161
161
|
- Rakefile
|
162
162
|
- after_templates/README.md
|
163
|
+
- after_templates/addons/acts_as_list/_.rb
|
164
|
+
- after_templates/addons/acts_as_list/app/controllers/home_controller.rb
|
165
|
+
- after_templates/addons/acts_as_list/app/controllers/todo_items_controller.rb
|
166
|
+
- after_templates/addons/acts_as_list/app/models/todo_item.rb
|
167
|
+
- after_templates/addons/acts_as_list/app/models/todo_list.rb
|
168
|
+
- after_templates/addons/acts_as_list/app/views/home/index.html.erb
|
169
|
+
- after_templates/addons/acts_as_list/app/views/layouts/_alerts.html.erb
|
170
|
+
- after_templates/addons/acts_as_list/app/views/layouts/_footer.html.erb
|
171
|
+
- after_templates/addons/acts_as_list/app/views/layouts/_navbar.html.erb
|
172
|
+
- after_templates/addons/acts_as_list/app/views/layouts/application.html.erb
|
173
|
+
- after_templates/addons/acts_as_list/app/views/todo_items/_todo_item.html.erb
|
174
|
+
- after_templates/addons/acts_as_list/app/views/todo_items/index.html.erb
|
175
|
+
- after_templates/addons/acts_as_list/config/routes.rb
|
176
|
+
- after_templates/addons/acts_as_list/db/seeds.rb
|
163
177
|
- after_templates/addons/honeybadger/_.rb
|
164
178
|
- after_templates/addons/honeybadger/app/controllers/application_controller.rb
|
165
179
|
- after_templates/addons/honeybadger/app/controllers/errors_controller.rb
|
@@ -169,7 +183,6 @@ files:
|
|
169
183
|
- after_templates/addons/honeybadger/public/500.html
|
170
184
|
- after_templates/addons/rails_html_sanitizer/_.rb
|
171
185
|
- after_templates/addons/rails_html_sanitizer/home/index.html.erb
|
172
|
-
- after_templates/addons/rails_html_sanitizer_xxx/home/index.html.erb
|
173
186
|
- after_templates/addons/twilio_ruby/_.rb
|
174
187
|
- after_templates/addons/twilio_ruby/app/controllers/home_controller.rb
|
175
188
|
- after_templates/addons/twilio_ruby/app/views/home/index.html.erb
|
@@ -305,6 +318,7 @@ files:
|
|
305
318
|
- exe/rag
|
306
319
|
- lib/rails_app_generator.rb
|
307
320
|
- lib/rails_app_generator/add_on.rb
|
321
|
+
- lib/rails_app_generator/addons/acts_as_list.rb
|
308
322
|
- lib/rails_app_generator/addons/annotate.rb
|
309
323
|
- lib/rails_app_generator/addons/continuous_integration.rb
|
310
324
|
- lib/rails_app_generator/addons/devise.rb
|
@@ -365,6 +379,7 @@ files:
|
|
365
379
|
- lib/rails_app_generator/version.rb
|
366
380
|
- package-lock.json
|
367
381
|
- package.json
|
382
|
+
- profiles/addons/acts_as_list.json
|
368
383
|
- profiles/addons/honeybadger.json
|
369
384
|
- profiles/addons/rails-html-sanitizer.json
|
370
385
|
- profiles/addons/twilio_ruby.json
|
@@ -430,8 +445,15 @@ files:
|
|
430
445
|
- templates/addons/scaffold/lib/templates/erb/scaffold/show.html.erb
|
431
446
|
- templates/addons/services/app/services/application_service.rb
|
432
447
|
- templates/thor_task/addon/addon.tt
|
433
|
-
- templates/thor_task/profile/after_template.rb
|
434
|
-
- templates/thor_task/profile/
|
448
|
+
- templates/thor_task/profile/after_template.rb
|
449
|
+
- templates/thor_task/profile/app/controllers/home_controller.rb
|
450
|
+
- templates/thor_task/profile/app/views/home/index.html.erb.tt
|
451
|
+
- templates/thor_task/profile/app/views/layouts/_alerts.html.erb.tt
|
452
|
+
- templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt
|
453
|
+
- templates/thor_task/profile/app/views/layouts/_navbar.html.erb
|
454
|
+
- templates/thor_task/profile/app/views/layouts/application.html.erb.tt
|
455
|
+
- templates/thor_task/profile/config/initializers/addon_name.rb
|
456
|
+
- templates/thor_task/profile/db/seeds.rb
|
435
457
|
- templates/thor_task/profile/profile.json.tt
|
436
458
|
homepage: http://appydave.com/gems/rails_app_generator
|
437
459
|
licenses:
|
@@ -1,31 +0,0 @@
|
|
1
|
-
<h1>Testing HTML Sanitizer</h1>
|
2
|
-
|
3
|
-
<p>Read more here <a href="https://github.com/rails/rails-html-sanitizer">rails-html-sanitizer</a></p>
|
4
|
-
|
5
|
-
<textarea rows="4" cols="200">
|
6
|
-
full_sanitizer = Rails::Html::FullSanitizer.new
|
7
|
-
full_sanitizer.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
|
8
|
-
</textarea>
|
9
|
-
|
10
|
-
<hr>
|
11
|
-
<%=
|
12
|
-
Rails::Html::FullSanitizer
|
13
|
-
.new
|
14
|
-
.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
|
15
|
-
%>
|
16
|
-
|
17
|
-
<br/><br/><br/>
|
18
|
-
|
19
|
-
<hr>
|
20
|
-
|
21
|
-
<textarea rows="4" cols="200">
|
22
|
-
link_sanitizer = Rails::Html::LinkSanitizer.new
|
23
|
-
link_sanitizer.sanitize('<a href="example.com">Only the link text will be kept.</a>')
|
24
|
-
# => Only the link text will be kept.
|
25
|
-
</textarea>
|
26
|
-
|
27
|
-
<%=
|
28
|
-
Rails::Html::LinkSanitizer
|
29
|
-
.new
|
30
|
-
.sanitize('<a href="example.com">Only the link text will be kept.</a>')
|
31
|
-
%>
|