{
    "componentChunkName": "component---src-templates-blog-post-js",
    "path": "/blog/20210918/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Juicy Blog 🍋"}},"markdownRemark":{"id":"282bff2f-feb7-5d77-a113-586a78fdd202","excerpt":"最近のRailsにはというコマンドが追加されました。 このというフラグ自体は便利なのですが、例えばだけどActiveStorageは使いたいという前回の投稿のようなものを作りたい場合はというような組み合わせはうまく動作しません。 Something similar to…","html":"<p>最近のRailsには<code class=\"language-text\">rails new APP_PATH --minimal</code>というコマンドが追加されました。</p>\n<p>この<code class=\"language-text\">--minimal</code>というフラグ自体は便利なのですが、例えば<code class=\"language-text\">--minimal</code>だけどActiveStorageは使いたいという<a href=\"/blog/20210912/\">前回の投稿</a>のようなものを作りたい場合は<code class=\"language-text\">rails new APP_PATH --minimal --no-skip-active-storage</code>というような組み合わせはうまく動作しません。</p>\n<blockquote>\n<p>Something similar to <code class=\"language-text\">eslint --init</code> ?</p>\n</blockquote>\n<p>もともとは簡単なシェルスクリプトを書く予定だったのですが、<a href=\"https://discuss.rubyonrails.org/t/interactive-rails-new/74355\">Interactive “rails new”</a>のスレッドにあったESLintのような対話型のコマンドのこと?というコメントを見て面白そうだなと思いました。</p>\n<p><a href=\"https://github.com/eslint/eslint/blob/a79c9f35d665c2bcc63267bdf359a8176e0a84ce/lib/init/config-initializer.js#L16\">https://github.com/eslint/eslint/blob/a79c9f35d665c2bcc63267bdf359a8176e0a84ce/lib/init/config-initializer.js#L16</a></p>\n<p>確かにESLintのようなコマンドはどうやって実現しているのだろうと興味を持ったので、調べてみたのですがちょうど<a href=\"https://github.com/enquirer/enquirer\"><strong>Enquirer</strong></a>というライブラリが使われていました。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> prompt <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'enquirer'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> response <span class=\"token operator\">=</span> <span class=\"token keyword\">await</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  <span class=\"token literal-property property\">type</span><span class=\"token operator\">:</span> <span class=\"token string\">'input'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token literal-property property\">name</span><span class=\"token operator\">:</span> <span class=\"token string\">'username'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token literal-property property\">message</span><span class=\"token operator\">:</span> <span class=\"token string\">'What is your username?'</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// { username: 'nzwsch' }</span></code></pre></div>\n<p>質問形式をオブジェクトを渡せばいいだけなので簡単そうです。\n複数の質問は配列で渡せばよいのでそこまで悩むこともありませんでした。</p>\n<p><a href=\"https://github.com/nzwsch/rails-prompt\">https://github.com/nzwsch/rails-prompt</a></p>\n<p>このコード量なのでわざわざGitHubにプッシュしなくても良かった気もしますが、今後も使うことを考えるとやっぱり用意しておいてもよかったかなと思います。</p>","frontmatter":{"title":"rails-promptについて","date":"September 18, 2021","description":"node.jsで対話型のプログラムを作りました"}},"previous":{"fields":{"slug":"/blog/20210912/"},"frontmatter":{"title":"Railsで動画を分析する"}},"next":{"fields":{"slug":"/blog/20210919/"},"frontmatter":{"title":"NginxでMP4のモジュールを有効にする"}}},"pageContext":{"id":"282bff2f-feb7-5d77-a113-586a78fdd202","previousPostId":"abe5ef93-b97c-5624-a5ea-6e87822c6dbc","nextPostId":"9716444d-fd49-5da5-b9bd-a5eabc251ef9"}},
    "staticQueryHashes": ["2785349746","2841359383"]}