indilog

Ruby/Rails/React/Goなどに関して自分が勉強したことなどを投稿しています

クエリ結果を軸としたGraphQLのエラーハンドリング

この記事は GraphQL Advent Calendar 2020 6日目の記事です。 前回の記事は @fossamagna さんの AppSyncのGraphQL APIを@apollo/clientで呼び出す でした。 この記事では以下の記事で紹介されているGraphQLのエラーハンドリングの手法についての紹介と、それ…

Reactのイベントハンドリングについて

はじめに この記事はReact #2 Advent Calendar 2019 11日目の記事です。 先日JSConfに参加し、今まであまり意識せずなんとなく使ってきたReactのイベントハンドリングについて個人的に新しい発見があったので、記事にしてみます。 本記事ではReactのイベント…

Herokuのreview appsでアプリケーション毎にelasticsearchを利用する

review appsでもelasticsearchを無料プラン内で自動的に設定して、運用をしてみたかったので色々試してみたらできた記録 1. searchkickを導入する elasticsearchの機能/設定を簡単にrailsに組み込むために、こちらのgemを利用する github.com Gemfile gem 's…

Layout/EmptyLineAfterGuardClause

Rubocopの0.59.0からLayout/EmptyLineAfterGuardClauseというcopがデフォルトになったみたい github.com 早期リターンの後に行を空けると、どこまでが早期リターンで、どこからが中身の処理なのかがわかりやすくなるから良いよね

STIを利用している場合のFactoryBotのfactory定義について

STIを活用しているモデルは、スーパークラスでfactoryを定義して、テストでオブジェクトの比較をすると、スーパークラスのままのものと、 サブクラスに変換されているものとの比較になってしまうことがあり、そのためテストが落ちることがある 以下のように…

RSpecのexpectとis_expectedの挙動の違いについて

subject(:actual_object) { ... } it { is_expected.to eq(expected_object) } と subject(:actual_object) { ... } it { expect(actual_object).to eq(expected_object) } では挙動が異なるという話 上の方を actual_object と expected_object を同じ属性…

Model周りのRSpecを書く時に意識していること

正しい方法かはわからないけど、最近Model周りのテストコードを書いていて自分でしっくりくるような書き方を考え出したのでつらつらと書いていきたい テストコードの基本形 あるModel内のインスタンスメソッドをテストする場合の基本形としては、このような…

Shrineでdelete_rawプラグイン使用時に元の画像を削除せずにseedデータを作成する

seed_fuを利用し、 Model.seed do |s| s.image = File.new(image_path) end としてseedデータ登録時にShrineを用いて画像を登録するようにしていたら、 seedデータ作成時にdelete_rawのプラグインを入れていたため、元のファイルが削除される形になってしま…

Heroku PostgreでStagingのデータをReview Appsにimportする方法

herokuのreview appsを使っていて、review appsでstagingにあるデータをそのまま使ってデータがある状態で検証を行いたいと思い、とりあえずインポートする方法を探してみたところ、以下の方法でできた 手順 Stagingのherokuの管理画面からOverview⇨Heroku P…

peco+historyで便利なhistory

設定 brew install peco でpecoをインストール ~/.zshrc で以下を追記 function peco-select-history() { BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey '^r' peco-select-…

みんなのGo言語 Day3

今日もつらつらと読んだことをメモ的に書いていく Goを始める 学習方法 A Tour of Go を一通りやってみる ドキュメント を読む プロジェクトを始める時に気をつけること リポジトリ名は小文字にする リポジトリのディレクトリ構造は $GOPATH/src/{レポジトリ…

みんなのGo言語 Day2

エディタと開発環境 今回はgoで開発する際に使われるlint系のツールやエディタでよく使われているツールの紹介だった vetとgolint vetはエラーの可能性がある箇所を指摘してくれるツール vet - The Go Programming Language golintはスタイルなどを指摘して…

みんなのGo言語 Day1

1.1 開発環境の設定 Goのインストール 前やった時にここら辺のインストールは終わってた $GOPATHの設定 ここの設定も前やった時に実施済みだった でもよくあるGOPATHの設定場所とかが載ってるの地味に嬉しいと思う。正しいものとかはないかもだけど、ベスト…

みんなのGo言語 Day0

RailsとReactをただひたすら書き続けるのに疲れ、刺激を求め何か新しいものにチャレンジしたく、 A Tour of Go を一度さらっとやってみた後に表紙のGopherに惹かれこちらの本を買ってみた スローペースな感じになりそうだけど、とりあえず記録のためにそれぞ…

BEMの書き方についてちょっとだけ勉強

BEMとは BEMとは Block 、Element 、 Modifier の頭文字を取ったもので、構成する要素をそのどれかに当てはめて命名していく方法。 それぞれの要素 Block 構成のルートとなる要素 継承元のクラス Element Blockに所属する子要素 単体だと存在できない Block…

プログラミングと自分

高校の時から夢見てた職業としてのプログラマに半年前になり、ふと自分はどのようにして学生時代PCやプログラミングと関わってきたのかを振り返ってみたくなったので軽く書いてみる。 PCとの出会い-小学校低学年 自分が生まれて初めてPCを触ったのは小学生低…

itamaeでsidekiqが使えるようにredisをremiからインストールする

問題 railsでActionCableを使ってアプリを作っていて、ActiveJobを処理させるためにsidekiqを導入しようとしたら、 epel だとredisのバージョンが足りなかった。 github.com # recipes/redis.rb package "redis" do options "--enablerepo=epel" action :ins…

gretelって名前がメルヘンだけどパンくずリスト作りに便利

パンくずリストの実装って結構面倒くさそうだなって思ってたけど、gretelはなんて素敵gemなんだろうと思った。 github.com 使ってみた READMEにもかいてあるけど、おもむろに Gemfile gem "gretel" と書いて bundle install 次に設定ファイルを rails genera…

React&React Native入門者の会に参加してきた

React&React Native入門者の会というものに参加し、面白そうだと思ってたけど全然触れてなかったReactについて色々と話を聞いてきたので雑まとめ。 Reactive Nativeのおかげで爆速でNativeアプリが書ける話 @prologさん http://snack.to/bhclvf3k アンドロイ…

【Rails】guard-livereloadを使ってみる

きっかけ ReactJSの開発環境を設定している動画で、livereloadでサクサク開発をしているのが紹介されているのを見て、面白そうだなと思ってやってみました。 guard-livereload github.com RSpecとか更新時に色々と自動化してくれるやつのlivereload版。 view…

【Rails】Time型で時間の条件だけを指定して取得

DBはSQLite3を使用 問題 id: 1, starttime: 2000-01-01 10:00:00 +0900 id: 2, starttime: 2000-01-01 10:00:00 +0900 このようなレコードがあった時に Model.where(starttime: Time.parse("2000-01-01 10:00:00 +0900")) ではid: 1のみの取得となってしまっ…