glib-web 0.5.97 → 0.5.98

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +149 -149
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +18 -18
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
  20. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  21. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  22. data/app/helpers/glib/json_ui/action_builder/iap.rb +15 -15
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +38 -38
  27. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  28. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  29. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  30. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  31. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  32. data/app/helpers/glib/json_ui/menu_builder.rb +96 -96
  33. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  34. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  38. data/app/helpers/glib/json_ui/view_builder/charts.rb +49 -49
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +296 -296
  40. data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +262 -262
  42. data/app/helpers/glib/json_ui/view_builder.rb +256 -253
  43. data/app/helpers/glib/urls_helper.rb +12 -12
  44. data/app/models/concerns/glib/soft_deletable.rb +73 -73
  45. data/app/models/glib/active_storage/attachment.rb +9 -9
  46. data/app/models/glib/active_storage/blob.rb +9 -9
  47. data/app/models/glib/application_record.rb +18 -18
  48. data/app/models/glib/dynamic_text_record.rb +9 -9
  49. data/app/models/glib/text.rb +95 -95
  50. data/app/policies/glib/application_policy.rb +191 -191
  51. data/app/validators/email_typo_validator.rb +38 -38
  52. data/app/validators/email_validator.rb +7 -7
  53. data/app/validators/url_validator.rb +20 -20
  54. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +72 -72
  55. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  56. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  59. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  60. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  61. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  62. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  65. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +10 -10
  66. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  67. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  68. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +27 -27
  69. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +38 -38
  70. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  71. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -24
  72. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  73. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +37 -37
  74. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  75. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  76. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  77. data/app/views/json_ui/garage/forms/index.json.jbuilder +120 -120
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  79. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  80. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  81. data/app/views/json_ui/garage/forms/payments.json.jbuilder +34 -34
  82. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +89 -89
  83. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  84. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  85. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -91
  86. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +150 -150
  87. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  88. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  89. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  90. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  91. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  92. data/app/views/json_ui/garage/forms/submit_on_change.json.jbuilder +28 -28
  93. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
  94. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  95. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  96. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  97. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  98. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +30 -30
  99. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  101. data/app/views/json_ui/garage/lists/autoload_as_needed_responsive_columns.json.jbuilder +27 -27
  102. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  103. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  104. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  105. data/app/views/json_ui/garage/lists/index.json.jbuilder +41 -41
  106. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  107. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  108. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  109. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  110. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  111. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  112. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  113. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  114. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  115. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  116. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  117. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  118. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  119. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  120. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  121. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +92 -92
  122. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  123. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +38 -38
  125. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  126. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  127. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +101 -101
  128. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  129. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  130. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  131. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  132. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  133. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  134. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  135. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  136. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  137. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  139. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  140. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  141. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  142. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  143. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  144. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  145. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  146. data/app/views/json_ui/garage/views/banners.json.jbuilder +67 -67
  147. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  148. data/app/views/json_ui/garage/views/charts.json.jbuilder +125 -125
  149. data/app/views/json_ui/garage/views/controls.json.jbuilder +60 -60
  150. data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
  151. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  152. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  153. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  154. data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
  155. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  156. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  157. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  158. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  159. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  160. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  161. data/app/views/json_ui/garage/views/progress.json.jbuilder +31 -31
  162. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  163. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  164. data/config/routes.rb +7 -7
  165. data/lib/generators/glib/install_generator.rb +24 -24
  166. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  167. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  168. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  169. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  170. data/lib/generators/templates/database.yml +107 -107
  171. data/lib/generators/templates/dynamic_text.rb +2 -2
  172. data/lib/glib/crypt/utils.rb +26 -26
  173. data/lib/glib/dynamic_text/config.rb +21 -21
  174. data/lib/glib/engine.rb +7 -7
  175. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  176. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  177. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  178. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  179. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  180. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  181. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  182. data/lib/glib/json_crawler/coverage.rb +20 -20
  183. data/lib/glib/json_crawler/http.rb +120 -120
  184. data/lib/glib/json_crawler/router.rb +90 -90
  185. data/lib/glib/json_crawler.rb +11 -11
  186. data/lib/glib/mailer_tester.rb +36 -36
  187. data/lib/glib/test_helpers.rb +52 -52
  188. data/lib/glib/value.rb +7 -7
  189. data/lib/glib/version.rb +5 -5
  190. data/lib/glib-web.rb +9 -9
  191. data/lib/tasks/db.rake +95 -95
  192. metadata +2 -3
@@ -1,52 +1,52 @@
1
- module Glib
2
- module TestHelpers
3
- def response_assert_equal
4
- expected = __get_previous_result_from_git
5
- result = __log(response.body)
6
- assert_equal JSON.parse(expected), JSON.parse(result), "Result mismatch! #{__git_is_available? ? `git diff #{__log_dir}/#{__log_file}` : ''}"
7
- end
8
-
9
- private
10
- def __git_is_available?
11
- @__git_is_available ||= (`git status 2>&1` =~ /fatal/).nil?
12
- end
13
-
14
- def __log_dir
15
- if @__log_dir.nil?
16
- @__log_dir = File.expand_path(
17
- "#{Rails.root}/test/controllers/#{self.class.to_s.underscore}_results",
18
- File.dirname(__FILE__)
19
- )
20
- unless File.directory?(@__log_dir)
21
- FileUtils.mkdir_p(@__log_dir)
22
- end
23
- end
24
- @__log_dir
25
- end
26
-
27
- def __log_file
28
- @__log_file ||= "#{self.method_name}.json"
29
- end
30
-
31
- def __log(json)
32
- file = File.open("#{File.join(__log_dir, __log_file)}", 'w') do |f|
33
- f << JSON.pretty_generate(JSON.parse(json))
34
- end
35
- file.close
36
- json
37
- end
38
-
39
- def __get_previous_result_from_git
40
- if __git_is_available?
41
- `git checkout -- "#{File.join(__log_dir, __log_file)}" > /dev/null 2>&1`
42
- end
43
- if File.exist?(
44
- File.join(__log_dir, __log_file)
45
- )
46
- File.read(File.join(__log_dir, __log_file))
47
- else
48
- "\{\}"
49
- end
50
- end
51
- end
52
- end
1
+ module Glib
2
+ module TestHelpers
3
+ def response_assert_equal
4
+ expected = __get_previous_result_from_git
5
+ result = __log(response.body)
6
+ assert_equal JSON.parse(expected), JSON.parse(result), "Result mismatch! #{__git_is_available? ? `git diff #{__log_dir}/#{__log_file}` : ''}"
7
+ end
8
+
9
+ private
10
+ def __git_is_available?
11
+ @__git_is_available ||= (`git status 2>&1` =~ /fatal/).nil?
12
+ end
13
+
14
+ def __log_dir
15
+ if @__log_dir.nil?
16
+ @__log_dir = File.expand_path(
17
+ "#{Rails.root}/test/controllers/#{self.class.to_s.underscore}_results",
18
+ File.dirname(__FILE__)
19
+ )
20
+ unless File.directory?(@__log_dir)
21
+ FileUtils.mkdir_p(@__log_dir)
22
+ end
23
+ end
24
+ @__log_dir
25
+ end
26
+
27
+ def __log_file
28
+ @__log_file ||= "#{self.method_name}.json"
29
+ end
30
+
31
+ def __log(json)
32
+ file = File.open("#{File.join(__log_dir, __log_file)}", 'w') do |f|
33
+ f << JSON.pretty_generate(JSON.parse(json))
34
+ end
35
+ file.close
36
+ json
37
+ end
38
+
39
+ def __get_previous_result_from_git
40
+ if __git_is_available?
41
+ `git checkout -- "#{File.join(__log_dir, __log_file)}" > /dev/null 2>&1`
42
+ end
43
+ if File.exist?(
44
+ File.join(__log_dir, __log_file)
45
+ )
46
+ File.read(File.join(__log_dir, __log_file))
47
+ else
48
+ "\{\}"
49
+ end
50
+ end
51
+ end
52
+ end
data/lib/glib/value.rb CHANGED
@@ -1,7 +1,7 @@
1
- module Glib
2
- module Value
3
- # See ViewBuilder::Fields
4
- class DEFAULT
5
- end
6
- end
7
- end
1
+ module Glib
2
+ module Value
3
+ # See ViewBuilder::Fields
4
+ class DEFAULT
5
+ end
6
+ end
7
+ end
data/lib/glib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
- module Glib
2
- module Web
3
- VERSION = '0.0.1'
4
- end
5
- end
1
+ module Glib
2
+ module Web
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
data/lib/glib-web.rb CHANGED
@@ -1,9 +1,9 @@
1
- require 'glib/version'
2
- require 'glib/engine' if defined?(::Rails)
3
- require 'glib/value'
4
- require 'glib/json_crawler'
5
-
6
- require 'glib/dynamic_text'
7
- require 'glib/crypt'
8
- require 'glib/test_helpers'
9
- require 'glib/mailer_tester'
1
+ require 'glib/version'
2
+ require 'glib/engine' if defined?(::Rails)
3
+ require 'glib/value'
4
+ require 'glib/json_crawler'
5
+
6
+ require 'glib/dynamic_text'
7
+ require 'glib/crypt'
8
+ require 'glib/test_helpers'
9
+ require 'glib/mailer_tester'
data/lib/tasks/db.rake CHANGED
@@ -1,95 +1,95 @@
1
- desc 'Run migration scripts in db/migrate'
2
-
3
- Rake::Task['db:structure:dump'].clear
4
-
5
- namespace :db do
6
- namespace :fixtures do
7
- # Sourced from https://raw.githubusercontent.com/thams/db_fixtures_dump
8
- # Original from http://snippets.dzone.com/posts/show/4468 by MichaelBoutros
9
- #
10
- # Optimized version which uses to_yaml for content creation and checks
11
- # that models are ActiveRecord::Base models before trying to fetch
12
- # them from database.
13
-
14
- # Then forked from https://gist.github.com/iiska/1527911
15
- #
16
- # fixed obsolete use of RAILS_ROOT, glob
17
- # allow to specify output directory by FIXTURES_PATH
18
-
19
- desc 'Dumps all models into fixtures.'
20
- task dump: :environment do
21
- models = Dir.glob(Rails.root + 'app/models/**.rb').map do |s|
22
- Pathname.new(s).basename.to_s.gsub(/\.rb$/, '').camelize
23
- end
24
-
25
- begin
26
- active_storage_classes = ['ActiveStorage::Attachment', 'ActiveStorage::Blob']
27
- active_storage_classes.each do |klass|
28
- klass.constantize
29
- models << klass
30
- end
31
- rescue NameError
32
- puts 'ActiveStorage disabled'
33
- end
34
-
35
- # specify FIXTURES_PATH to test/fixtures if you do test:unit
36
- dump_dir = ENV['FIXTURES_PATH'] || 'test/fixtures/'
37
-
38
- excludes = YAML.load_file(File.join(Rails.root, 'config', 'excluded_fixtures.yml'))
39
-
40
- puts 'Found models: ' + models.join(', ')
41
- puts 'Excluding: ' + excludes.join(', ')
42
- puts 'Dumping to: ' + dump_dir
43
-
44
- models.each do |m|
45
- unless excludes.include?(m)
46
- model = m.constantize
47
- next unless model.ancestors.include?(ActiveRecord::Base)
48
-
49
- ids = model.column_names.select { |k| k.ends_with?('_id') }.sort
50
-
51
- entries = if model.column_names.include?('id')
52
- model.unscoped.order(:id).all
53
- elsif ids.any?
54
- model.unscoped.order(ids).all
55
- else
56
- model.unscoped.all
57
- end
58
-
59
- puts "Dumping model: #{m} (#{entries.length} entries)"
60
-
61
- model_file = File.join(Rails.root, dump_dir, model.table_name + '.yml')
62
- output = {}
63
-
64
- entries.each do |a|
65
- attrs = Hash[a.attributes.sort]
66
- attrs.delete_if { |k, v| v.nil? }
67
-
68
- id = if attrs.include?('id')
69
- [a.id]
70
- elsif ids.any?
71
- attrs.slice(*ids).values
72
- else
73
- [0]
74
- end
75
-
76
- attrs.each do |key, value|
77
- if value.is_a? ActiveSupport::TimeWithZone
78
- # Time.at(id.compact.inject(:+) * 100000).utc
79
- attrs[key] = value.utc
80
- elsif value.is_a? ActiveSupport::HashWithIndifferentAccess
81
- attrs[key] = value.to_json
82
- end
83
- end
84
-
85
- output["#{m}_#{id.join('_')}"] = attrs
86
- end
87
-
88
- file = File.open(model_file, 'w')
89
- file << output.to_yaml
90
- file.close
91
- end
92
- end
93
- end
94
- end
95
- end
1
+ desc 'Run migration scripts in db/migrate'
2
+
3
+ Rake::Task['db:structure:dump'].clear
4
+
5
+ namespace :db do
6
+ namespace :fixtures do
7
+ # Sourced from https://raw.githubusercontent.com/thams/db_fixtures_dump
8
+ # Original from http://snippets.dzone.com/posts/show/4468 by MichaelBoutros
9
+ #
10
+ # Optimized version which uses to_yaml for content creation and checks
11
+ # that models are ActiveRecord::Base models before trying to fetch
12
+ # them from database.
13
+
14
+ # Then forked from https://gist.github.com/iiska/1527911
15
+ #
16
+ # fixed obsolete use of RAILS_ROOT, glob
17
+ # allow to specify output directory by FIXTURES_PATH
18
+
19
+ desc 'Dumps all models into fixtures.'
20
+ task dump: :environment do
21
+ models = Dir.glob(Rails.root + 'app/models/**.rb').map do |s|
22
+ Pathname.new(s).basename.to_s.gsub(/\.rb$/, '').camelize
23
+ end
24
+
25
+ begin
26
+ active_storage_classes = ['ActiveStorage::Attachment', 'ActiveStorage::Blob']
27
+ active_storage_classes.each do |klass|
28
+ klass.constantize
29
+ models << klass
30
+ end
31
+ rescue NameError
32
+ puts 'ActiveStorage disabled'
33
+ end
34
+
35
+ # specify FIXTURES_PATH to test/fixtures if you do test:unit
36
+ dump_dir = ENV['FIXTURES_PATH'] || 'test/fixtures/'
37
+
38
+ excludes = YAML.load_file(File.join(Rails.root, 'config', 'excluded_fixtures.yml'))
39
+
40
+ puts 'Found models: ' + models.join(', ')
41
+ puts 'Excluding: ' + excludes.join(', ')
42
+ puts 'Dumping to: ' + dump_dir
43
+
44
+ models.each do |m|
45
+ unless excludes.include?(m)
46
+ model = m.constantize
47
+ next unless model.ancestors.include?(ActiveRecord::Base)
48
+
49
+ ids = model.column_names.select { |k| k.ends_with?('_id') }.sort
50
+
51
+ entries = if model.column_names.include?('id')
52
+ model.unscoped.order(:id).all
53
+ elsif ids.any?
54
+ model.unscoped.order(ids).all
55
+ else
56
+ model.unscoped.all
57
+ end
58
+
59
+ puts "Dumping model: #{m} (#{entries.length} entries)"
60
+
61
+ model_file = File.join(Rails.root, dump_dir, model.table_name + '.yml')
62
+ output = {}
63
+
64
+ entries.each do |a|
65
+ attrs = Hash[a.attributes.sort]
66
+ attrs.delete_if { |k, v| v.nil? }
67
+
68
+ id = if attrs.include?('id')
69
+ [a.id]
70
+ elsif ids.any?
71
+ attrs.slice(*ids).values
72
+ else
73
+ [0]
74
+ end
75
+
76
+ attrs.each do |key, value|
77
+ if value.is_a? ActiveSupport::TimeWithZone
78
+ # Time.at(id.compact.inject(:+) * 100000).utc
79
+ attrs[key] = value.utc
80
+ elsif value.is_a? ActiveSupport::HashWithIndifferentAccess
81
+ attrs[key] = value.to_json
82
+ end
83
+ end
84
+
85
+ output["#{m}_#{id.join('_')}"] = attrs
86
+ end
87
+
88
+ file = File.open(model_file, 'w')
89
+ file << output.to_yaml
90
+ file.close
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.97
4
+ version: 0.5.98
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -282,8 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
282
  - !ruby/object:Gem::Version
283
283
  version: '0'
284
284
  requirements: []
285
- rubyforge_project:
286
- rubygems_version: 2.7.6
285
+ rubygems_version: 3.1.4
287
286
  signing_key:
288
287
  specification_version: 4
289
288
  summary: ''