<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Puma on 高木のブログ</title>
    <link>https://takagi.blog/tags/puma/</link>
    <description>Recent content in Puma on 高木のブログ</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <lastBuildDate>Mon, 23 Dec 2019 00:00:00 +0000</lastBuildDate><atom:link href="https://takagi.blog/tags/puma/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Herokuで動かすRailsアプリのアプリケーションサーバーをPumaに変更する</title>
      <link>https://takagi.blog/changing-the-application-server-for-a-rails-app-running-on-heroku-to-puma/</link>
      <pubDate>Mon, 23 Dec 2019 00:00:00 +0000</pubDate>
      
      <guid>https://takagi.blog/changing-the-application-server-for-a-rails-app-running-on-heroku-to-puma/</guid>
      <description>&lt;p&gt;タイトル通り、Herokuで動いているRailsアプリのアプリケーションサーバーをPumaに変更した話。&lt;/p&gt;
&lt;h2 id=&#34;経緯&#34;&gt;経緯 &lt;a href=&#34;#%e7%b5%8c%e7%b7%af&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;そろそろHerokuにデプロイした時に出るWarningを一つ一つ潰していこうかなと思った時に最初に目をつけられたWarningがこちら。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote: &lt;span style=&#34;color:#75715e&#34;&gt;###### WARNING:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote:        No Procfile detected, using the default web server.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote:        We recommend explicitly declaring how to boot your server process via a Procfile.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote:        https://devcenter.heroku.com/articles/ruby-default-web-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;「Procfileが見つからなかったから、デフォルトのWebサーバーを使ったよ。Procfileでサーバープロセスを起動する方法を明示的に宣言することを勧めるよ。詳しくはこのURLを見てくれ。」&lt;br&gt;
的なことが書かれてた。&lt;/p&gt;
&lt;h3 id=&#34;詳しくはこのurlのサイト&#34;&gt;「詳しくはこのURL」のサイト &lt;a href=&#34;#%e8%a9%b3%e3%81%97%e3%81%8f%e3%81%af%e3%81%93%e3%81%aeurl%e3%81%ae%e3%82%b5%e3%82%a4%e3%83%88&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&#34;https://devcenter.heroku.com/articles/ruby-default-web-server&#34; target=&#34;_blank&#34;&gt;Ruby Default Web Server | Heroku Dev Center&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;いろいろ読み進めていくと、
「デフォルトで使われるWebサーバーはWebrickだよ。開発用のサーバーを本番で使うのは相応しくないからPumaを使ってね」と。&lt;br&gt;
デフォルトでPuma使ってると勝手に思い込んでた。ということでProcfileを作るついでにPumaに変更する。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;手順&#34;&gt;手順 &lt;a href=&#34;#%e6%89%8b%e9%a0%86&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server&#34; target=&#34;_blank&#34;&gt;Deploying Rails Applications with the Puma Web Server | Heroku Dev Center&lt;/a&gt;
&lt;br&gt;
ここに書いてある指示に従って進めていく。&lt;/p&gt;
&lt;h3 id=&#34;gemfileにpumaのgemを追加&#34;&gt;GemfileにPumaのgemを追加 &lt;a href=&#34;#gemfile%e3%81%abpuma%e3%81%aegem%e3%82%92%e8%bf%bd%e5%8a%a0&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Gemfile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gem &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;puma&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;実際には&lt;code&gt;rails new&lt;/code&gt;の時点で入ってたみたいだったので追加していない。&lt;br&gt;
開発で使わない場合はproductionのグループに移動してもいいかも。&lt;/p&gt;
&lt;h3 id=&#34;configpumarbに設定を記述する&#34;&gt;config/puma.rbに設定を記述する &lt;a href=&#34;#configpumarb%e3%81%ab%e8%a8%ad%e5%ae%9a%e3%82%92%e8%a8%98%e8%bf%b0%e3%81%99%e3%82%8b&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# config/puma.rb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;workers Integer(&lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;WEB_CONCURRENCY&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;threads_count &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Integer(&lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RAILS_MAX_THREADS&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;threads threads_count, threads_count
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;preload_app!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rackup      &lt;span style=&#34;color:#66d9ef&#34;&gt;DefaultRackup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;port        &lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;PORT&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;environment &lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RACK_ENV&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;development&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on_worker_boot &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Worker specific setup for Rails 4.1+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;ActiveRecord&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Base&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;establish_connection
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;書き方は少し違うが、ほぼ同じ設定内容が書かれてたが、Heroku公式の内容に書き換えた。&lt;/p&gt;
&lt;h3 id=&#34;procfileに設定を記述する&#34;&gt;Procfileに設定を記述する &lt;a href=&#34;#procfile%e3%81%ab%e8%a8%ad%e5%ae%9a%e3%82%92%e8%a8%98%e8%bf%b0%e3%81%99%e3%82%8b&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Procfile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;web&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;bundle exec puma -C config/puma.rb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こちらは新規ファイルを作成した。&lt;/p&gt;
&lt;h3 id=&#34;commitしてデプロイ&#34;&gt;commitしてデプロイ &lt;a href=&#34;#commit%e3%81%97%e3%81%a6%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git push heroku master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;pumaが使われているか確認&#34;&gt;Pumaが使われているか確認 &lt;a href=&#34;#puma%e3%81%8c%e4%bd%bf%e3%82%8f%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%81%8b%e7%a2%ba%e8%aa%8d&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ heroku ps
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free dyno hours quota remaining this month: 868h 15m &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;86%&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free dyno usage &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; this app: 57h 59m &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5%&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;For more information on dyno sleeping and how to upgrade, see:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://devcenter.heroku.com/articles/dyno-sleeping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; web &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;Free&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: bundle exec puma -C config/puma.rb &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;web.1: up 2019/12/19 23:46:30 +0900 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;~ 18m ago&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;問題なさそう。&lt;/p&gt;
&lt;p&gt;以上！&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
