Ruby
N:Nの関連性のレコードをサッとつくるためのtraitを作りたい場合のtips 環境 Gemfile.lockは以下のような環境 factory_bot (6.4.4) activesupport (>= 5.0.0) factory_bot_rails (6.4.2) factory_bot (~> 6.4) railties (>= 5.0.0) 使い方 factory_botでは一…
あんまり書く機会がないのでメモ 環境 ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin22] 構文 公式ドキュメント曰く {{式1}} rescue {{式2}} の形式で書くことができ、以下と同義になる begin {{式1}} resuce {{式2}} end 公式ドキ…
表題の通り。ドキュメントにわかりやすく記載がないので、各記述をよりあつめた話をドキュメントをもとにまとめる。 調査したバージョン $ rbenv -v rbenv 1.2.0-59-g0704e65 rbenvが利用するRubyのバージョンを決めるのはどの情報をもって決めるのか まずは…
当たり前なんですけど、部分的に切り取ると違和感があるので言葉でまとめる 環境 config (4.2.1) gemそのもののリポジトリは以下 rubyconfig/config: Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby proje…
Rails上で render status: :not_found とかやっているが、この :not_found と 404 はどこなのか、という小ネタ。 確認した環境 $ bin/rails -v Rails 7.0.6 Railsのステータスコードのシンボル 一覧はRailsガイドにある。 レイアウトとレンダリング-2.2.13.4…
Railsでparamsの値を処理するときによく使われるので、どういうものがあるかを一覧で整理する 参考元 class NilClass (Ruby 3.2 リファレンスマニュアル) 一覧 メソッド名 変換されるクラス 変換後の値 to_i Integer 0 to_s String "" (空文字) to_a Array […
当たり前といえば当たり前の小ネタ 環境 $ rails -v Rails 7.0.6 $ ruby -v ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [arm64-darwin22] そもそもmergeとは hashのmergeメソッドは2つのハッシュを1つにまとめ、同じキー名のものをマージする。例えば…
日頃のコードレビューの言語化です。 前提 Ruby on Railsのバージョンとしては6ぐらいを想定しています viewの記述にはerbを想定しております。 よくあるケース 例えば下記のようなテーブル構成をしているModelがあるとする create_table "users", force: :c…
知らなかったので備忘まで。ただし万能ではないので用法用量を守って正しくお使いください。 環境 $ rails -v Rails 7.0.6 $ ruby -v ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [arm64-darwin22] どういうものか Railsコンソールには --sandbox とい…
ハッシュを用いたキーワード引数(アスタリスクを二重につける記法のもの)を使ってしまうことによるデメリットと代替案に関してまとめます。 今回扱うケースとRubyのバージョン 一息おいて考えてほしいケースのサンプルコードは以下 def put_english_text(*…
いまいちちゃんと理解していなかったので改めてまとめる 大前提としての値渡し、参照渡し プログラミング言語の引数の渡り方の話で出てくるフレーズなので説明としては簡素に記述するが 値渡しは呼び出し元の実数値(実引数の値)を呼び出した関数の引数(仮引…
知らなかった仕様 検証した環境 $ ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] 出典 例外を発生させます。第一の形式(引用注:raise のみの記述のこと)では直前の例外を再発生させます。 - 制御構造 (Ruby 3.1 リファレンス…
そもそもRDocの:nodoc:とは Rubyに標準的に備わっているドキュメント生成のライブラリRDocには:nodoc:というオプションがある。これはどういうものかはドキュメントに記載がある。 指定した要素をドキュメントに含めません。 - library rdoc (Ruby 3.1 リフ…
このエントリはRubyのAdventCalendar2021の13日目の記事です。 書き方として割と見かける事が多いので、こういう使い方もできるよという知識の一つとしてご紹介します。 環境 $ ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] …
パースエラーになる、のでワークアラウンド的な対策 環境 $ ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] やりたいこと 正常に変換できるケース 例えば以下のような test1.tsv があるとする(タブはHTMLの表現上うまく出ないの…
あんまり直球な情報がないのでメモがてら 環境 $ ruby -v ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19] やり方 URLからハッシュ化 target_url_with_query = "https://example.com?equal_string=ZXhhbXBsZXNleG1hcGxlcw%3D%3D&exa…
要因がわかれば自明だけどわかりづらい、自分の引いたバッドノウハウのメモ。 環境 ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] どういうことか headerの文字列一致は空白も含めて行われる、そしてheaderの文字列が存在しな…
エイリアスかと思ったら違うのでちゃんと記述する 環境 $ ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] 概要 生成されたインスタンスのクラスを調べたいときは instance_of? を使う。継承元のクラスも含めて調べたいときは ki…
エクスクラメーションマークの重ねがけ、二重のビックリマークなど、読み方が難しいやつ 環境 $ ruby -v ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux] 効能 明確に true か false にしたいシーンがあるときに ! をかけてtrueかfalseにしてか…
Railsだけど、自分の体験した辛さを言語化するシリーズ 要約 messages.first.title とかやるとコケるので、ちゃんとこういうことを考慮した作りにして欲しい。 遭遇した事象 Railsのview上に以下のようなコードがあった <div class="title"> <div id="notifce_message">『<%= @messages.first.title %>』が</div></div>…
ゼロ埋め、いわゆるゼロパディングに関してこういう書きかたがあるとはあんまり知らなかったのでメモ 環境 $ ruby -v ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17] 使い方 以下のように時間を設定する t = Time.new(2001,2,3,4,…
ほう、こんなものが…という既存プロジェクトに入ってたgemをメモるシリーズ 出典 GitHub - zmbacker/enum_help: Help ActiveRecord::Enum feature to work fine with I18n and simple_form. 環境 rails (5.0.2) enum_help (0.0.17) 効能 gemを入れたら confi…
かの onkcop には以下のような設定がある # * 式展開したい場合に書き換えるのが面倒 # * 文章ではダブルクォートよりもシングルクォートの方が頻出する # ことから EnforcedStyle: double_quotes 推奨 Style/StringLiterals: EnforcedStyle: double_quotes …
当たり前の話だが忘れてた マニュアル曰く モジュールを定義します。モジュール名はアルファベットの大文字で始まる識別子です。- クラス/メソッドの定義 - モジュール定義 (Ruby 2.6.0) ありがちな話 Railsにて /tokusyu/201912/special みたいなことを素…
wheneverの独特の書き方の元ネタ gem mojombo/chronic: Chronic is a pure Ruby natural language date parser. できること ActiveSupportとはひと味違った形で表現ができる。 基本は Chronic のクラスメソッド parse をつかってTimeクラスを生成する。 例え…
雑なメモ やり方 基本のやりかた gitで書くときには以下のように書ける。 gem "rails", :git => "https://github.com/rails/rails.git" branchを加えるやり方 gem "rails", :git => "https://github.com/rails/rails.git", :branch => "6-0-stable" 補足 い…
「毎度計算して求めたくないんだよね」というニーズに答える書き方。前書いた原理の逆引き的な応用編。 環境 書き方 ||= を使うことで二回目以降の実行を抑止できる 例 めちゃくちゃ重い処理 heavy_work があったとして、それを一回だけ実行して、それ以降は…
英語のコメットコメント書くときに困ったから調べた 出典元 Ruby 2.3.0 Released 上記の内容曰く A safe navigation operator (so-called lonely operator) &. と記載があるので、safe navigation operator が正式名称の様子。なおこれはNull条件演算子とい…
Ruby Style Guideに則っているとよく自動変換されちゃうあれ。 環境 $ ruby -v ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18] 出典 リテラル (Ruby 2.6.0) - %記法 文字列を扱う%wと%W 配列の要素が全て文字列のものの場合に使う…
怒られたのでメモ 環境 sidekiq (5.0.0) 実例 下記のように書くとご丁寧にオプション付きで -r をつけろ と怒られる $ /home/washi/example_app/bin/bundle exec sidekiq 2019-09-04T00:10:14.527Z 26140 TID-gqpwpb3so INFO: =============================…