rails_app_generator 0.1.14 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/CHANGELOG.md +22 -0
  4. data/after_templates/addons/acts_as_list/_.rb +62 -0
  5. data/after_templates/addons/acts_as_list/app/controllers/home_controller.rb +7 -0
  6. data/after_templates/addons/acts_as_list/app/controllers/todo_items_controller.rb +132 -0
  7. data/after_templates/addons/acts_as_list/app/models/todo_item.rb +23 -0
  8. data/after_templates/addons/acts_as_list/app/models/todo_list.rb +12 -0
  9. data/after_templates/addons/acts_as_list/app/views/home/index.html.erb +23 -0
  10. data/after_templates/addons/acts_as_list/app/views/layouts/_alerts.html.erb +2 -0
  11. data/after_templates/addons/acts_as_list/app/views/layouts/_footer.html.erb +3 -0
  12. data/after_templates/addons/acts_as_list/app/views/layouts/_navbar.html.erb +8 -0
  13. data/after_templates/addons/acts_as_list/app/views/layouts/application.html.erb +28 -0
  14. data/after_templates/addons/acts_as_list/app/views/todo_items/_todo_item.html.erb +21 -0
  15. data/after_templates/addons/acts_as_list/app/views/todo_items/index.html.erb +25 -0
  16. data/after_templates/addons/acts_as_list/config/routes.rb +15 -0
  17. data/after_templates/addons/acts_as_list/db/seeds.rb +17 -0
  18. data/after_templates/addons/browser/_.rb +20 -0
  19. data/after_templates/addons/browser/app/controllers/home_controller.rb +5 -0
  20. data/after_templates/addons/browser/app/views/home/index.html.erb +103 -0
  21. data/after_templates/addons/faker/_.rb +38 -0
  22. data/after_templates/addons/faker/app/controllers/home_controller.rb +7 -0
  23. data/after_templates/addons/faker/app/views/home/index.html.erb +102 -0
  24. data/after_templates/addons/faker/app/views/layouts/_alerts.html.erb +2 -0
  25. data/after_templates/addons/faker/app/views/layouts/_footer.html.erb +3 -0
  26. data/after_templates/addons/faker/app/views/layouts/_navbar.html.erb +3 -0
  27. data/after_templates/addons/faker/app/views/layouts/application.html.erb +28 -0
  28. data/lib/rails_app_generator/addons/acts_as_list.rb +17 -0
  29. data/lib/rails_app_generator/addons/browser.rb +13 -0
  30. data/lib/rails_app_generator/addons/faker.rb +16 -0
  31. data/lib/rails_app_generator/app_generator.rb +6 -6
  32. data/lib/rails_app_generator/options/rails_options.rb +2 -0
  33. data/lib/rails_app_generator/version.rb +1 -1
  34. data/package-lock.json +2 -2
  35. data/package.json +1 -1
  36. data/profiles/addons/acts_as_list.json +13 -0
  37. data/profiles/addons/browser.json +12 -0
  38. data/profiles/addons/faker.json +12 -0
  39. data/tasks/profile.thor +14 -3
  40. data/templates/thor_task/profile/{after_template.rb.tt → after_template.rb} +11 -1
  41. data/templates/thor_task/profile/app/controllers/home_controller.rb +7 -0
  42. data/templates/thor_task/profile/app/views/home/index.html.erb.tt +23 -0
  43. data/templates/thor_task/profile/app/views/layouts/_alerts.html.erb.tt +2 -0
  44. data/templates/thor_task/profile/app/views/layouts/_footer.html.erb.tt +3 -0
  45. data/templates/thor_task/profile/app/views/layouts/_navbar.html.erb +7 -0
  46. data/templates/thor_task/profile/app/views/layouts/application.html.erb.tt +28 -0
  47. data/templates/thor_task/profile/config/initializers/addon_name.rb +1 -0
  48. data/templates/thor_task/profile/db/seeds.rb +16 -0
  49. metadata +41 -5
  50. data/after_templates/addons/rails_html_sanitizer_xxx/home/index.html.erb +0 -31
  51. 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: 75a314b07d31b22d3aa8c2249efa2884d59f4d6ec2aa13966e52ded99aa8aa79
4
- data.tar.gz: ee79c7ebb7828f2cc5fe27ae226f107f841947185d3c21ba4f4a0e6fcb7b3323
3
+ metadata.gz: 0537d791d3c10bc8073b5e9e923d9f3780afad431fad2d1caa4d8f52c9dc92b2
4
+ data.tar.gz: e798fbbc728bff9920c1974754052c435f25cc1426bde4a028c4bacd8e58b9b4
5
5
  SHA512:
6
- metadata.gz: 7011a7def931cb0ca1e5e7502372cad5da9f9887e2195b6f708963f1a34205cd74cd6812f877c77fa98faf3dc590d15f256319085af79416f98fd67480ddf0af
7
- data.tar.gz: 6ee2229ccce12d2dcba53b841125ac72cc2a07dfe6432b21029395460efb704e8621697c833fdc77fbaaf9520347aac08562adf16de6e17b86cd31284de678ce
6
+ metadata.gz: c46126c1818d49d73f0732beff5975546c5f3c3c7c4f63377f4b240b2cc186179f3a675c1330c0c87f47f0dcd1a47d487c31253678890036af5d9663290e5978
7
+ data.tar.gz: 33633fa8eb13f610dbfed6d07d0f03678f1a33de1abfc768b5d31e977dc9df3abd6a742717ee15ad7e926072fb7dbaf25ddf1811440547e44d241ce9edbcd852
data/.rubocop.yml CHANGED
@@ -12,6 +12,7 @@ AllCops:
12
12
  - "spec/samples/**/*"
13
13
  - "a/**/*"
14
14
  - "after_templates/**/*"
15
+ - "templates/**/*"
15
16
 
16
17
  Metrics/BlockLength:
17
18
  Exclude:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [0.1.16](https://github.com/klueless-io/rails_app_generator/compare/v0.1.15...v0.1.16) (2022-08-05)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * addon faker ([0c61f17](https://github.com/klueless-io/rails_app_generator/commit/0c61f17dbff15dcfc2f9d3851601cbdddde4d207))
7
+
8
+ ## [0.1.15](https://github.com/klueless-io/rails_app_generator/compare/v0.1.14...v0.1.15) (2022-08-04)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * addon acts_as_list ([6b7e759](https://github.com/klueless-io/rails_app_generator/commit/6b7e759b1601300b7f616ced2a8dce27056bf781))
14
+ * addon acts_as_list ([c88e583](https://github.com/klueless-io/rails_app_generator/commit/c88e58373833e5ab9685dd1ddf7dd4327ef7db8b))
15
+
16
+ ## [0.1.14](https://github.com/klueless-io/rails_app_generator/compare/v0.1.13...v0.1.14) (2022-08-04)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * add twilio addon ([2a70a12](https://github.com/klueless-io/rails_app_generator/commit/2a70a1216dc9d7475289a154f6c7b8c4a2a80403))
22
+
1
23
  ## [0.1.13](https://github.com/klueless-io/rails_app_generator/compare/v0.1.12...v0.1.13) (2022-08-03)
2
24
 
3
25
 
@@ -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,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def some_action
6
+ end
7
+ end
@@ -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,2 @@
1
+ <% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
2
+ <% if flash.any? %><hr /><% end %>
@@ -0,0 +1,3 @@
1
+ <footer>
2
+ <hr />
3
+ </footer>
@@ -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,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # require 'pry'
4
+
5
+ # Do some browser detection with Ruby.
6
+ #
7
+ # exe/rag addons/browser
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
+ 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
+
@@ -0,0 +1,5 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ @browser = Browser.new(request.user_agent, accept_language: "en-us")
4
+ end
5
+ end
@@ -0,0 +1,103 @@
1
+ <h1>Browser</h1>
2
+
3
+ <h2>Do some browser detection with Ruby.</h2>
4
+
5
+ <ul>
6
+ <li><code>browser.bot?</code> <%= browser.bot? %>
7
+ <li><code>browser.chrome?</code> <%= browser.chrome? %>
8
+ <li><code>browser.core_media?</code> <%= browser.core_media? %>
9
+ <li><code>browser.duck_duck_go?</code> <%= browser.duck_duck_go? %>
10
+ <li><code>browser.edge?</code> <%= browser.edge? %>
11
+ <li><code>browser.electron?</code> <%= browser.electron? %>
12
+ <li><code>browser.firefox?</code> <%= browser.firefox? %>
13
+ <li><code>browser.full_version</code> <%= browser.full_version %>
14
+ <li><code>browser.ie?</code> <%= browser.ie? %>
15
+ <li><code>browser.known?</code> <%= browser.known? %>
16
+ <li><code>browser.unknown?</code> <%= browser.unknown? %>
17
+ <li><code>browser.meta</code> <%= browser.meta %>
18
+ <li><code>browser.name</code> <%= browser.name %>
19
+ <li><code>browser.nokia?</code> <%= browser.nokia? %>
20
+ <li><code>browser.opera?</code> <%= browser.opera? %>
21
+ <li><code>browser.opera_mini?</code> <%= browser.opera_mini? %>
22
+ <li><code>browser.phantom_js?</code> <%= browser.phantom_js? %>
23
+ <li><code>browser.quicktime?</code> <%= browser.quicktime? %>
24
+ <li><code>browser.safari?</code> <%= browser.safari? %>
25
+ <li><code>browser.safari_webapp_mode?</code> <%= browser.safari_webapp_mode? %>
26
+ <li><code>browser.samsung_browser?</code> <%= browser.samsung_browser? %>
27
+ <li><code>browser.to_s</code> <%= browser.to_s %>
28
+ <li><code>browser.uc_browser?</code> <%= browser.uc_browser? %>
29
+ <li><code>browser.version</code> <%= browser.version %>
30
+ <li><code>browser.webkit?</code> <%= browser.webkit? %>
31
+ <li><code>browser.webkit_full_version</code> <%= browser.webkit_full_version %>
32
+ <li><code>browser.yandex?</code> <%= browser.yandex? %>
33
+ <li><code>browser.wechat?</code> <%= browser.wechat? %>
34
+ <li><code>browser.qq?</code> <%= browser.qq? %>
35
+ <li><code>browser.weibo?</code> <%= browser.weibo? %>
36
+ <li><code>browser.sputnik?</code> <%= browser.sputnik? %>
37
+ <li><code>browser.sougou_browser?</code> <%= browser.sougou_browser? %>
38
+ <li><code>browser.bot.name</code> <%= browser.bot.name %>
39
+ <li><code>browser.bot.search_engine?</code> <%= browser.bot.search_engine? %>
40
+ <li><code>browser.bot?</code> <%= browser.bot? %>
41
+ <li><code>browser.bot.why? </code> <%= browser.bot.why? %>
42
+ <li><code>browser.device</code> <%= browser.device %>
43
+ <li><code>browser.device.id</code> <%= browser.device.id %>
44
+ <li><code>browser.device.name</code> <%= browser.device.name %>
45
+ <li><code>browser.device.unknown?</code> <%= browser.device.unknown? %>
46
+ <li><code>browser.device.blackberry_playbook?</code> <%= browser.device.blackberry_playbook? %>
47
+ <li><code>browser.device.console?</code> <%= browser.device.console? %>
48
+ <li><code>browser.device.ipad?</code> <%= browser.device.ipad? %>
49
+ <li><code>browser.device.iphone?</code> <%= browser.device.iphone? %>
50
+ <li><code>browser.device.ipod_touch?</code> <%= browser.device.ipod_touch? %>
51
+ <li><code>browser.device.kindle?</code> <%= browser.device.kindle? %>
52
+ <li><code>browser.device.kindle_fire?</code> <%= browser.device.kindle_fire? %>
53
+ <li><code>browser.device.mobile?</code> <%= browser.device.mobile? %>
54
+ <li><code>browser.device.nintendo?</code> <%= browser.device.nintendo? %>
55
+ <li><code>browser.device.playstation?</code> <%= browser.device.playstation? %>
56
+ <li><code>browser.device.ps3?</code> <%= browser.device.ps3? %>
57
+ <li><code>browser.device.ps4?</code> <%= browser.device.ps4? %>
58
+ <li><code>browser.device.psp?</code> <%= browser.device.psp? %>
59
+ <li><code>browser.device.silk?</code> <%= browser.device.silk? %>
60
+ <li><code>browser.device.surface?</code> <%= browser.device.surface? %>
61
+ <li><code>browser.device.tablet?</code> <%= browser.device.tablet? %>
62
+ <li><code>browser.device.tv?</code> <%= browser.device.tv? %>
63
+ <li><code>browser.device.vita?</code> <%= browser.device.vita? %>
64
+ <li><code>browser.device.wii?</code> <%= browser.device.wii? %>
65
+ <li><code>browser.device.wiiu?</code> <%= browser.device.wiiu? %>
66
+ <li><code>browser.device.samsung?</code> <%= browser.device.samsung? %>
67
+ <li><code>browser.device.switch?</code> <%= browser.device.switch? %>
68
+ <li><code>browser.device.xbox?</code> <%= browser.device.xbox? %>
69
+ <li><code>browser.device.xbox_360?</code> <%= browser.device.xbox_360? %>
70
+ <li><code>browser.device.xbox_one?</code> <%= browser.device.xbox_one? %>
71
+ <li><code>browser.platform</code> <%= browser.platform %>
72
+ <li><code>browser.platform.id</code> <%= browser.platform.id %>
73
+ <li><code>browser.platform.name</code> <%= browser.platform.name %>
74
+ <li><code>browser.platform.version</code> <%= browser.platform.version %>
75
+ <li><code>browser.platform.adobe_air?</code> <%= browser.platform.adobe_air? %>
76
+ <li><code>browser.platform.android?</code> <%= browser.platform.android? %>
77
+ <li><code>browser.platform.blackberry?</code> <%= browser.platform.blackberry? %>
78
+ <li><code>browser.platform.blackberry?(10) </code> <%= browser.platform.blackberry?(10) %>
79
+ <li><code>browser.platform.chrome_os?</code> <%= browser.platform.chrome_os? %>
80
+ <li><code>browser.platform.firefox_os?</code> <%= browser.platform.firefox_os? %>
81
+ <li><code>browser.platform.ios?</code> <%= browser.platform.ios? %>
82
+ <li><code>browser.platform.ios?(9)</code> <%= browser.platform.ios?(9) %>
83
+ <li><code>browser.platform.ios_app? </code> <%= browser.platform.ios_app? %>
84
+ <li><code>browser.platform.ios_webview? </code> <%= browser.platform.ios_webview? %>
85
+ <li><code>browser.platform.linux?</code> <%= browser.platform.linux? %>
86
+ <li><code>browser.platform.mac?</code> <%= browser.platform.mac? %>
87
+ <li><code>browser.platform.unknown?</code> <%= browser.platform.unknown? %>
88
+ <li><code>browser.platform.windows10?</code> <%= browser.platform.windows10? %>
89
+ <li><code>browser.platform.windows7?</code> <%= browser.platform.windows7? %>
90
+ <li><code>browser.platform.windows8?</code> <%= browser.platform.windows8? %>
91
+ <li><code>browser.platform.windows8_1?</code> <%= browser.platform.windows8_1? %>
92
+ <li><code>browser.platform.windows?</code> <%= browser.platform.windows? %>
93
+ <li><code>browser.platform.windows_mobile?</code> <%= browser.platform.windows_mobile? %>
94
+ <li><code>browser.platform.windows_phone?</code> <%= browser.platform.windows_phone? %>
95
+ <li><code>browser.platform.windows_rt?</code> <%= browser.platform.windows_rt? %>
96
+ <li><code>browser.platform.windows_touchscreen_desktop?</code> <%= browser.platform.windows_touchscreen_desktop? %>
97
+ <li><code>browser.platform.windows_vista?</code> <%= browser.platform.windows_vista? %>
98
+ <li><code>browser.platform.windows_wow64?</code> <%= browser.platform.windows_wow64? %>
99
+ <li><code>browser.platform.windows_x64?</code> <%= browser.platform.windows_x64? %>
100
+ <li><code>browser.platform.windows_x64_inclusive?</code> <%= browser.platform.windows_x64_inclusive? %>
101
+ <li><code>browser.platform.windows_xp?</code> <%= browser.platform.windows_xp? %>
102
+ <li><code>browser.platform.kai_os?</code> <%= browser.platform.kai_os? %>
103
+ </ul>
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ # require 'pry'
4
+
5
+ # Faker, a port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.
6
+ #
7
+ # exe/rag addons/faker
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
+ 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
+ # Other template command examples
27
+ # css_install('tailwind')
28
+ # rails_command('db:migrate')
29
+ # bundle_add('hotwire-rails')
30
+ # rails_command('hotwire:install')
31
+ # run('bin/importmap pin sortablejs')
32
+ # run('npm install daisyui')
33
+ # create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
34
+ # append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
35
+ # insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
36
+ # before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
37
+ # gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
38
+ # template 'home.css', 'app/assets/stylesheets/home.css'
@@ -0,0 +1,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def some_action
6
+ end
7
+ end