Madogiwa Blog

主に技術系の学習メモに使っていきます。

Ruby

cronの読み方をいつも忘れるので、いい感じにParseするgemを作ってみた💎

みなさん、こんにちは。まどぎわです(・∀・) いつもcronの読み方を忘れてしまい検索して調べて、書くのが面倒くさかったので、いい感じにParseして表示してくれるgemを作って公開しました‍♂️ cronとは? cron とは、ジョブ(スクリプト)を自動実行するため…

sidekiq pro / enterpriseのwikiを読んだので気になった機能の概要をMEMO✍

今回はタイトル通り、sidekiq pro / enterpriseのwikiを読んだので、忘れないように気になった機能の概要をメモしておきます✍ ⚠私が拙い英語力 + 技術力で理解した内容のMEMOです。内容が間違っている可能性があるので、注意してください。⚠ 前提事項 sideki…

Sidekiqがどうやって動いているのか、コードを読んで概要を掴めた気がしたのでメモしてみる

みなさん、こんにちは。まどぎわです。 rubyで非同期処理やるときのデファクトスタンダード的なgemsidekiqのコードを読んで、概要が割とつかめた気がしてきたので、どういう感じで動いてるか自分の理解の範囲でメモしてみました github.com sidekiqの機能と…

RubyKaigi 2019 Cookpad Daily Ruby Puzzlesを解いてみたので自分の解答をメモ

みなさん、こんにちは。まどぎわです(・∀・) RubyKaigiでCookpadさんのブースで出題されていたRuby Puzzleを、Ruby Kaigi中に楽しくやっていたので、 解答も下記で公開されたので、自分の解答をメモしておきます。 techlife.cookpad.com Day 1 Day 2 Day 3 E…

rails勉強botでActionViewのメソッドが呟かれるようになりました🎉

みなさん、こんばんは。 昨日までrubykaigi2019で福岡に行ってたまどぎわです 表題の通り、rails勉強botでActionViewのメソッドがつぶやかれるようになりました つぶやくClassにActionViewが追加されましたView周りのメソッド意外と忘れがちなので、気になる…

ピュアRubyでAtomも対応したRSS Parserを作ってみたMEMO

みなさん、こんにちは(・∀・) rubyの標準RSSライブラリが思ったよりも高機能でびっくりしたので、gemを使わずにAtomとRssのParserを作ってみたので、そのへんのやり方をメモしておきますm( )m Ruby標準のRSSライブラリ 標準ライブラリを使用する場合は、下記…

railsとVueを使って無限スクロール機能を実装するMEMO🌀

自分が作っているSPAっぽいrailsのサービスでrailsとVueで無限スクロール∞を作ったので、そのやり方をメモしておきますm( )m つくるもの 使うもの 実際のコード View Controller Model おわりに 参考 つくるもの 下記のようにスクロール時にAPIでデータを取…

rails: Rssフィードの作り方MEMO

最近、railsでrssフィードを作ったので、そのへんのやり方をメモしておきますm( )m 作るもの 実際のコード 参考 作るもの 今回は、Rssフィード(Feed)とそれに紐づく記事(Entry)を元にRSSフィードを作成します。 イメージは/feeds/id.rssにアクセスした際に下…

railsのViewからVueの単一ファイルコンポーネントへモデルのインスタンスを受け渡すMEMO

railsのviewからVueの単一ファイルコンポーネントへモデルのインスタンスをいい感じに渡す方法を模索して、結構ハマってたのですが、自分なりに落ち着いたのでやり方をメモしておきます✍ 今回やりたかったこと どうやったか 参考 今回やりたかったこと やり…

railsとruby標準ライブラリで作るRSSリーダー的なやつの作り方Memo📝

はじめに 作るもの 使うもの 作り方 モデルを作る RSSを読み込んでParseする エントリーを取得して保存する 保存したエントリーを表示する おわりに 参考 はじめに みなさん、こんばんは。まどぎわです(・∀・) rubyの標準ライブラリにRSS用のライブラリがあ…

FactoryBotでtrait付きの関連(Association)を定義する

こんにちは、まどぎわです(・∀・) 今回はFactoryBotでtrait付きの関連(Association)を定義する方法を知ったのでメモしておきます✍ 前提: Quizの正解数ランキングを集計する処理の検証 trait付きの関連(Association)を定義してリファクタリング 参考 前提: Qu…

MeCabとRubyで形態素解析をやってみる👩‍🔬

今回は、MeCabを使って形態素解析を行ってみたので、やり方とかをメモしておきます✍ MeCabとは? MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態…

minimagickで生成した画像をDBに保存したときに`ArgumentError (invalid byte sequence in UTF-8)`が発生したときの対処法

minimagickを最近ちょっと使っているのですが、合成した画像を保存する際に、めちゃめちゃハマったので対応方法をメモしておきますφ(・・ 事象 解決策 参考 事象 画像に文字を合成してMiniMagick::Imageのインスタンスを返すImageBuilder::PostThumbnail.build…

RubyonRails:whereでサブクエリを使って効率よく対象を絞って取得する方法👀

みなさん、こんにちは。まどぎわです(・∀・) 今回は、ちょっと複雑な条件をサブクエリを使って効率よく取得する方法について書こうと思います✍ 今回のケース 対応案を考えてみる 公開中の投稿を変数に入れて紐づくコメントを取得する(いまいち) pluckを使っ…

railsの勉強のためのTwitterBotをリリースしました📢

みなさん、こんばんは。まどぎわです(・∀・) 本日、Rails勉強BotというTwitterBotをリリースしました! railsを勉強している人には役に立つと思うので、この記事で使い方など紹介します✨ rails勉強Botとは? rails勉強Botの活用方法 どうやって作ってるの? …

RubyOnRails:FormObjectを使って複雑なフォームの処理を良い感じに実装するメモ✍

みなさん、こんにちは!まどぎわです(・∀・) 今回は、Railsのデザインパターン(?)の一つのFormObjectについて学んだので、使い方とかをメモしておきます✍ FormObjectってなに? FormObjectとは、ActiveModelをincludeしたClassにフォームで扱うプロパティをも…

herokuとrubyでゴミ出しを通知するLINE BOTを作ってみた🔔

みなさんこんにちは、まどぎわです(・∀・) 今回は、いつも忘れてしまっていたので、毎日明日出せるゴミを通知してくれるLINE BOT作ってみました やってみたら意外と簡単に出来たので手順等をメモしておきます LineBotの作り方 流れは下記のような感じです Li…

【Rails】Webpackerを使ってRailsにフロントエンド開発環境を作ってみた

みなさん、こんにちは。まどぎわです(・∀・) 今日は、RailsアプリにWebpackerを使って、フロントエンド環境を整えて少し開発してみたので、そのあたりをブログに整理しておこうと思います WebPackerとは? 今回やったこと Webpackerの導入手順 フロントエン…

Ruby:ログ出力を支援するsppというgemを作ってみた💎✨

こんにちは、まどぎわです(・∀・) 今回はsppというログ出力を支援するGemを公開したので、それについて書こうと思います (ちなみに初めてRubyGemsにコードを公開してみました...!) ちなみに今回リリースしたGemは下記です。 spp | RubyGems.org | your comm…

Ruby:mini_magickを使って画像に文字(テキスト)を合成する

みなさん、こんにちは。まどぎわです(・∀・) 今日は、mini_magicと使って画像にテキストを合成する方法をメモしておきますφ(..) mini_magicを使うと某匿名質問サービスみたいに画像に文字を合成する機能を結構簡単に作ることが出来ます ↓公式のリポジトリは…

RubyonRails:current_userへのメソッド呼び出しで発生したN+1に対応する

まどぎわです(・∀・)今日は、current_userへのN+1問題の対応についてです! railsで開発していると、N+1問題にぶつかって対応することが多いかと思います。 普通であれば、DBアクセス時にincludes等を使って関連モデルをキャッシュしておくことで対応するこ…

RubyonRails:rails5.2の新機能「ActiveStrage」で画像アップロード処理をお手軽に実装してみる

Rails5.2でActiveStrageというファイルアップロード系の機能が新しく追加されましたね(・∀・) ちょっと自分が作っているアプリで使ってみたので使い方をφ(..)メモメモ ActiveStrageとは? ActiveStrageとは、Rails5.2から実装されたファイルアップロード機能…

RubyonRails:accepts_nested_attributes_forとfields_forを使って紐づくモデルのフォームを作成する

railsの機能のaccepts_nested_attributes_forとfields_forを使うと紐づくモデルも合わせて簡単に作成できたのでメモφ(..)メモメモ 今回の想定ケース 今回はクイズのように質問があって、それに紐づく選択肢があるようなケースを想定してます。 実装イメージ…

Ruby:ShrineでUploader個別にアップロード先を設定するメモ

最近、ファイルアップロード用のgemであるShrineを使用する機会があったんですが、Uploader別にアップロード先を設定する方法が全然見つからず、だいぶハマってしまったので、やり方をφ(..)メモメモ github.com とりあえず公式のQuick startを見てみる アッ…

RubyonRails:collection_selectにデフォルト値を設定する

Railsには、データベースの値からselectタグを作るcollection_tagという非常に便利なメソッドがあるんですが、デフォルト値の設定方法で少しハマったので、そのやり方をメモしておきますφ(..) やり方 今回は、タスクにユーザーを割り当てる際に使用するセレ…

RubyonRails:検索条件を引き継いで検索結果のソート順を変更する

検索結果を指定したプロパティで並び変える際に検索条件を引き継いで、ソートする際に少しハマったのでやり方をメモφ(..) イメージは下記みたいな、検索後のタスクの一覧を期限の降順で並び替えるような機能を想定してます(・∀・) 検索条件を引き継いでソー…

RubyonRails:form_tagを使って入力値がリセットされない検索フォームを作る

Railsでフォームを作る際にform_forを使うとページの再描画が発生しても入力値がリセットされませんが、form_tagを使うとリセットされてしまいます。。。 検索フォーム等では、form_tagを使用することが多いような気がするのですが、検索ボタンを押してもリ…

RubyonRails:acts-as-taggable-onのN+1問題を解決する

自分で運営しているサービスのタグ付け機能にacts-as-taggable-onを使っていたのですが、N+1が発生しまくってしまったので、その解決方法をφ(..)メモメモ acts-as-taggable-onのバージョンは下記の通りです。 $ gem list acts-as-taggable-on (5.0.0) 解決法…

RubyonRails:activerecord-importを使って複数レコードを一括登録する(BULK INSERT)

みなさん、こんにちは。まどぎわです(・∀・) バッチ処理等で複数のレコードを一括で登録する際にどのようなコードを書いていますか?今回は、そんなときに便利なactiverecord-importの使い方を調べたのでメモしておきますφ(..) activerecord-importの使い方 …

RubyonRails:ActiveRecord::Relationをto_aすると色々とはかどるかも知れない件

最近ActiveRecord::Relationをto_aすると色々とはかどるかも知れないという知見を得たのでメモしておきますφ(..) whereを使って取得した結果(ActiveRecord::Relation)をselectとか使って結果から特定の値を持つレコードを取ってこようとするとやDBアクセスが…