<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="13634" data-post-id="13634">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="swelham" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/swelham/120/2768_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  swelham
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/overminddl1" rel="nofollow">@OvermindDL1</a> great idea, I have updated the wiki!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13634" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-13634" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13634"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="13635" data-post-id="13635">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>That does indeed <a href="https://certbot.eff.org/#centosrhel7-haproxy" rel="nofollow">look easier</a>  <img src="https://forum.elixirforum.com/uploads/default/original/2X/7/776053aa22968f83c10e90c98b23aa0ddd5c9d47.gif?v=15" title=":lol:" class="emoji emoji-custom" alt=":lol:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13635" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-13635" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13635"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="13640" data-post-id="13640">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If anyone is interested in performant ways of working with images, <a href="http://www.vips.ecs.soton.ac.uk/index.php?title=VIPS" rel="nofollow">VIPS</a> bindings for Elixir could be a neat little project (take a look at the <a href="https://rubygems.org/gems/ruby-vips" rel="nofollow">Ruby</a> one for inspiration).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13640" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-13640" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13640"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="13646" data-post-id="13646">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="swelham" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/swelham/120/2768_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  swelham
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Another great idea, now added to wiki <img src="https://forum.elixirforum.com/images/emoji/apple/thumbsup.png?v=15" title=":thumbsup:" class="emoji" alt=":thumbsup:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13646" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-13646" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13646"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="13649" data-post-id="13649">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I got an interesting idea!<br>
How about catch messages, save them to database and files?<br>
The table structure:</p>
<ol>
<li>id <code>Integer</code></li>
<li>env <code>Atom</code></li>
<li>type <code>Atom</code></li>
<li>source <code>Atom</code></li>
<li>file_info <code>Map</code></li>
<li>caller_info <code>Map</code></li>
<li>stacktrace <code>List</code> of <code>Map</code>s</li>
<li>log_fiile_path <code>String</code></li>
<li>inserted_at - datae and time</li>
<li>updated_at - datae and time</li>
</ol>
<p>File default structure:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">/project_directory
  /logs
    /env
      /type
        timeline.log
        /descriptions
          id.log
</code></pre>
<p>Where:</p>
<ol>
<li><code>id</code> is a database id.</li>
<li><code>env</code> is our environment</li>
<li><code>type</code> is one of: <code>[:error, :warning, :debug]</code> - of course in production configuration developer could set only <code>:error</code> reporting</li>
<li><code>source</code> is an info about from what it comes, for example: <code>:otp</code> message or <code>:ecto</code> message or <code>:logger</code> call</li>
<li><code>file_info</code> for example: <code>%{module: "MyProject.MyModule", function: %{name: "my_function", callback: "&amp;my_function/2"}, file_path: "/lib/my_project/my_module.ex", line: "53"}</code></li>
<li><code>caller_info</code> for example: <code>%{module: "IO", function: %{name: "puts", callback: "&amp;puts/1", args: "OK"}</code> or: <code>%{module: "Kernel", function: "raise", data: %{message: "Argument first is not an integer", type: "ArgumentError"}}</code></li>
<li><code>stacktrace</code> for example: <code>[%{from: "stdlib", file: "lists.erl", line: 1338:, callback: "lists.foreach/2"}]</code></li>
<li><code>log_fiile_path</code> is the path generated using config (for the directory structure)</li>
<li><code>inserted_at</code> is date of first time found message (error, warning, message) - sometimes useful if we know what update applied in specified day and time</li>
<li><code>updated_at</code> is last date of found message</li>
</ol>
<p>Example format of <code>timeline.log</code>:</p>
<blockquote>
<p>At <code>date_and_time</code> found #<code>id</code> <code>type</code>. Details stored in: “logs/env/type/descriptions/23.log”.</p>
</blockquote>
<p>Example format of <code>id.log</code>:</p>
<blockquote>
<p>At: “2016-01-01 00:00:00.0000 UTC”<br>
First reported at: “2015-12-12 00:00:00.0000 UTC”<br>
In environment: “production”<br>
Found <span class="hashtag-raw">#23</span> error<br>
That was called from module: “MyProject.MyModule”, function “&amp;my_function/2”, in file: “/lib/my_project/my_module.ex” at line: 23.<br>
Caller is: module “IO” and function: “&amp;puts/1” with data:<br>
[<br>
“OK”<br>
]<br>
Stacktrace:<br>
(stdlib) lists.erl:1338: :lists.foreach/2<br>
…</p>
</blockquote>
<p>Logs descriptions could be optionally to catch them from logs based program like fail2ban.</p>
<p>With following structures we can easily format that message for example for special markup.</p>
<p>This file can be send by mail to service account or automatically add (if inserted) a new bug to for example Github (by public HTTP API) from production server, so it’s possible to get fast help directly after user gets “500 Internal Server Error” message without fill a bug report.</p>
<p>Phone call:<br>
John: “Hey, your site is excellent, but one page is not working. Can you see what’s wrong?”<br>
Support: “Please reload page - it’s already solved :-).”<br>
John: “Wow! Thank you very much!”<br>
<img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji only-emoji" alt=":smile:" loading="lazy" width="20" height="20"></p>
<p>Is is possible to catch all Elixir messages (runtime errors, deprecation warnings, IO operations and more) like I described?<br>
What do you think about it?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13649" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-13649" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13649"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="13652" data-post-id="13652">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You can create your own error logger to plug into Elixir Log, just like the file_logger plugin, but log to a DB.  Of course you’d want to throttle it, cache recent ones and prevent duplicates and such or you can get overwhelmed with messages if something bad suddenly happens.  <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
<p>A library for that would be cool though…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13652" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-13652" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13652"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="13654" data-post-id="13654">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="swelham" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/swelham/120/2768_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  swelham
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Anyone want to come up with a name for that idea? <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13654" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-13654" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13654"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="13655" data-post-id="13655">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="swelham" data-post="19" data-topic="2179">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/swelham/48/2768_2.png" class="avatar"> swelham:</div>
<blockquote>
<p>Anyone want to come up with a name for that idea? <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Well the others follow <code>logger_file_backend</code> and <code>logger_json_file_backend</code> and <code>logger_papertrail_backend</code> and <code>logger_lager_backend</code> and many others that follow <code>logger_*_backend</code>, so probably <code>logger_ecto_backend</code> or so?  Or something more generic like <code>logger_cache_callback_backend</code> if it handles the deduplication and caching and such for you, just passed to a callback to then do whatever you want, maybe even to another log channel so something like <code>logger_ecto_backend</code> or <code>logger_file_backend</code> or so could log them as normal?  Although maybe that would not be a backend but a filter or so?  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13655" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-13655" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13655"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="13657" data-post-id="13657">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="swelham" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/swelham/120/2768_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  swelham
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I agree something more generic like a <code>logger_filter</code> which can handle the caching and deduplication and then have plugable backends such as <code>logger_ecto_backend</code>, <code>logger_file_backend</code>, etc…</p>
<p>This would allow it to be flexible and easily extendable.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13657" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-13657" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13657"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
    <div class="postbit" id="13674" data-post-id="13674">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If I good understand how <code>Logger</code> works it will give me only data from: <code>Logger.*</code> methods like: <code>Logger.info</code>, right?<br>
What about catching:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">raise ArgumentError, message: "Bad argument!"
</code></pre>
<p>and deprecated warnings?<br>
Of course I mean to only catch and log that situations (not rescue).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="13674" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/missing-libraries-and-tools-or-those-you-can-help-with/2179/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-13674" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="13674"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/2179/load_more?page=3">Load more posts (53 remaining)</a>
</div></template></turbo-stream>