<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Logan Bresnahan</title>
    <description>The latest articles on DEV Community by Logan Bresnahan (@loganbresnahan).</description>
    <link>https://dev.to/loganbresnahan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F627314%2F9833fe3f-5852-43bc-9fe8-6f3fa40ee485.jpeg</url>
      <title>DEV Community: Logan Bresnahan</title>
      <link>https://dev.to/loganbresnahan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/loganbresnahan"/>
    <language>en</language>
    <item>
      <title>Meow. A process manager for development.</title>
      <dc:creator>Logan Bresnahan</dc:creator>
      <pubDate>Sun, 23 May 2021 18:28:31 +0000</pubDate>
      <link>https://dev.to/loganbresnahan/meow-a-process-manager-for-development-3i5g</link>
      <guid>https://dev.to/loganbresnahan/meow-a-process-manager-for-development-3i5g</guid>
      <description>&lt;p&gt;Meow is a pure shell program that manages booting and killing any given amount of processes for your development workflow. It gives you the ability to boot/kill these processes in different terminal tabs automatically. Scroll to the bottom to see a quick visual representation on how Meow reads and organizes your processes. To see everything Meow has to offer checkout its repo. &lt;a href="https://github.com/LoganBresnahan/meow"&gt;https://github.com/LoganBresnahan/meow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a web developer, I feel elated at the current state of web development. It continues to grow more vibrant and exciting everyday! There are so many wonderful tools to make a web dev's life easier and more productive. Personally, I do a ton of work with Rails, Webpack, and Elixir! The creators behind these tools and frameworks have made spinning up a new website easier than ever....but can it get even easier?&lt;/p&gt;

&lt;p&gt;My normal development setup consists of a booting up a backend, frontend, and cache server. So now we have 3 processes to boot-up somehow. Not a problem! There are some really cool tools out there such as Overmind and the Foreman family of tools that manage Procfile based applications. Essentially reading commands off of the Procfile and running them. Each tool respectively has it's own features that really shine, but I found they didn't do exactly what I wanted.&lt;/p&gt;

&lt;p&gt;As a Rails developer I use the &lt;code&gt;pry&lt;/code&gt; gem a lot for debugging. &lt;code&gt;pry&lt;/code&gt; is a repl (read evaluate print loop) which allows you to input text into the terminal within the context of your application similar to using &lt;code&gt;debugger&lt;/code&gt; in JavaScript. When using Foreman to boot up my servers for development I noticed that &lt;code&gt;pry&lt;/code&gt; doesn't work as expected. It "works" but you simply can't see what you're typing. Foreman wasn't made to receive input. Overmind on the other hand is closer to what I want but still misses the mark. Like foreman, it doesn't handle receiving input when using a repl. However, Overmind is built with tmux. You can simply open a new tab and connect it to your desired process that was started with Overmind and huzzah! My &lt;code&gt;pry&lt;/code&gt; session is working and I can see what I'm typing. HOWEVER, I'm too lazy for this approach. I don't want to open up a new tab and handle closing it. I just want everything to be setup with one simple command.&lt;/p&gt;

&lt;p&gt;Enter Meow. I created Meow as simple development tool that would let me add commands to a single file, similar to a Procfile, but also give me the ability to boot these commands into a different terminal tab without having to do it manually. All the while, making sure that debugging tools, such as &lt;code&gt;pry&lt;/code&gt;, would just work. Not only that, I wanted the option to fine tune how and when processes would die. With Meow you can tell a newly spawned terminal tab to "expire" or "endure" when the main process is terminated. Check out the Readme from the link above to learn all the options available with Meow. Below is an example config file Meow reads from to manage your commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Hi I'm a comment. I must start at the beginning of a line.&lt;/span&gt;

&lt;span class="nt"&gt;--start-config&lt;/span&gt;

&lt;span class="c"&gt;# For an explanation of these config options check out the Readme.&lt;/span&gt;
writable-relative-directory&lt;span class="o"&gt;=&lt;/span&gt;tmp
auto-check-updates&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;apple-tab-spawn-delay&lt;span class="o"&gt;=&lt;/span&gt;0.75
unix-shell&lt;span class="o"&gt;=&lt;/span&gt;bash
kill-signal&lt;span class="o"&gt;=&lt;/span&gt;15

&lt;span class="nt"&gt;--end-config&lt;/span&gt;

&lt;span class="c"&gt;# To execute these commands just type "meow" in your terminal&lt;/span&gt;
&lt;span class="c"&gt;# If you want to execute just one or a selection of these groups &lt;/span&gt;
&lt;span class="c"&gt;# you can give Meow command line arguments "meow 0 2". &lt;/span&gt;
&lt;span class="c"&gt;# This will only boot the commands listed in the first and&lt;/span&gt;
&lt;span class="c"&gt;# last groups.&lt;/span&gt;
&lt;span class="nt"&gt;--start-commands&lt;/span&gt;

&lt;span class="c"&gt;# I'm the first command of a group so I exist in the foreground&lt;/span&gt;
bundle &lt;span class="nb"&gt;exec &lt;/span&gt;rails server
&lt;span class="c"&gt;# Commands after the first exist in the background.&lt;/span&gt;
yarn start:dev

&lt;span class="nt"&gt;--new-tab-expire&lt;/span&gt;
&lt;span class="c"&gt;# New tab expire means it closes when you terminate the first group.&lt;/span&gt;

&lt;span class="c"&gt;# We can change directories!&lt;/span&gt;
&lt;span class="nt"&gt;-cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/my_project_two

&lt;span class="c"&gt;# I'm the foreground command of this new terminal tab.&lt;/span&gt;
iex &lt;span class="nt"&gt;-S&lt;/span&gt; mix
&lt;span class="c"&gt;# I'm off to the background.&lt;/span&gt;
npx webpack &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;development &lt;span class="nt"&gt;--watch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="nt"&gt;--new-tab-endure&lt;/span&gt;
&lt;span class="c"&gt;# New tab endure means these commands do not exit when you&lt;/span&gt;
&lt;span class="c"&gt;# kill the first group.&lt;/span&gt;

redis-server

&lt;span class="nt"&gt;--end-commands&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
