{
    "componentChunkName": "component---src-templates-blog-post-js",
    "path": "/2022-05-04_zio-http-g8_contribute/",
    "result": {"data":{"site":{"siteMetadata":{"title":"365"}},"markdownRemark":{"id":"474a2f6e-db25-57a4-86a9-d97fede04469","excerpt":"初めてコントリビュートしたのでその記録。 https://github.com/dream11/zio-http.g8/pull/7 きっかけ 個人の開発で何を使って開発しようかなと悩んでいたのでいろいろ触っていた。 ZIO 理解を深めるために zio-http も良いなと考えていた g…","html":"<p>初めてコントリビュートしたのでその記録。</p>\n<p><a href=\"https://github.com/dream11/zio-http.g8/pull/7\">https://github.com/dream11/zio-http.g8/pull/7</a></p>\n<h2>きっかけ</h2>\n<p>個人の開発で何を使って開発しようかなと悩んでいたのでいろいろ触っていた。<br>\n<a href=\"https://github.com/zio/zio\">ZIO</a> 理解を深めるために <a href=\"https://github.com/dream11/zio-http\">zio-http</a> も良いなと考えていた</p>\n<p>g8 テンプレートを使ってプロジェクトを作成した。\r\n名前やパッケージは変更を行った。</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ sbt new dream11/zio-http.g8\r\n\r\nname [ZHTTP Service]: zio-http-hello-world\r\norganisation [com.example]: com.example.hogefuga\r\npackage [com.example.hogefuga.ziohttphelloworld]:\r\nversion [1.0.0]:\r\nsbtVersion [1.6.1]:\r\nscalaVersion [2.13.8]:\r\nzioTestVersion [1.0.13]:\r\nscalaFmtVersion [3.0.7]:\r\nscalafixVersion [0.9.34]:\r\nsbtNativePackager [1.9.7]:\r\nsbtRevolverVersion [0.9.1]:\r\nzhttpVersion [1.0.0.0-RC24]:\r\nscalaFmtPluginVersion [2.4.6]:\r\norganizeImportsVersion [0.6.0]:\r\n\r\nTemplate applied in /home/vagrant/workspace/tmp/./zio-http-hello-world\r\n</code></pre></div>\n<p>Hello World をしようと試すがそもそも起動ができなかった。</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ sbt\r\n&gt; reStart\r\n[info] Application root not yet started\r\n[info] Starting application root in the background ...\r\nroot Starting com.example.zhttpservice.ZhttpService.main()\r\n[success] Total time: 0 s, completed May 4, 2022, 11:36:04 AM\r\nroot[ERROR] Error: Could not find or load main class com.example.zhttpservice.ZhttpService\r\nroot[ERROR] Caused by: java.lang.ClassNotFoundException: com.example.zhttpservice.ZhttpService\r\nroot ... finished with exit code 1</code></pre></div>\n<p>実際にコード見てると、 <code class=\"language-text\">build.sbt</code> のメインクラスの指定が異なり、動かないコードになっていた。</p>\n<div class=\"gatsby-highlight\" data-language=\"diff\"><pre class=\"language-diff\"><code class=\"language-diff\"><span class=\"token deleted-sign deleted\"><span class=\"token prefix deleted\">-</span>    Compile / run / mainClass := Option(\"com.example.zhttpservice.ZhttpService\"),\r\n</span><span class=\"token inserted-sign inserted\"><span class=\"token prefix inserted\">+</span>    Compile / run / mainClass := Option(\"com.example.ziohttphelloworld.Ziohttphelloworld\"),</span></code></pre></div>\n<p>名前などを変えずに作ると起動することができた。</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ sbt new file:///home/vagrant/workspace/tmp/zio-http.g8\r\n\r\nname [ZHTTP Service]:\r\norganisation [com.example]:\r\npackage [com.example.zhttpservice]:\r\nversion [1.0.0]:\r\nsbtVersion [1.6.1]:\r\nscalaVersion [2.13.8]:\r\nzioTestVersion [1.0.13]:\r\nscalaFmtVersion [3.0.7]:\r\nscalafixVersion [0.9.34]:\r\nsbtNativePackager [1.9.7]:\r\nsbtRevolverVersion [0.9.1]:\r\nzhttpVersion [1.0.0.0-RC24]:\r\nscalaFmtPluginVersion [2.4.6]:\r\norganizeImportsVersion [0.6.0]:\r\n\r\nTemplate applied in /home/vagrant/workspace/tmp/./zhttp-service\r\n\r\n$ sbt\r\n&gt; reStart\r\n[info] compiling 1 Scala source to /home/vagrant/workspace/tmp/zhttp-service/target/scala-2.13/classes ...\r\n[info] Application root not yet started\r\n[info] Starting application root in the background ...\r\nroot Starting com.example.zhttpservice.ZhttpService.main()\r\n[success] Total time: 3 s, completed May 4, 2022, 10:55:23 AM\r\nroot Server started on port: 8090</code></pre></div>\n<p>これは OSS チャンスではないかと思ったのでじっくり見ていくことにした。</p>\n<h2>g8 リポジトリの修正</h2>\n<p>テンプレート側である <a href=\"https://github.com/dream11/zio-http.g8\">zio-http.g8</a> を見ていくことにした。</p>\n<p><code class=\"language-text\">./src/main/g8/build.sbt</code> の該当部分は固定値であった。</p>\n<div class=\"gatsby-highlight\" data-language=\"scala\"><pre class=\"language-scala\"><code class=\"language-scala\">Compile <span class=\"token operator\">/</span> run <span class=\"token operator\">/</span> mainClass <span class=\"token operator\">:</span><span class=\"token operator\">=</span> Option<span class=\"token punctuation\">(</span><span class=\"token string\">\"com.example.zhttpservice.ZhttpService\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span></code></pre></div>\n<p>どうやらこれを可変値にする必要がある。\r\n他のコードに可変値があった。</p>\n<div class=\"gatsby-highlight\" data-language=\"scala\"><pre class=\"language-scala\"><code class=\"language-scala\">ThisBuild <span class=\"token operator\">/</span> organization <span class=\"token operator\">:</span><span class=\"token operator\">=</span> <span class=\"token string\">\"$organisation$\"</span>\r\nThisBuild <span class=\"token operator\">/</span> version <span class=\"token operator\">:</span><span class=\"token operator\">=</span> <span class=\"token string\">\"$version$\"</span>\r\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\r\nname <span class=\"token operator\">:</span><span class=\"token operator\">=</span> <span class=\"token string\">\"$name$\"</span><span class=\"token punctuation\">,</span>\r\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span></code></pre></div>\n<p>それを参考にメインクラスの指定が可変になるように修正することにした。</p>\n<div class=\"gatsby-highlight\" data-language=\"scala\"><pre class=\"language-scala\"><code class=\"language-scala\">Compile <span class=\"token operator\">/</span> run <span class=\"token operator\">/</span> mainClass <span class=\"token operator\">:</span><span class=\"token operator\">=</span> Option<span class=\"token punctuation\">(</span><span class=\"token string\">\"$package$.$name;format=\"</span>word<span class=\"token punctuation\">,</span>cap<span class=\"token string\">\"$\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span></code></pre></div>\n<p>format の指定ができるので調整する。<br>\n<a href=\"http://www.foundweekends.org/giter8/ja/formatting.html\">http://www.foundweekends.org/giter8/ja/formatting.html</a></p>\n<h2>動作確認</h2>\n<p>g8 はローカルのパスを指定してテンプレートを参照できるので実施。<br>\nフォークしたリポジトリを指定して確認することもできそうだけど未確認。</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"language-sh\"><code class=\"language-sh\">$ sbt new file:///home/vagrant/workspace/tmp/zio-http.g8\r\n\r\nname [ZHTTP Service]: zio-http-hello-world\r\norganisation [com.example]: com.example.hogefuga\r\npackage [com.example.hogefuga.ziohttphelloworld]:\r\nversion [1.0.0]:\r\nsbtVersion [1.6.1]:\r\nscalaVersion [2.13.8]:\r\nzioTestVersion [1.0.13]:\r\nscalaFmtVersion [3.0.7]:\r\nscalafixVersion [0.9.34]:\r\nsbtNativePackager [1.9.7]:\r\nsbtRevolverVersion [0.9.1]:\r\nzhttpVersion [1.0.0.0-RC24]:\r\nscalaFmtPluginVersion [2.4.6]:\r\norganizeImportsVersion [0.6.0]:\r\n\r\nTemplate applied in /home/vagrant/workspace/tmp/./zio-http-hello-world\r\n\r\n$ sbt\r\nsbt:zio-http-hello-world&gt; reStart\r\n[info] Application root not yet started\r\n[info] Starting application root in the background ...\r\nroot Starting com.example.hogefuga.ziohttphelloworld.Ziohttphelloworld.main()\r\n[success] Total time: 0 s, completed May 4, 2022, 11:39:49 AM\r\nroot Server started on port: 8090</code></pre></div>\n<p>動作確認できたので、修正を commit して PR に出した。</p>\n<p><a href=\"https://github.com/dream11/zio-http.g8/pull/7\">https://github.com/dream11/zio-http.g8/pull/7</a><br>\n数時間後には merge されていた。</p>\n<p>初めてコントリビュートできたのでかなりテンションが上がった。</p>","frontmatter":{"title":"zio-http.g8 を修正した","date":"2022/05/04","description":null}},"previous":{"fields":{"slug":"/2022-04-21_github-profile-summary-cards/"},"frontmatter":{"title":"github-profile-summary-cards を追加する"}},"next":{"fields":{"slug":"/2022-05-20_rbenv_ruby-build_version_update/"},"frontmatter":{"title":"rbenv でインストールできる Ruby のバージョンが古いため上げる"}}},"pageContext":{"id":"474a2f6e-db25-57a4-86a9-d97fede04469","previousPostId":"9242452f-f70b-5b13-bcb6-f26a50760820","nextPostId":"1b373a6d-97cc-5b90-a249-5fe47c6ae4d0"}},
    "staticQueryHashes": ["2841359383","3257411868"]}