Categories
├─Books Cloud services Events Standard TechTips Others
├─Software
│ ├─Mac OS Programming languages Windows Others
│ ├─Libraries
│ │ └─C C++ Java JavaScript Python Ruby Rust Others
│ └─Unix
│ └─Unix commands Others
└─Web
└─Document Service Others
`yield :foo`と`content_for :foo`の使い分け
動機
Rails 8.0.2でrails newをして生成されたapp/views/layouts/application.html.erbでは、 以下のように
yield :foo
とcontent_for :foo
が混在していました。content_forのAPIドキュメントによれば
yield :foo
とcontent_for :foo
の働きが等価となる場合もあるのですが、 このapplication.html.erbの例のように、片方に統一されず両方を利用しているケースがあったので、yield :foo
とcontent_for :foo
の使い分けについて調べる事にしました。結論
yield :foo
を使う。ただし、以下の2つのケースではcontent_for :foo
を使う。content_for :foo
を使う。content_for :foo
を使う。詳細
yieldはヘルパーメソッドの中では利用できない
content_forのAPIドキュメントに書かれている通り、 content_forは以下の例のようにヘルパーメソッド内で利用可能ですが、yieldは利用できません。
yieldとcontent_forでは、設定されていないときの戻り値が異なる
ビュー側で以下のように:fooに対して設定が行われていた場合、
yield :foo
とcontent_for :foo
の戻り値は、この例ではどちらも" Foo\n"
であり、同じになります。しかし、ビュー側で前述のような記述がなく:fooに対して設定が行われていなかった場合、
yield :foo
の戻り値が空文字列(""
)であるのに対し、content_for :foo
の戻り値はnil
であり、 戻り値が異なります。設定されていない場合に
content_for :foo
がnil
を戻す性質を利用することで、<title><%= content_for(:title) || "Sample" %></title>
のような設定されているかどうかに応じて挙動を切り替えるコードを短く書くことができます。Omotesando.rb #109
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://omotesandorb.connpass.com/event/353394/
それぞれのLTなどについての簡単な記録です。
スポンサーLT:SmartHR 様
System Spec(結合テスト)
網羅的なテストになると数千行に
どこで何の操作が行われているのかを知りたい
-> 設定を1つ変更すればバックグラウンドでブラウザを立ち上げられる
エンジニア募集中です
スポンサーLT:Hubble 様
kaiba「TRICKのはじめかた」
TRICK
TRICKを始めるには
TRICKのデモ
hatsu「MySQL・Not null制約・alter table」
s.mototsune「僕はRubyを書き続けるのか」
発表資料: https://blog.saeki-mototsune.com/articles/5
Samuel Williams(自動コーディングを用いたライブコーディング)
Toshio Maki(地域rbドリンクアップをRubyKagi2025でやってみた)
Yuto Urushima「Rubyの!メソッドをちゃんと理解する」
もともとの理解
聞いてみて分かったこと
変わった例: exitとexit!
結論
Raspberry Pi Pico W用の新規プロジェクトの作り方
無印のPicoではなく「Raspberry Pi Pico W」向けの新しい開発プロジェクトの作り方の紹介です。
ベースとなるのは、ラズパイの公式C/C++ SDKドキュメントページ で紹介されている「Getting started with Raspberry Pi Pico-series」という名前のPDF の「Manually Create your own Project」の項目で紹介されている無印Pico向けのやり方です。
この無印Pico向けから変えるのは、まずtest.cの中身をpico-examples/blink/blink.cの中身とすることです。前述のPDFのtest.cはPico Wに対応していないので、Pico Wに対応しているこのblink.cのコードに差し替えます。
次に、 CMakeLists.txtでは、PDFの内容に以下の記述を追加します。ちなみに、この追加は前述のpico-examples/blink/のCMakeLists.txtを参考にしています。
最後に、一連のビルドコマンドの中で、以下のようにcmakeのところで
-DPICO_BOARD=pico_w
オプションを付けます。ちなみにこれは、「Manually Create your own Project」の項目で付けるように書かれています。以上でPico Wに書き込むためのtest.uf2が出来るはずですので、これを実際に書き込んでLEDが点滅したら成功です。
Rais8でPropshaftを使う環境ではapplication.jsでbootstrapをimportする
Rais8から標準となったPropshaftを使っている場合でのbootstrap-rubygemのインストールについてです。
結論としましては、公式GitHubレポジトリのインストール方法にある「Sprockets」のところより前はPropshaftでも同様に作業を進め、その後はPropshaftの場合は以下の2行をapp/javascript/application.jsに追加すればインストール完了です。
なお、Propshaftの場合のインストール作業全体の例は、こちらのページで紹介されています。ご参考まで。
Omotesando.rb #108
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://omotesandorb.connpass.com/event/349392/
それぞれのLTなどについての簡単な記録です。
スポンサーLT:ブルーモ証券株式会社様
勉強会から起業に至った話
会社紹介
RubyKaigi 2025予習会
大倉さん、神速さん、牧さん、それぞれの注目セッション
初参加の人向けアドバイス
Shinjuku.rb #98 「生活発表会」
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://shinjukurb.connpass.com/event/348729/
それぞれのLTなどについての簡単な記録です。
junji-ogawa0421「基本情報技術者試験」
たどりついた本
その先に
どう学んだか
ポイント: 習慣化
hamachan「音楽やってて良かったたこと」
どんなことでもコツコツやるという癖が付いた。
terfno「論理配列について」
キーボードには配列がある。物理配列と論理配列がある。
論理配列の代表がqwerty。もっと効率が良いのがドボラック。
大西配列;英語と日本語の両方で効率が良い配列
新配列にはメリットがあるが、大きなデメリットは「配列のポータビリティが低い」こと
このデメリットを緩和するユーティリティを作っている。
Omotesando.rb #107
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://omotesandorb.connpass.com/event/346292/
それぞれのLTなどについての簡単な記録です。
スポンサーLT:IBJ様
hamachan「Ruby型推論は楽しいぞ」
s.mototsune「みんな知ってるfresh_when」
わこー「Sinatraってなんで動いているの?」
Kirika_K2「最近休日にやっていること」
sinsoku「RBS::Trace」
Kaiba「LLM Fixerの紹介」
params.expectで配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要
ちなみに、RuboCopに
require
とpermit
の組み合わせからexpect
への書き換えを自動でやってもらうことは可能ですが、配列パラメータの許可に関してはRuboCopが自動書き換えに失敗する場合があります。その理由は以下の記述は、配列のパラメータも配列でないパラメータも許可してしまうため、RuboCopとしては配列なのかそうでないのかの判定が機械的に行えないためであると考えられます。
より詳しくは、前述の記事のこちらの箇所を参照ください。
params.expectで配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要
Rails8では、
require
とpermit
に代わるより安全な新しいメソッドとして、strong parametersへexpect
が導入されました。expect
では、安全面への配慮から、配列のパラメータを指定する方法がpermit
に比べ厳格化されています。 具体的には、配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要となりました。配列のパラメータを許可する具体的な方法(引用元:
expect
のAPIドキュメント)は以下の通りです。なお、安全のためにexpectがこの二重の括弧の記法を採用した背景については、Rails 8: strong parametersの新しいparams.expectの使い方(翻訳)を参照ください。
Shinjuku.rb #97 「個人開発発表 LT大会!」
小林悟史さんの発表スライドの情報を追記しました。