- 1. Railsの自動読み込みにオリジナルの変換処理を追加する
- 2. 飲食店検索サイトの情報をとってきてみよう -Retty編-
- 3. Rails concern
- 4. Turbo 7: アプリケーションにTurboをインストール
- 5. Rubyからの書き換えで学ぶCrystal入門(画像生成を例として)
- 6. 【Ruby】# frozen_string_literal: trueマジックコメントは必要?
- 7. ActiveRecord::InvalidForeignKey in RoomsController#destroy エラーの解決方法
- 8. The action 'search' could not be found for TweetsController
- 9. 差分ファイルだけRubocopをかけることで高速化するスクリプトを書いた
- 10. 【ActionView::SyntaxErrorInTemplate in TweetsController#edit】unexpected end...エラーの解決方法
- 11. 編集する
- 12. 【ActionView::MissingTemplate in Tweets#index】Missing partial......エラーの解決方法
- 13. ActionController::RoutingError (No route matches [GET] "/tweets"):の解決方法
- 14. Ruby on RailsのアプリケーションにBasic認証を導入する手順
- 15. Ruby on RailsでDeviseを導入する手順
- 16. 「たのしいRuby」オブジェクトと変数・定数
- 17. RailsアプリケーションのRubyMineでのデバッグ開始方法5つ
- 18. 十の位と一の位の計算
- 19. あああああ
- 20. チェリー本読破までの自分メモ【2章】
- 21. 新規アプリケーション作成~ホストの設定まで
Railsの自動読み込みにオリジナルの変換処理を追加する
この記事は [CAMPFIRE Advent Calendar 2022](https://qiita.com/advent-calendar/2022/campfire) 8日目の記事です。
アドベントカレンダー参加という良い機会に、ふと気になったRailsの自動読み込み(autoload)について調べてみました。
# 前提
以下の環境で検証しています
– OS: macOS
– Rubyバージョン: 2.7.6
– Railsバージョン: 7.0.4
– Railsオートローダ: Zeitwerkまた、[Railsガイド](https://railsguides.jp/autoloading_and_reloading_constants.html) の表現に基づき`autoload`を「自動読み込み」として称しています
# Railsの自動読み込み(オートロード)
Rail で利用されているオートローダはRails6以降のバージョンで変更され現在は[Zeitwerk](https://github.com/fxn/zeitwerk)というgemに任されていますRa
飲食店検索サイトの情報をとってきてみよう -Retty編-
## 概要
飲食店検索サイトの情報をとってきてみようシリーズ
続いてはRetty## 言語/ライブラリ
– ruby
– nokogiriHTML情報を取得する部分には今回は`open-uri`を採用している。
## コード
つべこべ言わずにまずはコードの紹介
“`rb
require ‘uri’
require ‘nokogiri’
require ‘kconv’
require ‘open-uri’
require ‘yaml’area = URI.encode_www_form_component(“東京”)
keyword = URI.encode_www_form_component(“居酒屋”)
file = URI.open(“https://retty.me/restaurant-search/search-result/?latlng=35.466195%2C139.622704&free_word_area=#{area}&free_word_category=#{keyword}”)doc = Nokogiri::HTML.parse(file
Rails concern
## Rails concernとは
Railsでアプリケーションを作ると、“`controllers/concerns“`, “`models/concerns“`が自動的に生成されますがこのディレクトリを使ったことはありますか? 僕はないです。調べてみたところ、主に
– “`共通ロジックを持つときにconcernに切り出す“`
– “`そのmodelやcontrollerとは異なるロジックである場合に切り出す“`の2つの使い方があるのかなと思いました。
例として、メールの送信ロジックなどをあげることができます。
特定の条件(投稿数が100に達する、フォロワーが100人に達するなど)を満たした時に、メールを送信するというロジックは、複数のモデルに適用することができますし、モデルロジックとは少し異なるロジックであると考えることができます。
このような時にmoduleとしてconcernに切り出します。
切り出されたmoduleは必要とするmodelでincludeすることによって使うことができます。## 使い方
concernの使い方としては2つあります
Turbo 7: アプリケーションにTurboをインストール
:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::https://turbo.hotwired.dev/handbook/installing
Turboは、アプリケーションの`
`で直接Turbo配布可能スクリプトを参照するか、Webpackなどのバンドラーを介してnpmを介してコンパイルされた形式でインストールできます。# コンパイルされた形式で
配布可能な最新のスクリプトをGitHubリリースページからダウンロードして、ページの`