eitil 1.2.3 → 1.3.2

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.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/eitil_core/README.md +31 -0
  3. data/eitil_core/lib/eitil_core/string/colorize.rb +30 -0
  4. data/eitil_core/lib/eitil_core/string.rb +1 -0
  5. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb +3 -1
  6. data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +2 -0
  7. data/eitil_integrate/lib/eitil_integrate/application_exporter/style_cells.rb +5 -0
  8. data/eitil_support/lib/eitil_support/stacktrace/audit.rb +9 -0
  9. data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +3 -0
  10. data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +7 -2
  11. data/lib/eitil/version.rb +1 -1
  12. data/spec/dummy_app/Rakefile +6 -0
  13. data/spec/dummy_app/app/assets/config/manifest.js +4 -0
  14. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  15. data/spec/dummy_app/app/assets/javascripts/cable.js +13 -0
  16. data/spec/dummy_app/app/assets/stylesheets/addresses.css +4 -0
  17. data/spec/dummy_app/app/assets/stylesheets/application.css +15 -0
  18. data/spec/dummy_app/app/assets/stylesheets/scaffold.css +80 -0
  19. data/spec/dummy_app/app/assets/stylesheets/users.css +4 -0
  20. data/spec/dummy_app/app/channels/application_cable/channel.rb +4 -0
  21. data/spec/dummy_app/app/channels/application_cable/connection.rb +4 -0
  22. data/spec/dummy_app/app/controllers/addresses_controller.rb +58 -0
  23. data/spec/dummy_app/app/controllers/application_controller.rb +5 -0
  24. data/spec/dummy_app/app/controllers/users_controller.rb +93 -0
  25. data/spec/dummy_app/app/decorators/address_decorator.rb +3 -0
  26. data/spec/dummy_app/app/decorators/application_decorator.rb +12 -0
  27. data/spec/dummy_app/app/decorators/user_decorator.rb +19 -0
  28. data/spec/dummy_app/app/helpers/addresses_helper.rb +2 -0
  29. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  30. data/spec/dummy_app/app/helpers/users_helper.rb +2 -0
  31. data/spec/dummy_app/app/jobs/application_job.rb +2 -0
  32. data/spec/dummy_app/app/mailers/application_mailer.rb +4 -0
  33. data/spec/dummy_app/app/models/address.rb +5 -0
  34. data/spec/dummy_app/app/models/application_record.rb +8 -0
  35. data/spec/dummy_app/app/models/user.rb +30 -0
  36. data/spec/dummy_app/app/views/addresses/_form.html.erb +17 -0
  37. data/spec/dummy_app/app/views/addresses/edit.html.erb +6 -0
  38. data/spec/dummy_app/app/views/addresses/index.html.erb +25 -0
  39. data/spec/dummy_app/app/views/addresses/new.html.erb +5 -0
  40. data/spec/dummy_app/app/views/addresses/show.html.erb +4 -0
  41. data/spec/dummy_app/app/views/layouts/application.html.erb +15 -0
  42. data/spec/dummy_app/app/views/layouts/mailer.html.erb +13 -0
  43. data/spec/dummy_app/app/views/layouts/mailer.text.erb +1 -0
  44. data/spec/dummy_app/app/views/users/_form.html.erb +17 -0
  45. data/spec/dummy_app/app/views/users/edit.html.erb +6 -0
  46. data/spec/dummy_app/app/views/users/index.html.erb +25 -0
  47. data/spec/dummy_app/app/views/users/new.html.erb +5 -0
  48. data/spec/dummy_app/app/views/users/show.html.erb +4 -0
  49. data/spec/dummy_app/bin/bundle +3 -0
  50. data/spec/dummy_app/bin/rails +4 -0
  51. data/spec/dummy_app/bin/rake +4 -0
  52. data/spec/dummy_app/bin/setup +36 -0
  53. data/spec/dummy_app/bin/update +31 -0
  54. data/spec/dummy_app/bin/yarn +11 -0
  55. data/spec/dummy_app/config/application.rb +16 -0
  56. data/spec/dummy_app/config/boot.rb +5 -0
  57. data/spec/dummy_app/config/cable.yml +10 -0
  58. data/spec/dummy_app/config/database.yml +25 -0
  59. data/spec/dummy_app/config/environment.rb +11 -0
  60. data/spec/dummy_app/config/environments/development.rb +61 -0
  61. data/spec/dummy_app/config/environments/production.rb +94 -0
  62. data/spec/dummy_app/config/environments/test.rb +46 -0
  63. data/spec/dummy_app/config/initializers/application_controller_renderer.rb +8 -0
  64. data/spec/dummy_app/config/initializers/assets.rb +14 -0
  65. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  66. data/spec/dummy_app/config/initializers/content_security_policy.rb +25 -0
  67. data/spec/dummy_app/config/initializers/cookies_serializer.rb +5 -0
  68. data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
  69. data/spec/dummy_app/config/initializers/inflections.rb +16 -0
  70. data/spec/dummy_app/config/initializers/mime_types.rb +4 -0
  71. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  72. data/spec/dummy_app/config/locales/en.yml +33 -0
  73. data/spec/dummy_app/config/puma.rb +34 -0
  74. data/spec/dummy_app/config/routes.rb +12 -0
  75. data/spec/dummy_app/config/spring.rb +6 -0
  76. data/spec/dummy_app/config/storage.yml +34 -0
  77. data/spec/dummy_app/config.ru +5 -0
  78. data/spec/dummy_app/db/development.sqlite3 +0 -0
  79. data/spec/dummy_app/db/migrate/20210907114344_create_users.rb +12 -0
  80. data/spec/dummy_app/db/migrate/20210907114557_create_addresses.rb +16 -0
  81. data/spec/dummy_app/db/migrate/20210907131339_add_multiple_columns_to_user.rb +8 -0
  82. data/spec/dummy_app/db/schema.rb +41 -0
  83. data/spec/dummy_app/db/test.sqlite3 +0 -0
  84. data/spec/dummy_app/log/decorator_log.log +42 -0
  85. data/spec/dummy_app/log/development.log +24 -0
  86. data/spec/dummy_app/log/test.log +0 -0
  87. data/spec/dummy_app/package.json +5 -0
  88. data/spec/dummy_app/public/404.html +67 -0
  89. data/spec/dummy_app/public/422.html +67 -0
  90. data/spec/dummy_app/public/500.html +66 -0
  91. data/spec/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
  92. data/spec/dummy_app/public/apple-touch-icon.png +0 -0
  93. data/spec/dummy_app/public/favicon.ico +0 -0
  94. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/2j/2jWL-rhQuwDjyPsAqfz1_wB_H15Kk2ODQ2dAu-XZKx8.cache +1 -0
  95. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6x/6x9nAtWMtOljHkcAvx9LS3_kzIpD7XoM5jqwKXqN8SU.cache +1 -0
  96. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7f/7fMKshWzk4gJEbG0FTuuuHVOeF6BG9SoIx1X0yGN4XA.cache +1 -0
  97. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8-/8-O-UfzZVhbu8Cty_FaH4c3xNM-Sm6U90BGLWmTPpSo.cache +1 -0
  98. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8a/8a5JUS7sZRAe1CpAiN0iy1n_apTjx0H3rkPqGgg_HHs.cache +1 -0
  99. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/9E/9EI_Wtkx262NF6vdNPozRjkOmUgT5wcyMxwPhhok91Y.cache +1 -0
  100. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Au/AutOawEb2V5QIxVjqKqmRFpvJ3BHEJvFMIphdZydKPY.cache +0 -0
  101. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/BZ/BZULOBoPeioJ3yr_GDNL-cF1brDPreCMd34hrDbHvX4.cache +0 -0
  102. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/CS/CSs23ds7URW15l5Z5w3b3A6CPJS5ODsgzz0mmAHULF0.cache +1 -0
  103. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Eu/EuFZYEzbxGLRX803DDnrfKQPcMoGo5ITR-9VuBY_35Q.cache +0 -0
  104. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLU4EKYSshHlQjgOqP6RDQ8z7GTRbHhl-2IBWvv363s.cache +0 -0
  105. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLl0vmABYcwCTORqhZlx9KLVZvAw1Sic_8-Vs5Q7F3I.cache +0 -0
  106. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/KF/KFlEJcPYkMbf3yhDJTUJ73BpWJ8BMzjQUhpLO1CZqUk.cache +1 -0
  107. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNUl7yichb1dUbkovvnOVoVxkVQnhwndYgJRJwoXO_k.cache +1 -0
  108. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LU/LUq0pj8f6-F5P5ZpVil-_pBLCVTYTqa-qRzQOVFkgGg.cache +1 -0
  109. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/N7/N7Q7f6mqtpX5Lxh78v1mILszsC6Oi9hrt9E8bYTCUg8.cache +0 -0
  110. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OJ/OJX-7cXh407miinHDx7z55OnuYnifbaiCSjus3I2ETg.cache +0 -0
  111. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/P-/P-WGZR_jmbgi7zjScSIzMbnxmPRhR0FG-sUCbx-W0jA.cache +1 -0
  112. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qd/QdDsJNHB1T-o6r9B1zTqkZ6nDWfFlq7i5HIqxsMqOR8.cache +1 -0
  113. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qv/QvPvnJIjqHAUeoUdS4dpH_JVRh4znkA7ig3VHz7onhE.cache +1 -0
  114. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +2 -0
  115. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEmdPmCEnqBmIu10fP0G66B333eV_jj1DT6NEM9BY5U.cache +1 -0
  116. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/XM/XMyLLsxd032ZvSGR9P5BcOxAXuQxt_wuaTVdjeuYUeU.cache +0 -0
  117. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Xn/XnnrCKCkM_Fa5bHMwSjQ_NTBPicUoSK3LOeYu-ZmpYo.cache +0 -0
  118. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
  119. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftREOVuSBdqj0d189uIhUmNEThLHS0nXTyt34tl_G9g.cache +0 -0
  120. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
  121. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iU/iU5Zc6hQ2jwcmv6lE2L4aWBJHHMnS1vrh0_LHR574kw.cache +1 -0
  122. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iZ/iZjLEYDTYhysPjIEb36PhNErZ4rRW1BniBfuH7oa1RI.cache +0 -0
  123. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ke/keL0ZyrZtXqgSINKKBK3qFEd2fvJSrv8qgU78i1-aqY.cache +1 -0
  124. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  125. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  126. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pa/pas5TN2JG4i2AUMntaZrRkOZ_AZhFBtsfPaUHKOSdnM.cache +0 -0
  127. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +2 -0
  128. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uQ/uQImR-NTBFCJ7TsnJRrKAG0zhTcX7vpg_MFvTWvWSGQ.cache +1 -0
  129. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uo/uosY6jh1_W3cVpcoQY0hcgG2zDeTVR169am2REYxMtI.cache +0 -0
  130. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yk/ykwP8uOyoTr4wPoEUoyB6Lrx9BG_9mWl6in8AJzBGPw.cache +1 -0
  131. data/spec/dummy_app/tmp/development_secret.txt +1 -0
  132. data/spec/dummy_app/tmp/restart.txt +0 -0
  133. data/spec/eitil_core/argument_helpers/all_args_to_ivars_bang_spec.rb +1 -1
  134. data/spec/eitil_core/argument_helpers/all_args_to_ivars_spec.rb +1 -1
  135. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_bang_spec.rb +1 -1
  136. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_spec.rb +1 -1
  137. data/spec/eitil_core/argument_helpers/args_to_h_bang_spec.rb +1 -1
  138. data/spec/eitil_core/argument_helpers/args_to_h_spec.rb +1 -1
  139. data/spec/eitil_core/argument_helpers/args_to_ivars_bang_spec.rb +1 -1
  140. data/spec/eitil_core/argument_helpers/args_to_ivars_spec.rb +1 -1
  141. data/spec/eitil_core/array/map_strings_spec.rb +2 -2
  142. data/spec/eitil_core/array/slice_hashes_spec.rb +1 -1
  143. data/spec/eitil_core/datetime/prettify_spec.rb +1 -1
  144. data/spec/eitil_core/errors/raise_error_spec.rb +1 -1
  145. data/spec/eitil_core/float/safe_to_i_spec.rb +1 -1
  146. data/spec/eitil_core/formatters/duck_set_spec.rb +3 -3
  147. data/spec/eitil_core/formatters/sql_spec.rb +3 -3
  148. data/spec/eitil_core/hash/auto_dig_spec.rb +1 -1
  149. data/spec/eitil_core/hash/transform_string_values_spec.rb +2 -2
  150. data/spec/eitil_core/safe_executions/safe_call.rb +1 -1
  151. data/spec/eitil_core/safe_executions/safe_send.rb +1 -1
  152. data/spec/eitil_core/setters/set_ivars_spec.rb +1 -1
  153. data/spec/eitil_core/string/colorize_spec.rb +91 -0
  154. data/spec/eitil_core/string/strip_base64_header_spec.rb +1 -1
  155. data/spec/eitil_core/string/to_filename_spec.rb +1 -1
  156. data/spec/eitil_core/type_checkers/is_num_or_nan_spec.rb +1 -1
  157. data/spec/eitil_integrate/application_exporter/auto_sum_spec.rb +106 -0
  158. data/spec/eitil_integrate/application_exporter/initialize_spec.rb +28 -0
  159. data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +34 -0
  160. data/spec/eitil_wrapper/decorators/decorators_spec.rb +49 -0
  161. data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +72 -0
  162. data/spec/eitil_wrapper/routes/extended_resources_spec.rb +16 -0
  163. data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +154 -0
  164. data/spec/spec_helper.rb +16 -6
  165. metadata +176 -4
@@ -0,0 +1,3 @@
1
+ class AddressDecorator < ApplicationDecorator
2
+
3
+ end
@@ -0,0 +1,12 @@
1
+ class ApplicationDecorator < EitilWrapper::ApplicationDecorator
2
+
3
+ # ---
4
+ # Tests for EitilWrapper::Decorator
5
+
6
+ def timestamps(record)
7
+ record.slice(:created_at, :updated_at)
8
+ end
9
+
10
+ # ---
11
+
12
+ end
@@ -0,0 +1,19 @@
1
+ class UserDecorator < ApplicationDecorator
2
+
3
+ def first_and_last_name(user)
4
+ user.slice(:first_name, :last_name)
5
+ end
6
+
7
+ def app(user)
8
+ user.slice(:phone, :email)
9
+ end
10
+
11
+ def web(user)
12
+ user.slice(:age, :wage)
13
+ end
14
+
15
+ def base(user)
16
+ user.as_json
17
+ end
18
+
19
+ end
@@ -0,0 +1,2 @@
1
+ module AddressesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module UsersHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationJob < ActiveJob::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: 'from@example.com'
3
+ layout 'mailer'
4
+ end
@@ -0,0 +1,5 @@
1
+ class Address < ApplicationRecord
2
+
3
+ belongs_to :user
4
+
5
+ end
@@ -0,0 +1,8 @@
1
+
2
+ class ApplicationRecord < ActiveRecord::Base
3
+
4
+ self.abstract_class = true
5
+
6
+ Eitil::ApplicationRecordModules.each { |_module| extend _module } if Rails.env.development? || Rails.env.test?
7
+
8
+ end
@@ -0,0 +1,30 @@
1
+ class User < ApplicationRecord
2
+
3
+ has_one :address
4
+
5
+ # ---
6
+ # below are methods, used for testing EitilWrapper::Jobs
7
+
8
+ def self.this_is_a_singleton_method(positional_value = nil, keyword_value: nil)
9
+ "this is a singleton method"
10
+ return positional_value if positional_value
11
+ return keyword_value if keyword_value
12
+ return nil
13
+ end
14
+
15
+ new_job :this_is_a_singleton_method
16
+ new_job_now :this_is_a_singleton_method
17
+
18
+ def this_is_an_instance_method(positional_value = nil, keyword_value: nil)
19
+ "this is an instance method"
20
+ return positional_value if positional_value
21
+ return keyword_value if keyword_value
22
+ return nil
23
+ end
24
+
25
+ new_job :this_is_an_instance_method
26
+ new_job_now :this_is_an_instance_method
27
+
28
+ # ---
29
+
30
+ end
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: address) do |form| %>
2
+ <% if address.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(address.errors.count, "error") %> prohibited this address from being saved:</h2>
5
+
6
+ <ul>
7
+ <% address.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="actions">
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing Address</h1>
2
+
3
+ <%= render 'form', address: @address %>
4
+
5
+ <%= link_to 'Show', @address %> |
6
+ <%= link_to 'Back', addresses_path %>
@@ -0,0 +1,25 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <h1>Addresses</h1>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th colspan="3"></th>
9
+ </tr>
10
+ </thead>
11
+
12
+ <tbody>
13
+ <% @addresses.each do |address| %>
14
+ <tr>
15
+ <td><%= link_to 'Show', address %></td>
16
+ <td><%= link_to 'Edit', edit_address_path(address) %></td>
17
+ <td><%= link_to 'Destroy', address, method: :delete, data: { confirm: 'Are you sure?' } %></td>
18
+ </tr>
19
+ <% end %>
20
+ </tbody>
21
+ </table>
22
+
23
+ <br>
24
+
25
+ <%= link_to 'New Address', new_address_path %>
@@ -0,0 +1,5 @@
1
+ <h1>New Address</h1>
2
+
3
+ <%= render 'form', address: @address %>
4
+
5
+ <%= link_to 'Back', addresses_path %>
@@ -0,0 +1,4 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <%= link_to 'Edit', edit_address_path(@address) %> |
4
+ <%= link_to 'Back', addresses_path %>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag 'application', media: 'all' %>
9
+ <%= javascript_include_tag 'application' %>
10
+ </head>
11
+
12
+ <body>
13
+ <%= yield %>
14
+ </body>
15
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
+ <style>
6
+ /* Email styles need to be inline */
7
+ </style>
8
+ </head>
9
+
10
+ <body>
11
+ <%= yield %>
12
+ </body>
13
+ </html>
@@ -0,0 +1 @@
1
+ <%= yield %>
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: user) do |form| %>
2
+ <% if user.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
5
+
6
+ <ul>
7
+ <% user.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="actions">
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing User</h1>
2
+
3
+ <%= render 'form', user: @user %>
4
+
5
+ <%= link_to 'Show', @user %> |
6
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,25 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <h1>Users</h1>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th colspan="3"></th>
9
+ </tr>
10
+ </thead>
11
+
12
+ <tbody>
13
+ <% @users.each do |user| %>
14
+ <tr>
15
+ <td><%= link_to 'Show', user %></td>
16
+ <td><%= link_to 'Edit', edit_user_path(user) %></td>
17
+ <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
18
+ </tr>
19
+ <% end %>
20
+ </tbody>
21
+ </table>
22
+
23
+ <br>
24
+
25
+ <%= link_to 'New User', new_user_path %>
@@ -0,0 +1,5 @@
1
+ <h1>New User</h1>
2
+
3
+ <%= render 'form', user: @user %>
4
+
5
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,4 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <%= link_to 'Edit', edit_user_path(@user) %> |
4
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../config/application', __dir__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ include FileUtils
4
+
5
+ # path to your application root.
6
+ APP_ROOT = File.expand_path('..', __dir__)
7
+
8
+ def system!(*args)
9
+ system(*args) || abort("\n== Command #{args} failed ==")
10
+ end
11
+
12
+ chdir APP_ROOT do
13
+ # This script is a starting point to setup your application.
14
+ # Add necessary setup steps to this file.
15
+
16
+ puts '== Installing dependencies =='
17
+ system! 'gem install bundler --conservative'
18
+ system('bundle check') || system!('bundle install')
19
+
20
+ # Install JavaScript dependencies if using Yarn
21
+ # system('bin/yarn')
22
+
23
+ # puts "\n== Copying sample files =="
24
+ # unless File.exist?('config/database.yml')
25
+ # cp 'config/database.yml.sample', 'config/database.yml'
26
+ # end
27
+
28
+ puts "\n== Preparing database =="
29
+ system! 'bin/rails db:setup'
30
+
31
+ puts "\n== Removing old logs and tempfiles =="
32
+ system! 'bin/rails log:clear tmp:clear'
33
+
34
+ puts "\n== Restarting application server =="
35
+ system! 'bin/rails restart'
36
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ include FileUtils
4
+
5
+ # path to your application root.
6
+ APP_ROOT = File.expand_path('..', __dir__)
7
+
8
+ def system!(*args)
9
+ system(*args) || abort("\n== Command #{args} failed ==")
10
+ end
11
+
12
+ chdir APP_ROOT do
13
+ # This script is a way to update your development environment automatically.
14
+ # Add necessary update steps to this file.
15
+
16
+ puts '== Installing dependencies =='
17
+ system! 'gem install bundler --conservative'
18
+ system('bundle check') || system!('bundle install')
19
+
20
+ # Install JavaScript dependencies if using Yarn
21
+ # system('bin/yarn')
22
+
23
+ puts "\n== Updating database =="
24
+ system! 'bin/rails db:migrate'
25
+
26
+ puts "\n== Removing old logs and tempfiles =="
27
+ system! 'bin/rails log:clear tmp:clear'
28
+
29
+ puts "\n== Restarting application server =="
30
+ system! 'bin/rails restart'
31
+ end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path('..', __dir__)
3
+ Dir.chdir(APP_ROOT) do
4
+ begin
5
+ exec "yarnpkg", *ARGV
6
+ rescue Errno::ENOENT
7
+ $stderr.puts "Yarn executable was not detected in the system."
8
+ $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
9
+ exit 1
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'boot'
2
+
3
+ require 'rails/all'
4
+
5
+ require 'eitil/all'
6
+
7
+ Bundler.require(*Rails.groups)
8
+
9
+ module DummyApp
10
+ class Application < Rails::Application
11
+
12
+ config.load_defaults 5.2
13
+
14
+ end
15
+ end
16
+
@@ -0,0 +1,5 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
3
+
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
5
+ $LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
@@ -0,0 +1,10 @@
1
+ development:
2
+ adapter: async
3
+
4
+ test:
5
+ adapter: async
6
+
7
+ production:
8
+ adapter: redis
9
+ url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
10
+ channel_prefix: dummy_production
@@ -0,0 +1,25 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ #
4
+ # Ensure the SQLite 3 gem is defined in your Gemfile
5
+ # gem 'sqlite3'
6
+ #
7
+ default: &default
8
+ adapter: sqlite3
9
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
10
+ timeout: 5000
11
+
12
+ development:
13
+ <<: *default
14
+ database: db/development.sqlite3
15
+
16
+ # Warning: The database defined as "test" will be erased and
17
+ # re-generated from your development database when you run "rake".
18
+ # Do not set this db to the same as development or production.
19
+ test:
20
+ <<: *default
21
+ database: db/test.sqlite3
22
+
23
+ production:
24
+ <<: *default
25
+ database: db/production.sqlite3