Note

3年後の自分のために書いています

Ruby

rails stats コマンドで app 以下のディレクリを全て計測できるようにする

$ rails stats コマンドはデフォルトでは以下のディレクトリしか計測しないため、サービスクラスを app/services 以下に置いているような場合、その分は計測されない。 app/controllers app/helpers app/jobs app/models app/mailers app/mailboxes app/chan…

Rails の API モードで静的ファイルをホスティングする

環境 ruby 2.7.1 rails 5.1.2, 6.0.3 の両方 結論 以下、二つの方法がある。 config.public_file_server.enabled を true にして public ディレクトリ以下に置く 静的な HTML ファイルを表示させたいだけなら config.public_file_server.enabled を true に…

Rails の API モードでセッションを有効にする

巷には config/application.rb 内で Rails.app_class.config.api_only = false にすればできる、的な記事が溢れているが、不要な middleware まで読み込みたくない。 環境 ruby 2.7.1 rails 6.0.3 差分 デフォルトの CookieStore を使う場合 diff --git a/co…

gem 'her' コードリーディング

と言いつつ途中から依存してる 'faraday' のコードリーディングがメインになった。 her 側で faraday_options 引数として渡した Hash を faraday 側では url という名前で扱っており、混乱したので記事にしておく。 バージョン her (1.1.0) faraday (0.17.3)…

gem 'pg' コードリーディング

なぜだか急に pg gem の実装が気になった。 # コネクション張って SELECT するだけのコード require 'pg' conn = PG.connect(dbname: 'hoge') conn.exec('SELECT * FROM fuga') do |result| result.each do |row| puts row end end のコードを実行した時に…

JavaScript のスプレッド構文とレスト構文がややこしいので Ruby の配列展開と splat パラメータで理解する

細かい仕様の違いはあるかもしれないが、大体以下の感じで理解している。 スプレッド構文 Array に関しては Ruby でいう配列の展開(*)とほぼ同じかな。 スプレッド構文を使うと、関数呼び出しでは 0 個以上の引数として、Array リテラルでは 0 個以上の要…

rails, rack, unicorn or puma, nginx の関係についてちゃんと理解したい

だいぶメモ書きです。 表題の件、まだ曖昧にしか理解できてない。 ググっても浅い情報しか出てこないし、各ライブラリのソースコードを読んでみたけどどう繋がってるか、それぞれどんな役割を担っているか把握するのムズいなぁ…。 結論 色々調べてここまで分…

RubyKaigi 2019 レポート & 所感

はじめに RubyKaigi 2019 に参加してきました。自分の聞いた発表のレポートや所感を書いていきます。(現時点で Twitter でスライドが公開されているものは載せておきます) 自分の理解・関心の度合いによって、文量に差が出ていますがご容赦ください。 間違…

graphql-ruby の lib/graphql/schema.rb のコードに興奮した

GraphQL はほとんど関係なく Ruby の話です。 GraphQL Ruby を実行する時はだいたいこんな感じで使う。 # app/graphql/my_schema.rb class MySchema < GraphQL::Schema # ... end # app/controllers/graphql_controller.rb result = MySchema.execute( param…

Ruby の Array#each で空の配列をレシーバに取るとブロック内は実行されない

タイトルのまんまですが。 nil が回ったりするのかなと勝手に思ってました。 # レシーバが空の配列だとブロック内は実行されない [].each { puts 'hoge'} #=> [] [].each { |i| puts i } #=> [] # Hash#each も同じく {}.each { puts 'hoge'} #=> {} {}.each…