message_train 0.7.6 → 1.0.0

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 (171) hide show
  1. checksums.yaml +5 -5
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/ci.yml +86 -0
  4. data/.gitignore +64 -0
  5. data/.rubocop.yml +9 -0
  6. data/.rubocop_todo.yml +854 -2
  7. data/.ruby-version +1 -1
  8. data/.simplecov +2 -4
  9. data/CHANGELOG.md +128 -0
  10. data/CLAUDE.md +5 -0
  11. data/Gemfile +29 -31
  12. data/LICENSE.txt +1 -1
  13. data/README.md +106 -35
  14. data/Rakefile +4 -18
  15. data/app/assets/stylesheets/message_train.scss +405 -67
  16. data/app/controllers/concerns/message_train_support.rb +2 -2
  17. data/app/controllers/message_train/boxes_controller.rb +4 -2
  18. data/app/controllers/message_train/conversations_controller.rb +1 -0
  19. data/app/helpers/message_train/application_helper.rb +68 -0
  20. data/app/helpers/message_train/attachments_helper.rb +7 -4
  21. data/app/helpers/message_train/conversations_helper.rb +16 -16
  22. data/app/helpers/message_train/messages_helper.rb +23 -10
  23. data/app/javascript/controllers/message_train/bulk_actions_controller.js +36 -0
  24. data/app/javascript/controllers/message_train/lightbox_controller.js +25 -0
  25. data/app/javascript/controllers/message_train/nested_form_controller.js +36 -0
  26. data/app/javascript/controllers/message_train/recipient_autocomplete_controller.js +31 -0
  27. data/app/mailers/message_train/previews/receipt_mailer_preview.rb +7 -5
  28. data/app/models/message_train/attachment.rb +54 -42
  29. data/app/models/message_train/box.rb +2 -2
  30. data/app/models/message_train/conversation.rb +28 -2
  31. data/app/models/message_train/ignore.rb +2 -2
  32. data/app/models/message_train/message.rb +10 -4
  33. data/app/models/message_train/receipt.rb +27 -4
  34. data/app/models/message_train/unsubscribe.rb +1 -1
  35. data/app/views/application/404.html.haml +1 -3
  36. data/app/views/kaminari/_first_page.html.haml +1 -1
  37. data/app/views/kaminari/_last_page.html.haml +1 -1
  38. data/app/views/kaminari/_next_page.html.haml +1 -1
  39. data/app/views/kaminari/_page.html.haml +3 -3
  40. data/app/views/kaminari/_paginator.html.haml +12 -11
  41. data/app/views/kaminari/_prev_page.html.haml +1 -1
  42. data/app/views/message_train/application/_attachment_fields.html.haml +10 -7
  43. data/app/views/message_train/application/_attachment_link.html.haml +2 -2
  44. data/app/views/message_train/application/_widget.html.haml +2 -4
  45. data/app/views/message_train/boxes/_widget.html.haml +5 -5
  46. data/app/views/message_train/boxes/show.html.haml +28 -45
  47. data/app/views/message_train/collectives/_widget.html.haml +4 -4
  48. data/app/views/message_train/conversations/_conversation.html.haml +11 -11
  49. data/app/views/message_train/conversations/_deleted_toggle.html.haml +1 -1
  50. data/app/views/message_train/conversations/_ignored_toggle.html.haml +2 -2
  51. data/app/views/message_train/conversations/_read_toggle.html.haml +2 -2
  52. data/app/views/message_train/conversations/_toggle.html.haml +6 -4
  53. data/app/views/message_train/conversations/_trashed_toggle.html.haml +2 -2
  54. data/app/views/message_train/conversations/show.html.haml +8 -6
  55. data/app/views/message_train/messages/_deleted_toggle.html.haml +1 -1
  56. data/app/views/message_train/messages/_form.html.haml +22 -30
  57. data/app/views/message_train/messages/_message.html.haml +27 -45
  58. data/app/views/message_train/messages/_read_toggle.html.haml +2 -2
  59. data/app/views/message_train/messages/_toggle.html.haml +5 -1
  60. data/app/views/message_train/messages/_trashed_toggle.html.haml +2 -2
  61. data/app/views/message_train/unsubscribes/index.html.haml +12 -15
  62. data/badges/coverage.json +1 -0
  63. data/config/importmap.rb +2 -0
  64. data/config/locales/en.yml +6 -3
  65. data/db/migrate/20150721145319_create_message_train_conversations.rb +1 -1
  66. data/db/migrate/20150721160322_create_message_train_messages.rb +1 -1
  67. data/db/migrate/20150721161144_create_message_train_attachments.rb +5 -2
  68. data/db/migrate/20150721161940_create_message_train_receipts.rb +1 -1
  69. data/db/migrate/20150721163838_create_message_train_ignores.rb +1 -1
  70. data/db/migrate/20150901183458_add_received_through_to_message_train_receipts.rb +1 -1
  71. data/db/migrate/20151004184347_add_unique_index_to_receipts.rb +1 -1
  72. data/db/migrate/20151124000820_create_message_train_unsubscribes.rb +1 -1
  73. data/db/migrate/20260827095938_remove_paperclip_columns_from_message_train_attachments.rb +8 -0
  74. data/db/migrate/20260827171549_remove_body_from_message_train_messages.rb +5 -0
  75. data/db/migrate/20260827180000_add_marking_indexes.rb +9 -0
  76. data/db/migrate/20260827200000_add_body_back_to_message_train_messages.rb +5 -0
  77. data/docs/screenshots/inbox-desktop.png +0 -0
  78. data/docs/screenshots/inbox-mobile.png +0 -0
  79. data/lib/generators/message_train/install/install_generator.rb +1 -1
  80. data/lib/message_train/engine.rb +11 -0
  81. data/lib/message_train/instance_methods.rb +13 -7
  82. data/lib/message_train/localization.rb +4 -3
  83. data/lib/message_train/version.rb +1 -1
  84. data/lib/message_train.rb +0 -2
  85. data/message_train.gemspec +57 -389
  86. data/spec/controllers/message_train/boxes_controller_spec.rb +13 -8
  87. data/spec/controllers/message_train/concerns_spec.rb +2 -2
  88. data/spec/controllers/message_train/conversations_controller_spec.rb +36 -7
  89. data/spec/controllers/message_train/messages_controller_spec.rb +4 -4
  90. data/spec/dummy/app/assets/stylesheets/application.scss +141 -12
  91. data/spec/dummy/app/controllers/application_controller.rb +1 -1
  92. data/spec/dummy/app/javascript/application.js +4 -0
  93. data/spec/dummy/app/javascript/controllers/application.js +9 -0
  94. data/spec/dummy/app/javascript/controllers/index.js +4 -0
  95. data/spec/dummy/app/models/role.rb +1 -1
  96. data/spec/dummy/app/views/active_storage/blobs/_blob.html.erb +14 -0
  97. data/spec/dummy/app/views/layouts/_top_navigation.html.haml +18 -7
  98. data/spec/dummy/app/views/layouts/application.html.haml +22 -26
  99. data/spec/dummy/bin/importmap +4 -0
  100. data/spec/dummy/config/application.rb +7 -20
  101. data/spec/dummy/config/environments/development.rb +17 -21
  102. data/spec/dummy/config/environments/production.rb +11 -63
  103. data/spec/dummy/config/environments/test.rb +21 -16
  104. data/spec/dummy/config/importmap.rb +7 -0
  105. data/spec/dummy/config/initializers/assets.rb +1 -6
  106. data/spec/dummy/config/routes.rb +1 -1
  107. data/spec/dummy/config/storage.yml +7 -0
  108. data/spec/dummy/db/migrate/20150721140013_devise_create_users.rb +1 -1
  109. data/spec/dummy/db/migrate/20150721141009_rolify_create_roles.rb +1 -1
  110. data/spec/dummy/db/migrate/20150721141128_create_groups.rb +1 -1
  111. data/spec/dummy/db/migrate/20150721150307_add_display_name_column_to_users.rb +1 -1
  112. data/spec/dummy/db/migrate/20160207190402_create_message_train_conversations.message_train.rb +1 -1
  113. data/spec/dummy/db/migrate/20160207190403_create_message_train_messages.message_train.rb +1 -1
  114. data/spec/dummy/db/migrate/20160207190404_create_message_train_attachments.message_train.rb +5 -2
  115. data/spec/dummy/db/migrate/20160207190405_create_message_train_receipts.message_train.rb +1 -1
  116. data/spec/dummy/db/migrate/20160207190406_create_message_train_ignores.message_train.rb +1 -1
  117. data/spec/dummy/db/migrate/20160207190407_add_received_through_to_message_train_receipts.message_train.rb +1 -1
  118. data/spec/dummy/db/migrate/20160207190408_add_unique_index_to_receipts.message_train.rb +1 -1
  119. data/spec/dummy/db/migrate/20160207190409_create_message_train_unsubscribes.message_train.rb +1 -1
  120. data/spec/dummy/db/migrate/20260827095939_remove_paperclip_columns_from_message_train_attachments.message_train.rb +9 -0
  121. data/spec/dummy/db/migrate/20260827161141_create_active_storage_tables.active_storage.rb +57 -0
  122. data/spec/dummy/db/migrate/20260827171550_remove_body_from_message_train_messages.message_train.rb +6 -0
  123. data/spec/dummy/db/migrate/20260827225116_add_marking_indexes.message_train.rb +10 -0
  124. data/spec/dummy/db/migrate/20260828034830_add_body_back_to_message_train_messages.message_train.rb +6 -0
  125. data/spec/dummy/db/migrate/20260828040000_drop_action_text_tables.rb +5 -0
  126. data/spec/dummy/db/schema.rb +106 -72
  127. data/spec/dummy/db/seeds/conversations.seeds.rb +22 -22
  128. data/spec/dummy/db/seeds/development/conversations.seeds.rb +2 -2
  129. data/spec/dummy/db/seeds/groups.seeds.rb +4 -4
  130. data/spec/dummy/db/seeds/test/attachments.seeds.rb +4 -4
  131. data/spec/dummy/db/seeds/test/conversations.seeds.rb +2 -2
  132. data/spec/dummy/db/seeds/users.seeds.rb +8 -8
  133. data/spec/dummy/vendor/javascript/.keep +0 -0
  134. data/spec/factories/attachment.rb +5 -6
  135. data/spec/factories/group.rb +2 -2
  136. data/spec/factories/message.rb +7 -7
  137. data/spec/factories/user.rb +3 -3
  138. data/spec/features/boxes_spec.rb +38 -34
  139. data/spec/features/conversations_spec.rb +13 -6
  140. data/spec/features/messages_spec.rb +20 -20
  141. data/spec/features/unsubscribes_spec.rb +9 -9
  142. data/spec/helpers/message_train/application_helper_spec.rb +16 -18
  143. data/spec/helpers/message_train/attachment_helper_spec.rb +8 -18
  144. data/spec/helpers/message_train/boxes_helper_spec.rb +6 -6
  145. data/spec/helpers/message_train/collectives_helper_spec.rb +10 -10
  146. data/spec/helpers/message_train/conversations_helper_spec.rb +43 -85
  147. data/spec/helpers/message_train/messages_helper_spec.rb +41 -61
  148. data/spec/models/message_train/attachment_spec.rb +26 -36
  149. data/spec/models/message_train/box_spec.rb +2 -2
  150. data/spec/models/message_train/conversation_spec.rb +15 -0
  151. data/spec/models/message_train/message_spec.rb +5 -1
  152. data/spec/models/message_train/receipt_spec.rb +1 -1
  153. data/spec/models/message_train/unsubscribe_spec.rb +1 -1
  154. data/spec/rails_helper.rb +14 -13
  155. data/spec/support/controller_behaviors.rb +13 -13
  156. data/spec/support/factory_bot.rb +3 -0
  157. data/spec/support/feature_behaviors.rb +14 -14
  158. data/spec/support/loaded_site/attachments.rb +6 -2
  159. data/spec/support/utilities.rb +49 -20
  160. metadata +260 -213
  161. data/.travis.yml +0 -12
  162. data/VERSION +0 -1
  163. data/app/assets/javascripts/ckeditor/config.js +0 -49
  164. data/app/assets/javascripts/message_train.js +0 -149
  165. data/spec/dummy/app/assets/javascripts/application.js +0 -17
  166. data/spec/dummy/app/assets/stylesheets/bootstrap-everything.scss +0 -54
  167. data/spec/dummy/config/initializers/bootstrap_leather.rb +0 -7
  168. data/spec/dummy/config/initializers/paperclip.rb +0 -5
  169. data/spec/dummy/config/secrets.yml +0 -22
  170. data/spec/dummy/db/test.sqlite3 +0 -0
  171. data/spec/support/factory_girl.rb +0 -3
@@ -0,0 +1,5 @@
1
+ class RemoveBodyFromMessageTrainMessages < ActiveRecord::Migration[7.1]
2
+ def change
3
+ remove_column :message_train_messages, :body, :text
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class AddMarkingIndexes < ActiveRecord::Migration[7.1]
2
+ def change
3
+ add_index :message_train_receipts, :marked_read
4
+ add_index :message_train_receipts, :marked_trash
5
+ add_index :message_train_receipts, :marked_deleted
6
+ add_index :message_train_conversations, :updated_at
7
+ add_index :message_train_messages, :draft
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddBodyBackToMessageTrainMessages < ActiveRecord::Migration[7.1]
2
+ def change
3
+ add_column :message_train_messages, :body, :text
4
+ end
5
+ end
Binary file
Binary file
@@ -36,7 +36,7 @@ module MessageTrain
36
36
  %r{mount MessageTrain::Engine => '/.*', as: 'message_train'},
37
37
  ''
38
38
  )
39
- route("mount MessageTrain::Engine => '/', as: 'message_train'")
39
+ route("mount MessageTrain::Engine => '/messages', as: 'message_train'")
40
40
  end
41
41
 
42
42
  def goodbye
@@ -10,5 +10,16 @@ module MessageTrain
10
10
  g.stylesheets false
11
11
  g.javascripts false
12
12
  end
13
+
14
+ initializer 'message_train.importmap', before: 'importmap' do |app|
15
+ if app.config.respond_to?(:importmap)
16
+ app.config.importmap.paths << Engine.root.join('config/importmap.rb')
17
+ app.config.importmap.cache_sweepers << Engine.root.join('app/javascript')
18
+ end
19
+ end
20
+
21
+ initializer 'message_train.assets', before: 'importmap.assets' do |app|
22
+ app.config.assets.paths << Engine.root.join('app/javascript') if app.config.respond_to?(:assets)
23
+ end
13
24
  end
14
25
  end
@@ -133,13 +133,9 @@ module MessageTrain
133
133
  def collective_boxes(*args)
134
134
  division = args[0] || :in
135
135
  participant = args[1] || self
136
- cb_tables = MessageTrain.configuration
137
- .collectives_for_recipient_methods
138
- return {} if cb_tables.empty?
139
- Hash[cb_tables.map do |key, value|
140
- box = table_collective_box(key, value, division, participant)
141
- [key, box]
142
- end]
136
+ @collective_boxes ||= {}
137
+ @collective_boxes[[division, participant]] ||=
138
+ compute_collective_boxes(division, participant)
143
139
  end
144
140
 
145
141
  def collective_boxes_unread_counts
@@ -167,6 +163,16 @@ module MessageTrain
167
163
  collectives.map { |x| x.box(division, participant) }.compact
168
164
  end
169
165
 
166
+ def compute_collective_boxes(division, participant)
167
+ cb_tables = MessageTrain.configuration
168
+ .collectives_for_recipient_methods
169
+ return {} if cb_tables.empty?
170
+ Hash[cb_tables.map do |key, value|
171
+ box = table_collective_box(key, value, division, participant)
172
+ [key, box]
173
+ end]
174
+ end
175
+
170
176
  def all_boxes(*args)
171
177
  participant = args[0] || self
172
178
  divisions = [:in, :sent, :all, :drafts, :trash, :ignored]
@@ -6,8 +6,8 @@ module StringExtension
6
6
  else
7
7
  underscore.tr(' ', '_').gsub(/[^a-z0-9_]+/i, '').to_sym
8
8
  end
9
- args << { default: self }
10
- I18n.t(sym, *args).html_safe
9
+ options = args.first.is_a?(Hash) ? args.first : {}
10
+ I18n.t(sym, **options, default: self).html_safe
11
11
  end
12
12
  alias l localize
13
13
  end
@@ -16,7 +16,8 @@ String.send :include, StringExtension
16
16
  # Symbol Extension
17
17
  module SymbolExtensionCustom
18
18
  def localize_with_debugging(*args)
19
- localized_sym = I18n.translate(self, *args)
19
+ options = args.first.is_a?(Hash) ? args.first : {}
20
+ localized_sym = I18n.translate(self, **options)
20
21
  localized_sym.is_a?(String) ? localized_sym.html_safe : localized_sym
21
22
  end
22
23
  alias l localize_with_debugging
@@ -1,6 +1,6 @@
1
1
  # Message Train module
2
2
  module MessageTrain
3
- VERSION = File.read(File.expand_path('../../../VERSION', __FILE__))
3
+ VERSION = '1.0.0'.freeze
4
4
 
5
5
  def self.version_string
6
6
  "MessageTrain version #{MessageTrain::VERSION}"
data/lib/message_train.rb CHANGED
@@ -4,7 +4,6 @@ module MessageTrain
4
4
  require 'action_controller/railtie'
5
5
  require 'action_mailer/railtie'
6
6
  require 'action_view/railtie'
7
- require 'sprockets/railtie'
8
7
 
9
8
  require 'rails-i18n'
10
9
 
@@ -17,7 +16,6 @@ module MessageTrain
17
16
  require 'message_train/instance_methods'
18
17
 
19
18
  require 'haml-rails'
20
- require 'bootstrap_leather'
21
19
  require 'kaminari'
22
20
  end
23
21
 
@@ -1,396 +1,64 @@
1
- # Generated by juwelier
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
5
- # stub: message_train 0.7.6 ruby lib
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'message_train/version'
6
5
 
7
6
  Gem::Specification.new do |s|
8
- s.name = "message_train"
9
- s.version = "0.7.6"
7
+ s.name = 'message_train'
8
+ s.version = MessageTrain::VERSION
9
+ s.required_ruby_version = '>= 3.2'
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["Karen Lundgren"]
14
- s.date = "2017-10-06"
15
- s.description = "Rails 4 & 5 Engine providing private and public messaging for any object, such as Users or Groups"
16
- s.email = "karen.e.lundgren@gmail.com"
17
- s.extra_rdoc_files = [
18
- "LICENSE.txt",
19
- "README.md"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".rspec",
24
- ".rubocop.yml",
25
- ".rubocop_todo.yml",
26
- ".ruby-gemset",
27
- ".ruby-version",
28
- ".scss-lint.yml",
29
- ".simplecov",
30
- ".travis.yml",
31
- "Gemfile",
32
- "LICENSE.txt",
33
- "README.md",
34
- "Rakefile",
35
- "VERSION",
36
- "app/assets/javascripts/ckeditor/config.js",
37
- "app/assets/javascripts/message_train.js",
38
- "app/assets/stylesheets/message_train.scss",
39
- "app/controllers/concerns/message_train_authorization.rb",
40
- "app/controllers/concerns/message_train_support.rb",
41
- "app/controllers/message_train/application_controller.rb",
42
- "app/controllers/message_train/boxes_controller.rb",
43
- "app/controllers/message_train/conversations_controller.rb",
44
- "app/controllers/message_train/messages_controller.rb",
45
- "app/controllers/message_train/participants_controller.rb",
46
- "app/controllers/message_train/unsubscribes_controller.rb",
47
- "app/helpers/message_train/application_helper.rb",
48
- "app/helpers/message_train/attachments_helper.rb",
49
- "app/helpers/message_train/boxes_helper.rb",
50
- "app/helpers/message_train/collectives_helper.rb",
51
- "app/helpers/message_train/conversations_helper.rb",
52
- "app/helpers/message_train/messages_helper.rb",
53
- "app/mailers/message_train/application_mailer.rb",
54
- "app/mailers/message_train/previews/receipt_mailer_preview.rb",
55
- "app/mailers/message_train/receipt_mailer.rb",
56
- "app/models/message_train/attachment.rb",
57
- "app/models/message_train/box.rb",
58
- "app/models/message_train/conversation.rb",
59
- "app/models/message_train/ignore.rb",
60
- "app/models/message_train/message.rb",
61
- "app/models/message_train/receipt.rb",
62
- "app/models/message_train/unsubscribe.rb",
63
- "app/views/application/404.html.haml",
64
- "app/views/kaminari/_first_page.html.haml",
65
- "app/views/kaminari/_gap.html.haml",
66
- "app/views/kaminari/_last_page.html.haml",
67
- "app/views/kaminari/_next_page.html.haml",
68
- "app/views/kaminari/_page.html.haml",
69
- "app/views/kaminari/_paginator.html.haml",
70
- "app/views/kaminari/_prev_page.html.haml",
71
- "app/views/layouts/mailer.html.haml",
72
- "app/views/layouts/mailer.text.haml",
73
- "app/views/message_train/application/_attachment_fields.html.haml",
74
- "app/views/message_train/application/_attachment_link.html.haml",
75
- "app/views/message_train/application/_widget.html.haml",
76
- "app/views/message_train/application/results.json.jbuilder",
77
- "app/views/message_train/boxes/_dropdown_list.html.haml",
78
- "app/views/message_train/boxes/_list_item.html.haml",
79
- "app/views/message_train/boxes/_widget.html.haml",
80
- "app/views/message_train/boxes/show.html.haml",
81
- "app/views/message_train/collectives/_dropdown_list.html.haml",
82
- "app/views/message_train/collectives/_list_item.html.haml",
83
- "app/views/message_train/collectives/_widget.html.haml",
84
- "app/views/message_train/conversations/_conversation.html.haml",
85
- "app/views/message_train/conversations/_deleted_toggle.html.haml",
86
- "app/views/message_train/conversations/_ignored_toggle.html.haml",
87
- "app/views/message_train/conversations/_read_toggle.html.haml",
88
- "app/views/message_train/conversations/_toggle.html.haml",
89
- "app/views/message_train/conversations/_trashed_toggle.html.haml",
90
- "app/views/message_train/conversations/show.html.haml",
91
- "app/views/message_train/conversations/show.json.jbuilder",
92
- "app/views/message_train/messages/_deleted_toggle.html.haml",
93
- "app/views/message_train/messages/_form.html.haml",
94
- "app/views/message_train/messages/_message.html.haml",
95
- "app/views/message_train/messages/_read_toggle.html.haml",
96
- "app/views/message_train/messages/_toggle.html.haml",
97
- "app/views/message_train/messages/_trashed_toggle.html.haml",
98
- "app/views/message_train/messages/edit.html.haml",
99
- "app/views/message_train/messages/new.html.haml",
100
- "app/views/message_train/messages/show.json.jbuilder",
101
- "app/views/message_train/participants/_participant.json.jbuilder",
102
- "app/views/message_train/participants/_prefilled_field.html.haml",
103
- "app/views/message_train/participants/index.json.jbuilder",
104
- "app/views/message_train/participants/show.json.jbuilder",
105
- "app/views/message_train/receipt_mailer/notification_email.html.haml",
106
- "app/views/message_train/receipt_mailer/notification_email.text.haml",
107
- "app/views/message_train/unsubscribes/index.html.haml",
108
- "config/environment.rb",
109
- "config/initializers/date_time.rb",
110
- "config/initializers/kaminari_config.rb",
111
- "config/locales/en.yml",
112
- "config/routes.rb",
113
- "db/migrate/20150721145319_create_message_train_conversations.rb",
114
- "db/migrate/20150721160322_create_message_train_messages.rb",
115
- "db/migrate/20150721161144_create_message_train_attachments.rb",
116
- "db/migrate/20150721161940_create_message_train_receipts.rb",
117
- "db/migrate/20150721163838_create_message_train_ignores.rb",
118
- "db/migrate/20150901183458_add_received_through_to_message_train_receipts.rb",
119
- "db/migrate/20151004184347_add_unique_index_to_receipts.rb",
120
- "db/migrate/20151124000820_create_message_train_unsubscribes.rb",
121
- "lib/generators/message_train/install/install_generator.rb",
122
- "lib/generators/message_train/install/templates/initializer.rb",
123
- "lib/generators/message_train/utils.rb",
124
- "lib/message_train.rb",
125
- "lib/message_train/class_methods.rb",
126
- "lib/message_train/configuration.rb",
127
- "lib/message_train/engine.rb",
128
- "lib/message_train/instance_methods.rb",
129
- "lib/message_train/localization.rb",
130
- "lib/message_train/mixin.rb",
131
- "lib/message_train/version.rb",
132
- "lib/tasks/message_train_tasks.rake",
133
- "message_train.gemspec",
134
- "spec/controllers/message_train/boxes_controller_spec.rb",
135
- "spec/controllers/message_train/concerns_spec.rb",
136
- "spec/controllers/message_train/conversations_controller_spec.rb",
137
- "spec/controllers/message_train/messages_controller_spec.rb",
138
- "spec/controllers/message_train/participants_controller_spec.rb",
139
- "spec/controllers/message_train/unsubscribes_controller_spec.rb",
140
- "spec/dummy/.rspec",
141
- "spec/dummy/Rakefile",
142
- "spec/dummy/app/assets/files/message_train/attachments/ACD_Silverbarn's_Mayumi.jpg",
143
- "spec/dummy/app/assets/files/message_train/attachments/ACD_obedience.jpg",
144
- "spec/dummy/app/assets/files/message_train/attachments/A_Man_and_His_Dog.jpg",
145
- "spec/dummy/app/assets/files/message_train/attachments/Alaskan_Malamute_agility_a-frame.jpg",
146
- "spec/dummy/app/assets/files/message_train/attachments/American_water_spaniel_02.jpg",
147
- "spec/dummy/app/assets/files/message_train/attachments/Aport_konkurs_rybnik.jpg",
148
- "spec/dummy/app/assets/files/message_train/attachments/Askerhytta.jpg",
149
- "spec/dummy/app/assets/files/message_train/attachments/Bambisj.jpg",
150
- "spec/dummy/app/assets/files/message_train/attachments/Cattle_dog_skating.jpg",
151
- "spec/dummy/app/assets/files/message_train/attachments/Dog's_Olympics_training_ground_-_geograph.org.uk_-_660324.jpg",
152
- "spec/dummy/app/assets/files/message_train/attachments/DogShowHierarchy.png",
153
- "spec/dummy/app/assets/files/message_train/attachments/Dog_weight_pull.jpg",
154
- "spec/dummy/app/assets/files/message_train/attachments/Draghuntpostcard.jpg",
155
- "spec/dummy/app/assets/files/message_train/attachments/Esham_51.JPG",
156
- "spec/dummy/app/assets/files/message_train/attachments/FastCourseExample.jpg",
157
- "spec/dummy/app/assets/files/message_train/attachments/Fotos_joel_141.JPG",
158
- "spec/dummy/app/assets/files/message_train/attachments/Galgo_Spanish_male_brindle.jpg",
159
- "spec/dummy/app/assets/files/message_train/attachments/Golden-retriever-carlos-bei-der-dummyarbeit.jpg",
160
- "spec/dummy/app/assets/files/message_train/attachments/Habavk.jpg",
161
- "spec/dummy/app/assets/files/message_train/attachments/Hanging_18.jpg",
162
- "spec/dummy/app/assets/files/message_train/attachments/Hundewa.jpg",
163
- "spec/dummy/app/assets/files/message_train/attachments/K9ProSports_AttackOnHandler.jpg",
164
- "spec/dummy/app/assets/files/message_train/attachments/K9ProSports_heel.jpg",
165
- "spec/dummy/app/assets/files/message_train/attachments/K9Pro_Civil_agitation.JPG",
166
- "spec/dummy/app/assets/files/message_train/attachments/TrainingSchutzhundRetrieveOverWall.jpg",
167
- "spec/dummy/app/assets/files/message_train/attachments/example.pdf",
168
- "spec/dummy/app/assets/files/message_train/attachments/image-sample.jpg",
169
- "spec/dummy/app/assets/files/message_train/attachments/letterlegal5.doc",
170
- "spec/dummy/app/assets/files/message_train/attachments/pdf-sample.pdf",
171
- "spec/dummy/app/assets/files/message_train/attachments/sample.pdf",
172
- "spec/dummy/app/assets/files/message_train/attachments/tips.doc",
173
- "spec/dummy/app/assets/files/message_train/attachments/wd-spectools-word-sample-04.doc",
174
- "spec/dummy/app/assets/images/logo.svg",
175
- "spec/dummy/app/assets/javascripts/application.js",
176
- "spec/dummy/app/assets/stylesheets/application.scss",
177
- "spec/dummy/app/assets/stylesheets/bootstrap-everything.scss",
178
- "spec/dummy/app/controllers/application_controller.rb",
179
- "spec/dummy/app/helpers/application_helper.rb",
180
- "spec/dummy/app/mailers/.keep",
181
- "spec/dummy/app/models/group.rb",
182
- "spec/dummy/app/models/role.rb",
183
- "spec/dummy/app/models/user.rb",
184
- "spec/dummy/app/views/layouts/_top_navigation.html.haml",
185
- "spec/dummy/app/views/layouts/application.html.haml",
186
- "spec/dummy/app/views/pages/index.html.haml",
187
- "spec/dummy/bin/bundle",
188
- "spec/dummy/bin/rails",
189
- "spec/dummy/bin/rake",
190
- "spec/dummy/bin/setup",
191
- "spec/dummy/config.ru",
192
- "spec/dummy/config/application.rb",
193
- "spec/dummy/config/boot.rb",
194
- "spec/dummy/config/database.yml",
195
- "spec/dummy/config/environment.rb",
196
- "spec/dummy/config/environments/development.rb",
197
- "spec/dummy/config/environments/production.rb",
198
- "spec/dummy/config/environments/test.rb",
199
- "spec/dummy/config/initializers/assets.rb",
200
- "spec/dummy/config/initializers/backtrace_silencers.rb",
201
- "spec/dummy/config/initializers/bootstrap_leather.rb",
202
- "spec/dummy/config/initializers/cookies_serializer.rb",
203
- "spec/dummy/config/initializers/devise.rb",
204
- "spec/dummy/config/initializers/filter_parameter_logging.rb",
205
- "spec/dummy/config/initializers/high_voltage.rb",
206
- "spec/dummy/config/initializers/inflections.rb",
207
- "spec/dummy/config/initializers/message_train.rb",
208
- "spec/dummy/config/initializers/mime_types.rb",
209
- "spec/dummy/config/initializers/paperclip.rb",
210
- "spec/dummy/config/initializers/rolify.rb",
211
- "spec/dummy/config/initializers/session_store.rb",
212
- "spec/dummy/config/initializers/wrap_parameters.rb",
213
- "spec/dummy/config/locales/devise.en.yml",
214
- "spec/dummy/config/locales/en.yml",
215
- "spec/dummy/config/routes.rb",
216
- "spec/dummy/config/secrets.yml",
217
- "spec/dummy/config/settings.yml",
218
- "spec/dummy/db/migrate/20150721140013_devise_create_users.rb",
219
- "spec/dummy/db/migrate/20150721141009_rolify_create_roles.rb",
220
- "spec/dummy/db/migrate/20150721141128_create_groups.rb",
221
- "spec/dummy/db/migrate/20150721150307_add_display_name_column_to_users.rb",
222
- "spec/dummy/db/migrate/20160207190402_create_message_train_conversations.message_train.rb",
223
- "spec/dummy/db/migrate/20160207190403_create_message_train_messages.message_train.rb",
224
- "spec/dummy/db/migrate/20160207190404_create_message_train_attachments.message_train.rb",
225
- "spec/dummy/db/migrate/20160207190405_create_message_train_receipts.message_train.rb",
226
- "spec/dummy/db/migrate/20160207190406_create_message_train_ignores.message_train.rb",
227
- "spec/dummy/db/migrate/20160207190407_add_received_through_to_message_train_receipts.message_train.rb",
228
- "spec/dummy/db/migrate/20160207190408_add_unique_index_to_receipts.message_train.rb",
229
- "spec/dummy/db/migrate/20160207190409_create_message_train_unsubscribes.message_train.rb",
230
- "spec/dummy/db/schema.rb",
231
- "spec/dummy/db/seeds.rb",
232
- "spec/dummy/db/seeds/conversations.seeds.rb",
233
- "spec/dummy/db/seeds/development/conversations.seeds.rb",
234
- "spec/dummy/db/seeds/groups.seeds.rb",
235
- "spec/dummy/db/seeds/test/attachments.seeds.rb",
236
- "spec/dummy/db/seeds/test/conversations.seeds.rb",
237
- "spec/dummy/db/seeds/unsubscribes.seeds.rb",
238
- "spec/dummy/db/seeds/users.seeds.rb",
239
- "spec/dummy/db/test.sqlite3",
240
- "spec/dummy/lib/assets/.keep",
241
- "spec/dummy/public/404.html",
242
- "spec/dummy/public/422.html",
243
- "spec/dummy/public/500.html",
244
- "spec/dummy/public/favicon.ico",
245
- "spec/factories/attachment.rb",
246
- "spec/factories/group.rb",
247
- "spec/factories/message.rb",
248
- "spec/factories/user.rb",
249
- "spec/features/boxes_spec.rb",
250
- "spec/features/conversations_spec.rb",
251
- "spec/features/messages_spec.rb",
252
- "spec/features/unsubscribes_spec.rb",
253
- "spec/helpers/message_train/application_helper_spec.rb",
254
- "spec/helpers/message_train/attachment_helper_spec.rb",
255
- "spec/helpers/message_train/boxes_helper_spec.rb",
256
- "spec/helpers/message_train/collectives_helper_spec.rb",
257
- "spec/helpers/message_train/conversations_helper_spec.rb",
258
- "spec/helpers/message_train/messages_helper_spec.rb",
259
- "spec/message_train_spec.rb",
260
- "spec/models/group_spec.rb",
261
- "spec/models/message_train/attachment_spec.rb",
262
- "spec/models/message_train/box_spec.rb",
263
- "spec/models/message_train/conversation_spec.rb",
264
- "spec/models/message_train/ignore_spec.rb",
265
- "spec/models/message_train/message_spec.rb",
266
- "spec/models/message_train/receipt_spec.rb",
267
- "spec/models/message_train/unsubscribe_spec.rb",
268
- "spec/models/role_spec.rb",
269
- "spec/models/user_spec.rb",
270
- "spec/rails_helper.rb",
271
- "spec/spec_helper.rb",
272
- "spec/support/controller_behaviors.rb",
273
- "spec/support/controller_macros.rb",
274
- "spec/support/factory_girl.rb",
275
- "spec/support/feature_behaviors.rb",
276
- "spec/support/loaded_site/attachments.rb",
277
- "spec/support/loaded_site/conversations.rb",
278
- "spec/support/loaded_site/groups.rb",
279
- "spec/support/loaded_site/loaded_site.rb",
280
- "spec/support/loaded_site/messages.rb",
281
- "spec/support/loaded_site/roles.rb",
282
- "spec/support/loaded_site/users.rb",
283
- "spec/support/shared_connection.rb",
284
- "spec/support/utilities.rb"
285
- ]
286
- s.homepage = "http://www.gemvein.com/museum/cases/message_train"
287
- s.licenses = ["MIT"]
288
- s.rubygems_version = "2.4.5.1"
289
- s.summary = "Rails 4 & 5 Engine providing messaging for any object"
11
+ s.authors = ['Loren Lundgren']
12
+ s.email = 'loren.lundgren@gmail.com'
13
+ s.summary = 'Rails Engine providing messaging for any object'
14
+ s.description = 'Rails Engine providing private and public messaging '\
15
+ 'for any object, such as Users or Groups'
16
+ s.homepage = 'http://www.gemvein.com/museum/cases/message_train'
17
+ s.license = 'MIT'
290
18
 
291
- if s.respond_to? :specification_version then
292
- s.specification_version = 4
293
-
294
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
295
- s.add_runtime_dependency(%q<haml-rails>, ["< 2", ">= 1"])
296
- s.add_runtime_dependency(%q<jquery-rails>, ["~> 4"])
297
- s.add_runtime_dependency(%q<paperclip>, ["< 6", ">= 4.2"])
298
- s.add_runtime_dependency(%q<rails>, ["< 6", ">= 4"])
299
- s.add_runtime_dependency(%q<rails-i18n>, ["< 6", ">= 4"])
300
- s.add_runtime_dependency(%q<uglifier>, ["< 4", ">= 2.7"])
301
- s.add_runtime_dependency(%q<jbuilder>, ["~> 2.0"])
302
- s.add_runtime_dependency(%q<bootstrap-sass>, ["~> 3.3"])
303
- s.add_runtime_dependency(%q<bootstrap_form>, ["~> 2.3"])
304
- s.add_runtime_dependency(%q<bootstrap_leather>, ["< 1", ">= 0.10.11"])
305
- s.add_runtime_dependency(%q<kaminari>, ["~> 1.0"])
306
- s.add_runtime_dependency(%q<bootstrap_tokenfield_rails>, ["~> 0.12"])
307
- s.add_runtime_dependency(%q<ckeditor>, ["< 5", ">= 4.2"])
308
- s.add_runtime_dependency(%q<cocoon>, ["~> 1.2"])
309
- s.add_runtime_dependency(%q<jquery-ui-bootstrap-rails>, ["< 0.1", ">= 0.0.2"])
310
- s.add_runtime_dependency(%q<sass-rails>, ["~> 5"])
311
- s.add_runtime_dependency(%q<twitter-typeahead-rails>, ["< 0.12", ">= 0.11"])
312
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
313
- s.add_development_dependency(%q<juwelier>, ["~> 2"])
314
- s.add_development_dependency(%q<rubocop>, ["~> 0.47.1"])
315
- s.add_development_dependency(%q<scss_lint>, ["~> 0.52"])
316
- s.add_development_dependency(%q<byebug>, ["~> 9"])
317
- s.add_development_dependency(%q<devise>, ["~> 4"])
318
- s.add_development_dependency(%q<factory_girl_rails>, ["~> 4.5"])
319
- s.add_development_dependency(%q<faker>, ["~> 1.4"])
320
- s.add_development_dependency(%q<friendly_id>, ["~> 5"])
321
- s.add_development_dependency(%q<high_voltage>, ["~> 3"])
322
- s.add_development_dependency(%q<rolify>, ["< 5.2", ">= 4"])
323
- s.add_development_dependency(%q<rspec-its>, ["< 2", ">= 1"])
324
- s.add_development_dependency(%q<rspec-rails>, ["< 4", ">= 3"])
325
- s.add_development_dependency(%q<seedbank>, ["~> 0.3"])
326
- s.add_development_dependency(%q<sqlite3>, ["~> 1.3"])
327
- else
328
- s.add_dependency(%q<haml-rails>, ["< 2", ">= 1"])
329
- s.add_dependency(%q<jquery-rails>, ["~> 4"])
330
- s.add_dependency(%q<paperclip>, ["< 6", ">= 4.2"])
331
- s.add_dependency(%q<rails>, ["< 6", ">= 4"])
332
- s.add_dependency(%q<rails-i18n>, ["< 6", ">= 4"])
333
- s.add_dependency(%q<uglifier>, ["< 4", ">= 2.7"])
334
- s.add_dependency(%q<jbuilder>, ["~> 2.0"])
335
- s.add_dependency(%q<bootstrap-sass>, ["~> 3.3"])
336
- s.add_dependency(%q<bootstrap_form>, ["~> 2.3"])
337
- s.add_dependency(%q<bootstrap_leather>, ["< 1", ">= 0.10.11"])
338
- s.add_dependency(%q<kaminari>, ["~> 1.0"])
339
- s.add_dependency(%q<bootstrap_tokenfield_rails>, ["~> 0.12"])
340
- s.add_dependency(%q<ckeditor>, ["< 5", ">= 4.2"])
341
- s.add_dependency(%q<cocoon>, ["~> 1.2"])
342
- s.add_dependency(%q<jquery-ui-bootstrap-rails>, ["< 0.1", ">= 0.0.2"])
343
- s.add_dependency(%q<sass-rails>, ["~> 5"])
344
- s.add_dependency(%q<twitter-typeahead-rails>, ["< 0.12", ">= 0.11"])
345
- s.add_dependency(%q<bundler>, ["~> 1.0"])
346
- s.add_dependency(%q<juwelier>, ["~> 2"])
347
- s.add_dependency(%q<rubocop>, ["~> 0.47.1"])
348
- s.add_dependency(%q<scss_lint>, ["~> 0.52"])
349
- s.add_dependency(%q<byebug>, ["~> 9"])
350
- s.add_dependency(%q<devise>, ["~> 4"])
351
- s.add_dependency(%q<factory_girl_rails>, ["~> 4.5"])
352
- s.add_dependency(%q<faker>, ["~> 1.4"])
353
- s.add_dependency(%q<friendly_id>, ["~> 5"])
354
- s.add_dependency(%q<high_voltage>, ["~> 3"])
355
- s.add_dependency(%q<rolify>, ["< 5.2", ">= 4"])
356
- s.add_dependency(%q<rspec-its>, ["< 2", ">= 1"])
357
- s.add_dependency(%q<rspec-rails>, ["< 4", ">= 3"])
358
- s.add_dependency(%q<seedbank>, ["~> 0.3"])
359
- s.add_dependency(%q<sqlite3>, ["~> 1.3"])
360
- end
361
- else
362
- s.add_dependency(%q<haml-rails>, ["< 2", ">= 1"])
363
- s.add_dependency(%q<jquery-rails>, ["~> 4"])
364
- s.add_dependency(%q<paperclip>, ["< 6", ">= 4.2"])
365
- s.add_dependency(%q<rails>, ["< 6", ">= 4"])
366
- s.add_dependency(%q<rails-i18n>, ["< 6", ">= 4"])
367
- s.add_dependency(%q<uglifier>, ["< 4", ">= 2.7"])
368
- s.add_dependency(%q<jbuilder>, ["~> 2.0"])
369
- s.add_dependency(%q<bootstrap-sass>, ["~> 3.3"])
370
- s.add_dependency(%q<bootstrap_form>, ["~> 2.3"])
371
- s.add_dependency(%q<bootstrap_leather>, ["< 1", ">= 0.10.11"])
372
- s.add_dependency(%q<kaminari>, ["~> 1.0"])
373
- s.add_dependency(%q<bootstrap_tokenfield_rails>, ["~> 0.12"])
374
- s.add_dependency(%q<ckeditor>, ["< 5", ">= 4.2"])
375
- s.add_dependency(%q<cocoon>, ["~> 1.2"])
376
- s.add_dependency(%q<jquery-ui-bootstrap-rails>, ["< 0.1", ">= 0.0.2"])
377
- s.add_dependency(%q<sass-rails>, ["~> 5"])
378
- s.add_dependency(%q<twitter-typeahead-rails>, ["< 0.12", ">= 0.11"])
379
- s.add_dependency(%q<bundler>, ["~> 1.0"])
380
- s.add_dependency(%q<juwelier>, ["~> 2"])
381
- s.add_dependency(%q<rubocop>, ["~> 0.47.1"])
382
- s.add_dependency(%q<scss_lint>, ["~> 0.52"])
383
- s.add_dependency(%q<byebug>, ["~> 9"])
384
- s.add_dependency(%q<devise>, ["~> 4"])
385
- s.add_dependency(%q<factory_girl_rails>, ["~> 4.5"])
386
- s.add_dependency(%q<faker>, ["~> 1.4"])
387
- s.add_dependency(%q<friendly_id>, ["~> 5"])
388
- s.add_dependency(%q<high_voltage>, ["~> 3"])
389
- s.add_dependency(%q<rolify>, ["< 5.2", ">= 4"])
390
- s.add_dependency(%q<rspec-its>, ["< 2", ">= 1"])
391
- s.add_dependency(%q<rspec-rails>, ["< 4", ">= 3"])
392
- s.add_dependency(%q<seedbank>, ["~> 0.3"])
393
- s.add_dependency(%q<sqlite3>, ["~> 1.3"])
19
+ s.files = `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(spec/dummy/db/(development|test)\.sqlite3|\.idea/)})
394
21
  end
395
- end
22
+ s.extra_rdoc_files = %w[LICENSE.txt README.md]
23
+ s.require_paths = ['lib']
396
24
 
25
+ s.add_runtime_dependency 'dartsass-rails', '~> 0.5'
26
+ s.add_runtime_dependency 'haml-rails', '>= 2'
27
+ s.add_runtime_dependency 'image_processing', '~> 1.2'
28
+ s.add_runtime_dependency 'importmap-rails', '~> 2.0'
29
+ s.add_runtime_dependency 'jbuilder', '~> 2.0'
30
+ s.add_runtime_dependency 'kaminari', '~> 1.0'
31
+ s.add_runtime_dependency 'mini_magick', '~> 4.12'
32
+ s.add_runtime_dependency 'propshaft', '~> 1.1'
33
+ s.add_runtime_dependency 'rails', '>= 7.1', '< 9'
34
+ s.add_runtime_dependency 'rails-i18n', '>= 7', '< 9'
35
+ s.add_runtime_dependency 'redcarpet', '~> 3.6'
36
+ s.add_runtime_dependency 'stimulus-rails', '~> 1.3'
37
+ s.add_runtime_dependency 'turbo-rails', '~> 2.0'
38
+
39
+ s.add_development_dependency 'byebug', '~> 11'
40
+ s.add_development_dependency 'capybara', '~> 3.40'
41
+ s.add_development_dependency 'cuprite', '~> 0.15'
42
+ s.add_development_dependency 'database_cleaner-active_record', '~> 2.1'
43
+ s.add_development_dependency 'devise', '~> 4'
44
+ s.add_development_dependency 'factory_bot_rails', '~> 6.4'
45
+ s.add_development_dependency 'faker', '~> 3'
46
+ s.add_development_dependency 'friendly_id', '~> 5'
47
+ s.add_development_dependency 'high_voltage', '~> 3'
48
+ s.add_development_dependency 'launchy', '~> 2'
49
+ s.add_development_dependency 'puma', '~> 6.0'
50
+ s.add_development_dependency 'rails-controller-testing', '~> 1.0'
51
+ s.add_development_dependency 'rolify', '>= 4'
52
+ s.add_development_dependency 'rspec-collection_matchers', '>= 1'
53
+ s.add_development_dependency 'rspec-html-matchers', '~> 0.10'
54
+ s.add_development_dependency 'rspec-its', '>= 1', '< 2'
55
+ s.add_development_dependency 'rspec-rails', '~> 7.0'
56
+ s.add_development_dependency 'rubocop', '~> 1.6'
57
+ s.add_development_dependency 'rubocop-rails', '~> 2.25'
58
+ s.add_development_dependency 'rubocop-rake', '~> 0.7'
59
+ s.add_development_dependency 'rubocop-rspec', '~> 3.0'
60
+ s.add_development_dependency 'seedbank', '~> 0.3'
61
+ s.add_development_dependency 'shoulda-matchers', '~> 6.0'
62
+ s.add_development_dependency 'simplecov', '~> 0.22'
63
+ s.add_development_dependency 'sqlite3', '~> 2.1'
64
+ end