Madogiwa Blog

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

開発

RubyonRails: 検索フォームから値を受け取って、値があれば検索するときの実装を考えてみる🤔

みなさん、こんばんは。まどぎわです。 今回は検索処理で値があるときだけ絞り込みを行うときにどうやって実装するのが良いのかなと、すこし考えたので検討過程をメモしておきます。 はじめに まずは何も考えず実装してみる(かなり良くない) とりあえず検索…

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にフォームで扱うプロパティをも…

【Ruby on Rails】Rails GuidesにPRを出して、Railsのコントリビューターになったよって話

はじめに みなさん、こんにちは、まどぎわです(・∀・) この前Railsのコントリビューターになりました! 実際にマージされたのが下記PRです github.com 内容としては、Rails Guidesを1文字修正しただけなのですが # bofore If it says something like "Rails …

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

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

Ionic:Dockerでionic開発環境を作る🐳

こんにちは、まどぎわです(・∀・) 最近またionicを触りはじめて、環境構築する際にローカルではなく、 Dockerを使ってみたのでそのやり方をメモしておきますφ(・・ ちなみに私の環境は、下記の通りです。 種類 バージョン OS MacOS High Sierra 10.13.6 Docker…

Vue.js: 異なるVueインスタンスのdataの値を取得する方法

下記のような2つのVueインスタンスあり、別のVueインスタンスのdataの値を参照したいときに少しハマったので、ちょっとバッドプラクティス感ありますが対応方法をメモメモφ(・・ 結論としては、下記のようにすればできた 参照したいVueインスタンスを変数に入…

bashでgitのコマンドのtab補完を有効にする方法

みなさん、こんにちは。まどぎわです(・∀・) 最近bashを使ってfishを使って、またbashに戻ってきました。いろいろ調べてみると結構bashでもいろいろ出来るみたいですね bashだとMacのデフォルトで入ってるし、いろいろ出来るのであれば環境構築が要らないbas…

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

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

【開発効率UP】Emacsキーバインドでコンソール操作を快適にしよう!

みなさん、こんにちは。まどぎわです(・∀・) コンソール操作って結構めんどくさいですよね。。。 例えばコマンドを打ち間違えてしまった場合、普通にやると下記のようになるんじゃないかな?と思います。 しかしEmacsキーバインドを使うと、下記のように修正…

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から実装されたファイルアップロード機能…

関連モデルの関連モデルの読み込み処理を行うN+1問題を解決する。

関連モデルの関連モデルを参照する場合のN+1問題の解消方法で少しハマったのでφ(..)メモメモ 問題 例えば、下記のようなClassがあった場合にtask.user.groupを取得しようとするとGroupの読み込み処理によりN+1問題が発生する。 そのためTaskを取得する際には…

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

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

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

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

GithubMarketplaceで自動テスト、コード解析環境が簡単に出来て最高かよってなった話

GithubMarketPlaceからCircleciを導入してみたら、初めてだったたけど意外と簡単に、しかも無料で自動テスト・コード解析環境が作れて「最高かよ」という気持ちになった ちなみに構築した環境は下記のような感じで、普通のrailsアプリケーションです key val…

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

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

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

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

Webエンジニア転職1ヶ月目まとめ、 コーディング量とか数字で整理してみた

みなさん、こんにちは!(・∀・) 4月からSIerからWeb系の企業に転職して、あっという間に1ヶ月が経ちました。 この1ヶ月間につくったPRのSTEP数と作成するまでに掛かった工数を整理してみましたφ(..) Web系企業に転職すると、1ヶ月でどれくらいコードを書くの…

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アクセスが…

RubyonRails:Gemを使わずに画像アップロード処理を実装する

こんばんは、まどぎわですφ(..) 皆さんは画像アップロード処理はどうやって実装していますか? RailsだとCarrierWaveを使った実装がメジャーだと思いますが、今回はあえてGemを使わずに画像アップロード処理を実装する方法をメモしておきます。 ※railsのバー…

RubyonRails:最近頂いたコードレビューを整理してみました。

みなさん、こんばんは!まどぎわです(・∀・) 最近、ソースコードレビューを受ける機会があったので、指摘頂いた内容を復習も兼ねて備忘目的で下記に整理してみました。 また私が作ったRailsアプリケーション環境関連は下記の通りです。 category version rub…

RubyonRails:has_oneで1:1のAssociationを定義し、モデルを適切に分割するメモ

こんばんは、まどぎわです(・∀・) RailsアプリケーションでUserモデルにプロパティがモリモリマッチョになっていませんか?? 例えばこんな感じ。 Userモデル id email password name birthday sex job etc... こうなってくるとプロパティだけでなくて、User…