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
SprocketsからPropshaftへの移行に関する注意点
Propshaftは.erbを処理しない
Sprocketsは拡張子が
.erbのファイル(例:foo.scss.erb)を処理しますが、Propshaftは処理しません。 そのため、Sprockets で.erbを処理している場合、Propshaftへ移行するには次のいずれかの対応が必要になります。.erbの利用をやめ、プレーンなCSS/SCSSなどに書き換える.erbの処理を、Propshaftに渡す前の前処理として別途組み込むSprocketsからPropshaftへの移行に関する注意点
Propshaftへの移行に際して、tailwindcss-railsまたはdartsass-railsを選ぶのもあり
Propshaftの公式移行手順では、CSS関連の処理が必要な場合の選択肢として cssbundling-rails のみ紹介されていますが、 tailwindcss-rails と dartsass-rails という選択肢もあります。cssbundling-railsのREADMEには、選び方のヒントが掲載されています。
SprocketsからPropshaftへの移行に関する注意点
SprocketsからPropshaftへの移行手順は、 以下のPropshaftの公式手順で基本的には問題ないと思いますが、 この公式手順に記載されていないものを中心に、 移行における注意点をこのTopicで集約できればと思います。
https://github.com/rails/propshaft/blob/main/UPGRADING.md
OmniAuthを利用したログインのボタンやリンクではTurboをオフにした方が無難
OmniAuthを利用すると外部サービスの認証情報を用いたログインが可能となりますが、 そのログインのボタンやリンクでは、以下のように
data: {turbo: false}を付けてTurboをオフにしないと、ログインが機能しない場合があります。なお、公式のREADMEにあるRails向けサンプルでも
data: {turbo: false}が用いられています。また、Rails 7からは、Turboがデフォルト構成に組み込まれ有効になっているため、OmniAuthを利用する際は本件への注意が必要です。
setup-rubyにおける.ruby-versionを用いたバージョン指定
ruby-version:が無いときのデフォルト動作では、まず.ruby-versionを読みに行くのですね。知りませんでした。ちなみに少し調べてみたら、2020年のv1.3.0のときから既にそういう仕様のようですね。
それから、railsの新規アプリのGitHub Actionsの設定も現在は
ruby-version:を省略するようになっていますね。setup-rubyにおける.ruby-versionを用いたバージョン指定
setup-rubyのREADMEに以下の記述がありますので、
ruby-version:を設定ファイルにあえて書かないことで、.ruby-versionに設定することも可能です。設定ファイルをできるだけ簡潔にしたいなら書かない選択もありですし、逆に分かりやすさを重視するなら明示的に書くのも一案です。どちらを取るかは悩ましいところですね。
Podmanのreplaceオプションを使ってワンコマンドでPodを作り直す
以下のコマンドの実行などで、Podに対応するKubernetes YAMLファイルを一度用意しておけば、
replaceオプションを利用した以下のコマンドで1つで、PodとそのContainerの停止から削除、再生成までを一度に行えます。Imageの更新について
Kubernetes YAMLファイル内で
imagePullPolicy:を指定していないlatestタグのImageは、replaceを利用した前述のコマンドの実行により、Imageの更新(pull)も併せて行われます。latest以外のタグのImageが更新された形でPodを再生成したい場合は、 以下のコマンドでImageを更新してから、
replaceを利用した前述のコマンドを実行します。参考情報
`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が点滅したら成功です。