eitil 1.2.4 → 1.3.3

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 (166) 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_wrapper/lib/eitil_wrapper/callbacks/helper_methods.rb +8 -1
  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/eitil_wrapper/lib/eitil_wrapper/scopes/default_scopes.rb +8 -1
  12. data/lib/eitil/version.rb +1 -1
  13. data/spec/dummy_app/Rakefile +6 -0
  14. data/spec/dummy_app/app/assets/config/manifest.js +4 -0
  15. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  16. data/spec/dummy_app/app/assets/javascripts/cable.js +13 -0
  17. data/spec/dummy_app/app/assets/stylesheets/addresses.css +4 -0
  18. data/spec/dummy_app/app/assets/stylesheets/application.css +15 -0
  19. data/spec/dummy_app/app/assets/stylesheets/scaffold.css +80 -0
  20. data/spec/dummy_app/app/assets/stylesheets/users.css +4 -0
  21. data/spec/dummy_app/app/channels/application_cable/channel.rb +4 -0
  22. data/spec/dummy_app/app/channels/application_cable/connection.rb +4 -0
  23. data/spec/dummy_app/app/controllers/addresses_controller.rb +58 -0
  24. data/spec/dummy_app/app/controllers/application_controller.rb +5 -0
  25. data/spec/dummy_app/app/controllers/users_controller.rb +93 -0
  26. data/spec/dummy_app/app/decorators/address_decorator.rb +3 -0
  27. data/spec/dummy_app/app/decorators/application_decorator.rb +12 -0
  28. data/spec/dummy_app/app/decorators/user_decorator.rb +19 -0
  29. data/spec/dummy_app/app/helpers/addresses_helper.rb +2 -0
  30. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  31. data/spec/dummy_app/app/helpers/users_helper.rb +2 -0
  32. data/spec/dummy_app/app/jobs/application_job.rb +2 -0
  33. data/spec/dummy_app/app/mailers/application_mailer.rb +4 -0
  34. data/spec/dummy_app/app/models/address.rb +5 -0
  35. data/spec/dummy_app/app/models/application_record.rb +8 -0
  36. data/spec/dummy_app/app/models/user.rb +30 -0
  37. data/spec/dummy_app/app/views/addresses/_form.html.erb +17 -0
  38. data/spec/dummy_app/app/views/addresses/edit.html.erb +6 -0
  39. data/spec/dummy_app/app/views/addresses/index.html.erb +25 -0
  40. data/spec/dummy_app/app/views/addresses/new.html.erb +5 -0
  41. data/spec/dummy_app/app/views/addresses/show.html.erb +4 -0
  42. data/spec/dummy_app/app/views/layouts/application.html.erb +15 -0
  43. data/spec/dummy_app/app/views/layouts/mailer.html.erb +13 -0
  44. data/spec/dummy_app/app/views/layouts/mailer.text.erb +1 -0
  45. data/spec/dummy_app/app/views/users/_form.html.erb +17 -0
  46. data/spec/dummy_app/app/views/users/edit.html.erb +6 -0
  47. data/spec/dummy_app/app/views/users/index.html.erb +25 -0
  48. data/spec/dummy_app/app/views/users/new.html.erb +5 -0
  49. data/spec/dummy_app/app/views/users/show.html.erb +4 -0
  50. data/spec/dummy_app/bin/bundle +3 -0
  51. data/spec/dummy_app/bin/rails +4 -0
  52. data/spec/dummy_app/bin/rake +4 -0
  53. data/spec/dummy_app/bin/setup +36 -0
  54. data/spec/dummy_app/bin/update +31 -0
  55. data/spec/dummy_app/bin/yarn +11 -0
  56. data/spec/dummy_app/config/application.rb +16 -0
  57. data/spec/dummy_app/config/boot.rb +5 -0
  58. data/spec/dummy_app/config/cable.yml +10 -0
  59. data/spec/dummy_app/config/database.yml +25 -0
  60. data/spec/dummy_app/config/environment.rb +11 -0
  61. data/spec/dummy_app/config/environments/development.rb +61 -0
  62. data/spec/dummy_app/config/environments/production.rb +94 -0
  63. data/spec/dummy_app/config/environments/test.rb +46 -0
  64. data/spec/dummy_app/config/initializers/application_controller_renderer.rb +8 -0
  65. data/spec/dummy_app/config/initializers/assets.rb +14 -0
  66. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  67. data/spec/dummy_app/config/initializers/content_security_policy.rb +25 -0
  68. data/spec/dummy_app/config/initializers/cookies_serializer.rb +5 -0
  69. data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
  70. data/spec/dummy_app/config/initializers/inflections.rb +16 -0
  71. data/spec/dummy_app/config/initializers/mime_types.rb +4 -0
  72. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  73. data/spec/dummy_app/config/locales/en.yml +33 -0
  74. data/spec/dummy_app/config/puma.rb +34 -0
  75. data/spec/dummy_app/config/routes.rb +12 -0
  76. data/spec/dummy_app/config/spring.rb +6 -0
  77. data/spec/dummy_app/config/storage.yml +34 -0
  78. data/spec/dummy_app/config.ru +5 -0
  79. data/spec/dummy_app/db/development.sqlite3 +0 -0
  80. data/spec/dummy_app/db/migrate/20210907114344_create_users.rb +12 -0
  81. data/spec/dummy_app/db/migrate/20210907114557_create_addresses.rb +16 -0
  82. data/spec/dummy_app/db/migrate/20210907131339_add_multiple_columns_to_user.rb +8 -0
  83. data/spec/dummy_app/db/schema.rb +41 -0
  84. data/spec/dummy_app/db/test.sqlite3 +0 -0
  85. data/spec/dummy_app/log/decorator_log.log +42 -0
  86. data/spec/dummy_app/log/development.log +24 -0
  87. data/spec/dummy_app/log/test.log +0 -0
  88. data/spec/dummy_app/package.json +5 -0
  89. data/spec/dummy_app/public/404.html +67 -0
  90. data/spec/dummy_app/public/422.html +67 -0
  91. data/spec/dummy_app/public/500.html +66 -0
  92. data/spec/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
  93. data/spec/dummy_app/public/apple-touch-icon.png +0 -0
  94. data/spec/dummy_app/public/favicon.ico +0 -0
  95. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/2j/2jWL-rhQuwDjyPsAqfz1_wB_H15Kk2ODQ2dAu-XZKx8.cache +1 -0
  96. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6x/6x9nAtWMtOljHkcAvx9LS3_kzIpD7XoM5jqwKXqN8SU.cache +1 -0
  97. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7f/7fMKshWzk4gJEbG0FTuuuHVOeF6BG9SoIx1X0yGN4XA.cache +1 -0
  98. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8-/8-O-UfzZVhbu8Cty_FaH4c3xNM-Sm6U90BGLWmTPpSo.cache +1 -0
  99. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8a/8a5JUS7sZRAe1CpAiN0iy1n_apTjx0H3rkPqGgg_HHs.cache +1 -0
  100. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/9E/9EI_Wtkx262NF6vdNPozRjkOmUgT5wcyMxwPhhok91Y.cache +1 -0
  101. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Au/AutOawEb2V5QIxVjqKqmRFpvJ3BHEJvFMIphdZydKPY.cache +0 -0
  102. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/BZ/BZULOBoPeioJ3yr_GDNL-cF1brDPreCMd34hrDbHvX4.cache +0 -0
  103. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/CS/CSs23ds7URW15l5Z5w3b3A6CPJS5ODsgzz0mmAHULF0.cache +1 -0
  104. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Eu/EuFZYEzbxGLRX803DDnrfKQPcMoGo5ITR-9VuBY_35Q.cache +0 -0
  105. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLU4EKYSshHlQjgOqP6RDQ8z7GTRbHhl-2IBWvv363s.cache +0 -0
  106. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLl0vmABYcwCTORqhZlx9KLVZvAw1Sic_8-Vs5Q7F3I.cache +0 -0
  107. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/KF/KFlEJcPYkMbf3yhDJTUJ73BpWJ8BMzjQUhpLO1CZqUk.cache +1 -0
  108. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNUl7yichb1dUbkovvnOVoVxkVQnhwndYgJRJwoXO_k.cache +1 -0
  109. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LU/LUq0pj8f6-F5P5ZpVil-_pBLCVTYTqa-qRzQOVFkgGg.cache +1 -0
  110. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/N7/N7Q7f6mqtpX5Lxh78v1mILszsC6Oi9hrt9E8bYTCUg8.cache +0 -0
  111. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OJ/OJX-7cXh407miinHDx7z55OnuYnifbaiCSjus3I2ETg.cache +0 -0
  112. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/P-/P-WGZR_jmbgi7zjScSIzMbnxmPRhR0FG-sUCbx-W0jA.cache +1 -0
  113. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qd/QdDsJNHB1T-o6r9B1zTqkZ6nDWfFlq7i5HIqxsMqOR8.cache +1 -0
  114. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qv/QvPvnJIjqHAUeoUdS4dpH_JVRh4znkA7ig3VHz7onhE.cache +1 -0
  115. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +2 -0
  116. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEmdPmCEnqBmIu10fP0G66B333eV_jj1DT6NEM9BY5U.cache +1 -0
  117. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/XM/XMyLLsxd032ZvSGR9P5BcOxAXuQxt_wuaTVdjeuYUeU.cache +0 -0
  118. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Xn/XnnrCKCkM_Fa5bHMwSjQ_NTBPicUoSK3LOeYu-ZmpYo.cache +0 -0
  119. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
  120. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftREOVuSBdqj0d189uIhUmNEThLHS0nXTyt34tl_G9g.cache +0 -0
  121. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
  122. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iU/iU5Zc6hQ2jwcmv6lE2L4aWBJHHMnS1vrh0_LHR574kw.cache +1 -0
  123. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iZ/iZjLEYDTYhysPjIEb36PhNErZ4rRW1BniBfuH7oa1RI.cache +0 -0
  124. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ke/keL0ZyrZtXqgSINKKBK3qFEd2fvJSrv8qgU78i1-aqY.cache +1 -0
  125. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  126. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  127. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pa/pas5TN2JG4i2AUMntaZrRkOZ_AZhFBtsfPaUHKOSdnM.cache +0 -0
  128. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +2 -0
  129. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uQ/uQImR-NTBFCJ7TsnJRrKAG0zhTcX7vpg_MFvTWvWSGQ.cache +1 -0
  130. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uo/uosY6jh1_W3cVpcoQY0hcgG2zDeTVR169am2REYxMtI.cache +0 -0
  131. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yk/ykwP8uOyoTr4wPoEUoyB6Lrx9BG_9mWl6in8AJzBGPw.cache +1 -0
  132. data/spec/dummy_app/tmp/development_secret.txt +1 -0
  133. data/spec/dummy_app/tmp/restart.txt +0 -0
  134. data/spec/eitil_core/argument_helpers/all_args_to_ivars_bang_spec.rb +1 -1
  135. data/spec/eitil_core/argument_helpers/all_args_to_ivars_spec.rb +1 -1
  136. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_bang_spec.rb +1 -1
  137. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_spec.rb +1 -1
  138. data/spec/eitil_core/argument_helpers/args_to_h_bang_spec.rb +1 -1
  139. data/spec/eitil_core/argument_helpers/args_to_h_spec.rb +1 -1
  140. data/spec/eitil_core/argument_helpers/args_to_ivars_bang_spec.rb +1 -1
  141. data/spec/eitil_core/argument_helpers/args_to_ivars_spec.rb +1 -1
  142. data/spec/eitil_core/array/map_strings_spec.rb +2 -2
  143. data/spec/eitil_core/array/slice_hashes_spec.rb +1 -1
  144. data/spec/eitil_core/datetime/prettify_spec.rb +1 -1
  145. data/spec/eitil_core/errors/raise_error_spec.rb +1 -1
  146. data/spec/eitil_core/float/safe_to_i_spec.rb +1 -1
  147. data/spec/eitil_core/formatters/duck_set_spec.rb +3 -3
  148. data/spec/eitil_core/formatters/sql_spec.rb +3 -3
  149. data/spec/eitil_core/hash/auto_dig_spec.rb +1 -1
  150. data/spec/eitil_core/hash/transform_string_values_spec.rb +2 -2
  151. data/spec/eitil_core/safe_executions/safe_call.rb +1 -1
  152. data/spec/eitil_core/safe_executions/safe_send.rb +1 -1
  153. data/spec/eitil_core/setters/set_ivars_spec.rb +1 -1
  154. data/spec/eitil_core/string/colorize_spec.rb +91 -0
  155. data/spec/eitil_core/string/strip_base64_header_spec.rb +1 -1
  156. data/spec/eitil_core/string/to_filename_spec.rb +1 -1
  157. data/spec/eitil_core/type_checkers/is_num_or_nan_spec.rb +1 -1
  158. data/spec/eitil_integrate/application_exporter/auto_sum_spec.rb +106 -0
  159. data/spec/eitil_integrate/application_exporter/initialize_spec.rb +28 -0
  160. data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +34 -0
  161. data/spec/eitil_wrapper/decorators/decorators_spec.rb +49 -0
  162. data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +72 -0
  163. data/spec/eitil_wrapper/routes/extended_resources_spec.rb +16 -0
  164. data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +154 -0
  165. data/spec/spec_helper.rb +16 -6
  166. metadata +176 -4
@@ -0,0 +1,93 @@
1
+ class UsersController < ApplicationController
2
+
3
+ before_action :set_user, only: [:show, :edit, :update, :destroy]
4
+
5
+
6
+ # ---
7
+ # Tests for EitilWrapper::Decorator
8
+
9
+ before_action :set_user, only: [:decorator_a, :decorator_b, :decorator_c, :decorator_d]
10
+
11
+ # default
12
+ def decorator_a
13
+ hash = decorate(@user)
14
+ render json: hash
15
+ end
16
+
17
+ # specific dec_method
18
+ def decorator_b
19
+ hash = decorate(@user, dec_method: :first_and_last_name)
20
+ render json: hash
21
+ end
22
+
23
+ # post request, with 'isWeb' and 'isMobile' params
24
+ def decorator_c
25
+ hash = decorate(@user)
26
+ render json: hash
27
+ end
28
+
29
+ # specific dec_class
30
+ def decorator_d
31
+ hash = decorate(@user, dec_class: :Application, dec_method: :timestamps)
32
+ render json: hash
33
+ end
34
+
35
+ # ---
36
+
37
+
38
+
39
+ # GET /users
40
+ def index
41
+ @users = User.all
42
+ end
43
+
44
+ # GET /users/1
45
+ def show
46
+ end
47
+
48
+ # GET /users/new
49
+ def new
50
+ @user = User.new
51
+ end
52
+
53
+ # GET /users/1/edit
54
+ def edit
55
+ end
56
+
57
+ # POST /users
58
+ def create
59
+ @user = User.new(user_params)
60
+
61
+ if @user.save
62
+ redirect_to @user, notice: 'User was successfully created.'
63
+ else
64
+ render :new
65
+ end
66
+ end
67
+
68
+ # PATCH/PUT /users/1
69
+ def update
70
+ if @user.update(user_params)
71
+ redirect_to @user, notice: 'User was successfully updated.'
72
+ else
73
+ render :edit
74
+ end
75
+ end
76
+
77
+ # DELETE /users/1
78
+ def destroy
79
+ @user.destroy
80
+ redirect_to users_url, notice: 'User was successfully destroyed.'
81
+ end
82
+
83
+ private
84
+ # Use callbacks to share common setup or constraints between actions.
85
+ def set_user
86
+ @user = User.find(params[:id])
87
+ end
88
+
89
+ # Only allow a list of trusted parameters through.
90
+ def user_params
91
+ params.fetch(:user, {})
92
+ end
93
+ end
@@ -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