Advent Calendar Rankingに人気のはてブを表示する機能を追加してみた

個人的に見れると嬉しい気がしたので追加してみた。

人気のはてブ(hatenaスターの多いブックマーク)を取れるAPIを利用して表示。
実装は、rails-ujsを利用して非同期で取得。負荷対策としてはサーバーサイドでcacheする程度で軽く実装してみた。 Turbo使うべきなんだろうけど、まだあまりcatch upできておらず、勢いでrails-ujsを利用してしまった。

RE: 害虫駆除を頑張った話。トコジラミという生き物を知っていますか?

クリスマスに書くような話じゃないんだけど、たまたま以下の記事を目にして、自分も闘ったことがあるので記しておく。

※リンク先は閲覧注意
害虫駆除を頑張った話。トコジラミという生き物を知っていますか?

奴らは日中出てこず、明け方人が眠ったのを見計らって血を吸いに来る悪魔のような害虫です。 幸い自分の場合は、一人暮らしかつ初期段階で気づいたので、頑張って駆除できましたが、業者に頼んだ方が良いと思います。 一見駆除できたように見えても残党がいて、翌週ぐらいに再び遭遇しました。

余談

1つ思い出したのですが、どうも奴らは、ビニールが苦手で登って来れないという話があり、こういうのを使って寝ると噛まれないという動画を見た記憶があります。
(是非とも試して欲しい)

rails new 時にDockerfileが追加されるようになる

rails commit log流し読み(2022/12/20) - なるようになるブログ を見ていたら、
なんとrails new 時にDockerfileが追加されるようになっていました。

rails newで新規アプリケーション作成時にDocker関連のファイル
(Dockerfile、.dockerignore、bin/docker-entrypoint)を生成するよう修正しています。
なお、このDockerfileはproduction向けで、development向けの設定にはなっていません。

Dockerfile.ttを眺めてみる

Dockerfile.tt

nodejs

nodejsはnodesourceを利用してinstallしているようです。

<% if using_node? -%>
# Install JavaScript dependencies and libvips for Active Storage
ARG NODE_MAJOR_VERSION=19
RUN curl -sL https://deb.nodesource.com/setup_$NODE_MAJOR_VERSION.x | bash -
RUN apt-get update -qq && \
    apt-get install -y build-essential libvips nodejs && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man && \
    npm install -g yarn

余談ですが、productionならminor versionまで指定したいので、最近は公式のbinaryを使うようにしています。

RUN curl --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" > /tmp/node.tar.xz && \
  tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 && \
  rm /tmp/node.tar.xz

bootsnap

<% if depend_on_bootsnap? -%>
# Precompile bootsnap code for faster boot times
RUN bundle exec bootsnap precompile --gemfile app/ lib/

これ知らなかったのですが、 Shopify/bootsnap に載ってました。
開発時には自動で使われてるのは知っていたのですが、poductionでも使って良いのか気になります。 Rails Guide辺りに載ってると使いやすいのですが、、、ちょっと躊躇してしまいます。 gemのreadmeに記載されてますが、productionでも使って良さそうです。

SECRET_KEY_BASE_DUMMY

# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
RUN SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile

こちらも新機能ですが、secret_key_base 不要で precompileできるようになってるようです。

おまけ:mainブランチでrails new してみる

実際に最新のmainブランチを使ってrails newする方法です。

git clone https://github.com/rails/rails.git
cd rails/
bundle install
cd ../
./rails/railties/exe/rails new edge_rails --edge --dev

これ知りませんでした。便利。

参考)Rails 5, master branch, use generator - Stack Overflow