Madogiwa Blog

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

Ruby

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

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…

RubyonRails:Rails5アプリケーションにBootstrap4を導入する

みなさん、こんにちは。まどぎわです(._.) 最近、作成しているRailsアプリケーションにBootstrap4を導入してみたので、その手順をメモしておきますφ(..) 手順 環境情報 試した環境を下記に記述しておきます。 gem version rails 5.1.4 bootstrap 4.0.0 Gemの…

RubyonRails:脱.erb、Hamlのはじめの一歩

みなさん、Railsでアプリケーションを開発するときには、テンプレートエンジンは何を使っていますか? Railsではデフォルトだと.erbを使うことが多いと思いますが、今回はHamlを使ってみたので導入方法や使い方をメモしておきますφ(..) Hamlのはじめの一歩 H…

Ruby:Rubyの25周年イベント「Ruby25」に参加してきた

Ruby25周年イベント 本日は、Rubyの25周年のイベントRuby25に参加してきました! Rubyは日本で生まれ、世界中で使われているプログラミング言語です。 そんな日本産のプログラミングが四半世紀普段自分が勉強で使っている言語が25周年という節目を迎えるのは…

Ruby:継承を使って良い感じにコードを共通するメモ

オブジェクト志向設計実践ガイドを読んで継承を使ったソースコードの共有化手法を学んだので内容を整理してみましたφ(..) オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz,?山泰基出版社/メー…

Ruby:ダックタイピングを使って抽象度の高い処理を実装するメモ

オブジェクト志向設計実践ガイドを読んでダックタイピングを使って抽象度を上げる方法を学んだので、整理してみるφ(..) オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz,?山泰基出版社/メーカ…

Ruby:ppモジュールで実行結果を良い感じに確認する

はじめに Rubyでデバック実行する時に、よくpメソッドを使うと思いますが、Rubyには標準でppモジュールというものがあります。 ppモジュールを使うとpよりも良い感じで実行結果を確認出来ます! 使い方 導入はとても簡単で、ソースコードにrequire 'pp'と記…

Ruby:プログラム内で出てくる記号の意味(<、::、&、@、$、**、<<-)

Rubyで書かれたプログラムを見た時に、記号の意味が良くわからないなぁと思うことがあったので、整理してみました(._.)! 記号一覧 <:継承 :::定数の参照、クラス内クラスの参照 &:&演算子、ぼっち演算子 @:インスタンス変数、クラス変数 $:グローバル…

Ruby:はてなブログAPIを使って記事の一覧をJSON形式で取得する

最近、技術系の記事はQiitaへの移行を考えているのですが、過去の記事の移行がめんどくさいなぁ。。。と思っていたので、記事の一覧をはてなブログAPIで取得するスクリプトを作ってみたので、その手順をメモしておきますφ(..) ちなみに成果物は下記に公開し…

Ruby:seleniumを使って動的ページをスクレイピングしてみる

以前、Nokogiriを使ったスクレイピングについてブログを書きましたが、JavaScriptで初期表示時にページを動的に変更しているページ等上手く値を取得するこが出来ません。。。 ※httpレスポンスに設定されたHTMLを取得しているため madogiwa0124.hatenablog.co…

Ruby:Rubyでenum(列挙型)を使う※おまけ:全ての定数の値を取得する方法

下記ツールRubyでenum(列挙型)を使いたかったけど、Rubyには明確な列挙型のようなクラスが無く、少しハマったのでφ(..)メモメモ github.com Rubyでenum(列挙型)を使うには Rubyにはenumがありません。そのためmoduleを使ってenumを表現します。 下記のように…

Ruby:作成したRubyプログラムを指定したコマンドで実行する

最近Rubyでコンソールアプリケーションを作成したので、指定したコマンドで作成したRubyプログラムを実行する方法をメモφ(..) github.com Rubyプログラムを任意のコマンドで実行方法 手順 やりかたとしては、作成したRubyプログラムへの絶対パスへのエイリア…

Ruby:複数の区切り文字で文字列を分割する方法(String.split)

はじめに 英語の文章を".“、”!“、”?“等の複数の区切り文字で分割する方法を調べたのでメモφ(..) 複数の区切り文字で分割する方法 区切り文字を統一後、分割する String.splitを呼び出す前に、区切り文字を置換し統一してあげればOK!(/・ω・)/ 今回のケースで…

Ruby:初心者向け今すぐ使えるいい感じの書き方まとめ

はじめに Rubyですぐに使えそうな見やすい書き方を自分のためにも整理してみました(/・ω・)/ はじめに 書き方 複数行の代入 bool型の判定 1行のdo…end 1行のif分 複数値の判定 範囲の判定 配列中で特定の条件に合致する要素のみを抽出 クラスの配列から特定の…