ruby
Rails edgeでCIを動かしたい酔狂な人向けに記事を書いておく。 Rails edgeのGemfileを用意する # gemfiles/rails_61.gemfile eval_gemfile File.expand_path('../Gemfile', __dir__) dependencies.delete_if { |d| d.name == 'rails' } gem 'rails', github:…
ときどきVERSIONの定義されていないgemに遭遇するので、備忘録として書いておく。 VERSION の無いgem いくつかのパターンがある。 gemspecで文字列を直接指定しているケース database_rewinder.gemspec VERSION は定義してあるのに require されていないケー…
はじめに あとはVSCodeなどでコンテナにアクセスするなどして編集すればOKそうです(もしくはvimとか入れてコンテナ内で編集するとか) gamelinks007.hatenablog.com この記事を読んで「ホスト側で編集するようにできそう」と思ったので、試しに開発環境を作っ…
タイトルの通りなのですが、普通にやると意図した動きしなかったのでメモ。 具体的な例 factory_bot が分かりやすいです。 ルートディレクトリに Gemfile.lock がある ルートディレクトリで bundle install はしてある ルートディレクトリから gemfiles/6.0.…
12/13(金)にあった銀座Rails#16で登壇しました。 スライド speakerdeck.com 話したかったこと 1〜3年目のRailsエンジニアに参考になる話がしたい 7年やって私が覚えたことは、たぶん何かしら参考になるだろう 来週の仕事ですぐ参考になる話がしたかった 懇親…
仕事で見かけたコードを汎用化した内容にして、個人ブログにメモっておく。*1 多段ネストを reverse して Proc でラップしたり、それを RSpec で検証する方法はブログ書いてないと忘れる自信がある。 モデルの定義 class User < ApplicationRecord default_s…
平成.rb #10 でRailsのissueに取り組むきっかけが分からない人向けのメモです。 個人的に気になっているissueについて簡単にまとめました。 注意)特に初心者向けとかではありません。 STI と has_secure_password の組合せで、親クラスでvalidationsを切り…
その1って書いたけど、続くかは不明。 今回は使っているgemの読み込み時間を測ってみた。 Benchmark を仕込む config/application.rb でgemを読み込む前に Kernel.require を上書きして、計測する。 +require 'benchmark' +$result = {} +Kernel.singleton_c…
突然ですが、あなたはRailsのissueとプルリクがいくつあるかご存知でしょうか? 2019年10月17日現在、それぞれ issue 384 / PR 803 になります。 多いですよね...。 個人的に、最近このissueを減らすのを少しでも手伝えないものかとissueにコメントしてみた…
怪しい挙動を見つけたきっかけ テストコードで以下のようなことをしてました。 Rails.application.eager_load! testでもproductionと同じ環境になるように事前に読み込んでいたのですが、テストを個別に実行するときにも全ファイルを読み込んでしまうため消…
rails/rails#36895 の挙動を確認してみようかなーと思ったけど、発行されるSQLを確認する方法が分からなかったので調べた。 Rails本体のテストコードだと assert_no_queries が使えるけど、これは外で使えないので。 動いたコード assert_no_queriesの定義さ…
備忘録。 具体的な例 先日に登録されたissueを例にしてみる。 github.com 再現コードを少し書き換える v5.2.3と6.0.0.rc2でsqlite3の依存周りでエラーが出たので、Gemfileのあたりを少しだけ弄った。 # frozen_string_literal: true require "bundler/inline…
追記: activerecord/RUNNING_UNIT_TESTS に書いてあった。 自分用の備忘録。 特定のファイルを実行する方法 $ cd activerecord $ ARCONN=postgresql ruby \ -I"lib:test" \ test/cases/adapters/postgresql/range_test.rb 特定のテストケースを実行する方法 …
作ったgemはこれです。 github.com 使い方 ApplicationRecord でモジュールを include してください。 class ApplicationRecord < ActiveRecord::Base include ActiveRecordInCache::Methods self.abstract_class = true end 自動的に maximum(:updated_at) …
LTする方が少なかったので、自分がやってる知見的な事を紹介するためのブログ。 API ドキュメント OpenAPIで書いています。 初めて聞いた人向けの説明 Swagger Editorで書くと、 Swagger UIみたいな見た目のドキュメントが作れる。 ファイルの置き場所 #{Rai…
調査結果を書いただけで、あまり良い解決方法は見つけられていない・・・。 調べたきっかけ RubyKaigi 2019でRubyVM::AbstractSyntaxTree.ofメソッドを 悪用 活用している方々の発表を聞いて、自分でも試してみようとirbでメソッドを使ったら、無慈悲にもエ…
Twitterでツイートしたり、表参道.rbの懇親会では紹介していたけど、ブログに書いていなかったので今更ながらまとめておきます。 github.com Chewyの利点 READMEを一通り読んでもらうと 最高に便利なのが分かる とは思うのですが、それだと身も蓋もないので…
highwide.hatenablog.com を読んで、「自分なら設計を変えて、publicにしてからテストを書くなー」と思ったので、考え方・直し方の一例としてブログを書く。 元の設計 元記事のスライドの途中に出てくるコードはこんな感じで、バッチ処理などでよくある設計…
rakeタスクのログを調べやすくするために、ActiveSupport::TaggedLoggingを使って読みやすくする方法のメモ。 # lib/rake_logger_rails.rb module RakeLoggerRails # rakeタスクでログを出力するとき、自動的にタグ付けを行います。 # # task foo: :environm…
2019年の最初だし、ブログでも書いてみようという試み。 事の発端のツイート コード読んでいて違和感あるけど、修正しなくても動いている場合のレビューが難しい。例えば、無駄なメソッド呼び出しとか。def foo(x) a = x.flat_map(&:bar) (a + [1]).flattene…
なかなか読む時間が取れなくて積み本になっていたのを週末に読んだので、その感想です。 現場で使える Ruby on Rails 5速習実践ガイド(特典PDF付き)作者: 大場寧子,松本拓也,櫻井達生,小田井優,大塚隆弘,依光奏江,銭神裕宜,小芝美由紀出版社/メーカー: マイ…
omotesandorb.connpass.com 忙しくて2ヶ月くらい表参道.rbに行けてなかったけど、今回は参加できた。 今回の会場は外苑前の株式会社ビジネスバンクグループさんで、懇親会の時に軽食の提供があった。 ありがとうございます。 LT資料 毎日gemをアップグレード…
Ruby のしくみに面白いコードが書かれていました。 class Hash def key?(val) puts "Looking for key #{val}" false end end def add_two(a: 2, b: 3) a+b end puts add_two(a: 1, b: 1) # Looking for key a # Looking for key b # 5 キーワード引数は内部…
実務では一切の役に立たないRuby雑学。 普通のdef まずは基本の書き方。 def foo puts "hello" end foo #=> "hello" class User def self.foo puts "foo" end class << self def bar puts "bar" end end end User.foo #=> "foo" User.bar #=> "bar" 特異クラ…
defの中にdefを書いたらどうなるのか? そんな実験。 class Nanoha def starlight_breaker puts "魔力が足りません" end def battle! def starlight_breaker puts "全力全開、スターライトブレイカー!" end end end user = Nanoha.new user.starlight_break…
Ruby難しい。この無名クラスは一体何者なんだ...class A class << self class B end endendp A.singleton_class.const_get(:B).ancestors#=> [#<Class:0x00007fe8c203c980>::B, Object, Kernel, BasicObject]— 神速 (@sinsoku_listy) 2018年4月30日 class A class << self class B end </class:0x00007fe8c203c980>…
タイトルは半分くらい釣りです。役に立たないRuby雑学です。 コード例 モジュールで self.new を定義すると、モジュールに対してnewが呼べる。 class A end module M def self.new A.new end end p M.new.class #=> A 別のクラスのインスタンスを返すクラス …
何度もレビューで指摘することはRuboCopのルールとして追加して、自動化しておくと便利です。 この記事では、RuboCopで新しいルールを作る方法を紹介します。 参考にしたページ これがとても参考になった。 github.com Copの書き方は独特なので、RuboCopリポ…
where.not を使っていて遭遇した問題についてrailsdmの懇親会で話していたら、@kamipo さんから「5.2では少し直っている」という情報を頂いた。 この話をしているときに思ったけど、今の where.not の問題点について知らない人も多そうなので、せっかくなの…
Rails Developers Meetup 2018 Day 1で「Railsアプリの育て方」という発表をしました。 railsdm.github.io 発表資料 余談 本当は4月から放送されるシュタインズゲートゼロみたいな流れにしたかったけど、ちょっと上手く話の流れを作れなかったので、今回は普…