<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="28895" data-post-id="28895">
  <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>A big issue I have with configs in projects is that they tend to be very hardcoded, such as they use a build-time only config.exs setup that does not support environment variables, or they only check environment variables when it is going to be hosted on a system that cannot set them, etc…  They are highly inflexible…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28895" 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/mix-config-evolutions/4423/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-28895" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28895"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="28897" data-post-id="28897">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kuon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/120/36090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kuon
                    <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 am all for pushing lib authors towards function and argument for configuration. But I think this should be official best practice somehow documented. As you said, edge cases will be handled by lib authors as required. If <a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a> agrees and wants to help standardize this.</p>
<p>This leaves us with app configuration, some centralized config repository an app uses to configure it’s dependencies and itself.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28897" 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/mix-config-evolutions/4423/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-28897" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28897"
                     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="28934" data-post-id="28934">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sasajuric" data-post="9" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>If a library takes options at runtime</p>
</blockquote>
</aside>
<p>That’d be ideal - together with lazy application starting. However, such a system maybe throws out the baby with the bathwater? There’s tons of stuff out there I’ll just use and if they need <code>sys.config</code>, so be it.</p>
<p>FWIW, I settled on Distillery and a single build (I call <code>:deploy</code>) - everything uses the REPLACE_OS_VARS functionality and thus is configured through injection of environment variables. It works, it’s “12fa-compliant” (so will easily integrate in a range of deployment tooling), and is relatively clean and easy (scant details in <a href="http://evrl.com/elixir/deployment/2017/04/04/packaging-elixir.html" rel="noopener nofollow ugc">http://evrl.com/elixir/deployment/2017/04/04/packaging-elixir.html</a>)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28934" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-28934" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28934"
                     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="28946" data-post-id="28946">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cdegroot" data-post="14" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>There’s tons of stuff out there I’ll just use and if they need sys.config, so be it.</p>
</blockquote>
</aside>
<p>To be clear, I wasn’t suggesting avoiding libraries just because they’re taking options through app env <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"> At my work, we certainly use many such libs, and then do some trickery to vary the settings at runtime.</p>
<p>However, my understanding is that this thread is an attempt to summarize config issues and discuss potential solutions:</p>
<aside class="quote no-group" data-username="kuon" data-post="1" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/48/36090_2.png" class="avatar"> kuon:</div>
<blockquote>
<p>I’d like this thread to be used to acknowledge that this is an issue we need to solve, find at what level and how it should be (in mix, with a DSL…).</p>
</blockquote>
</aside>
<p>Given that direction of the discussion, I believe that many (though admittedly not all) issues would be resolved if libraries accepted options as parameters. So I think that rather than trying to invent some complex schemes in e.g. <code>mix</code>, a better approach would be to educate library authors to avoid requiring app env where it’s not needed. Therefore, I agree with this conclusion:</p>
<aside class="quote no-group" data-username="kuon" data-post="13" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/48/36090_2.png" class="avatar"> kuon:</div>
<blockquote>
<p>I am all for pushing lib authors towards function and argument for configuration. But I think this should be official best practice somehow documented.</p>
</blockquote>
</aside> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28946" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-28946" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28946"
                     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="28947" data-post-id="28947">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kuon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/120/36090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kuon
                    <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>The goal of this thread is not to throw anything out of deprecate config.exs, but to list issues and find solutions.</p>
<p>The first thing that seems to come out is that we should encourage lib author to take configuration via arguments when possible. If this is accepted by <a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a>, a bit of documentation and “word spreading” would be enough for this one.</p>
<p>On the other hand, the app configuration (conform, mix config…) needs to be addressed in some way.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28947" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-28947" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28947"
                     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="28953" data-post-id="28953">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Having libraries that are inflexible in their configuration because they have an opinion on what the config.exs looks like can indeed really be a deal killer. I ran into this recently in an Elixir project and it was one of those “oh, no..” moments . .. and as people have noted already, different projects take different approaches, meaning the ability to learn A Way™ and repeatedly apply that to Elixir projects is not really so possible right now. Having a clearly stated, documented, and followed by the “core”/“popular” libraries/tools would be absolutely fantastic. 1000 upvotes for that suggestion.</p>
<p>That said, it would really be nice imho to have a standardized schema mechanic as OP suggested. Libraries may not necessarily use that schema directly, but it could be used by application developers to easily map to/from storage solutions (be they POT files in the file system, records in a key/value store, rows in a tennantized SQL database, ..) and give some sense as to what the options are (allowed values, etc) in a way that could be turned into automated tests at runtime.</p>
<p>It would also allow some level of decoupling between the actual MFA calls to configure a library and the configuration, which is ultimately data, not an API, and the configuration management.</p>
<p>With some sort of schema mechanism in place, then application-side (or node orchestration level)  tools could evolve independently of library devel (targetting different use cases / environments, even) using the schemas as their generic integration point rather than “random” MFAs in libraries. This would be far more realistic a target imho than semi-de-facto-standardized-as-best-practice-ideology. It would even provide a(n optional) path for library developers to have “best practice” configuration functions generated at compile-time for them.</p>
<p>If these schemas were similar to ecto schemas, allowing for knowledge transfer / consistency / even some potential interoperability, that would be icing on the cake to me …</p>
<p>tl;dr from the perspective of an application developer (and knowing the pain points our ops team faces), I would love to see a configuration schema DSL for library developers to provide for application developers and deployment management.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28953" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-28953" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28953"
                     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="28989" data-post-id="28989">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sasajuric" data-post="15" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>To be clear, I wasn’t suggesting avoiding libraries just because they’re taking options through app env <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>Wasn’t expecting this. However, having libraries that configure themselves through an application environment is a given. I wonder if we, as a community, have enough weight to add another given (configure through functions and options - which in itself is an excellent idea). Or should we make the given a nice, first-class citizen? (at least nicer than it is now, where probably the biggest single issue is application startup order where your “library” applications are started before you have a chance to setup their environments)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28989" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-28989" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28989"
                     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="28996" data-post-id="28996">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kuon" data-post="16" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/48/36090_2.png" class="avatar"> kuon:</div>
<blockquote>
<p>The first thing that seems to come out is that we should encourage lib author to take configuration via arguments when possible. If this is accepted by <a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a>, a bit of documentation and “word spreading” would be enough for this one.</p>
</blockquote>
</aside>
<p>Yes, exactly. Rely less on compile-time configs and more on arguments. The application environment is global configuration and therefore it can be prone to conflicts.</p>
<p>Maybe I was not clear on my first reply but that’s exactly the direction Ecto and Phoenix are moving. We will still use the application environment by default for convenience but we are moving as much as we can to runtime and consequently also allow those to be given as options.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28996" 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/mix-config-evolutions/4423/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-28996" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28996"
                     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="28998" data-post-id="28998">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kuon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kuon/120/36090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kuon
                    <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 think if we have a constructive discussion we should be able to steer in a direction. This particular issue seems important enough for an “official” statement. The library ecosystem is what makes a language great. If we can have some standard it will help the language and its users.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="28998" 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/mix-config-evolutions/4423/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-28998" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="28998"
                     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="33350" data-post-id="33350">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="8" data-topic="4423">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>Phoenix v1.3 and Ecto v2.1 are pushing to this new direction.</p>
</blockquote>
</aside>
<p>Can you explain a bit more?  As far as I can tell, Ecto is configured using Mix.Config and a config.exs file.</p>
<p>From the Ecto documentation (2.1.4):</p>
<blockquote>
<p>Where the configuration for the Repo must be in your application environment, usually defined in your config/config.exs</p>
</blockquote>
<p>It says “usually”, but are there other options?  If so, the documentation doesn’t mention them.</p>
<p>How can I configure my repo without using a config.exs file?</p>
<p>Thanks.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="33350" data-batch-url="/posts/batch_likers">
                        0
                      </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/mix-config-evolutions/4423/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-33350" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="33350"
                     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>
</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/4423/load_more?page=3">Load more posts (3 remaining)</a>
</div></template></turbo-stream>