Home Software Libraries Ruby actionpack params.expectで配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要 @wakairo 2025/02/25 15:43 Rails8では、requireとpermitに代わるより安全な新しいメソッドとして、strong parametersへexpectが導入されました。 expectでは、安全面への配慮から、配列のパラメータを指定する方法がpermitに比べ厳格化されています。 具体的には、配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要となりました。 配列のパラメータを許可する具体的な方法(引用元: expectのAPIドキュメント)は以下の通りです。 params = ActionController::Parameters.new(comments: [{ text: "hello" }, { text: "world" }]) params.expect(comments: [[:text]]) # => [#<ActionController::Parameters { "text" => "hello" } permitted: true>, # #<ActionController::Parameters { "text" => "world" } permitted: true>] なお、安全のためにexpectがこの二重の括弧の記法を採用した背景については、Rails 8: strong parametersの新しいparams.expectの使い方(翻訳)を参照ください。
Home イベント Shinjuku.rb Shinjuku.rb #97 「個人開発発表 LT大会!」 @wakairo 2025/02/06 19:07 小林悟史さんの発表スライドの情報を追記しました。
Home イベント Shinjuku.rb Shinjuku.rb #97 「個人開発発表 LT大会!」 @wakairo 2025/01/30 20:24 最終更新 2025/03/12 17:44 [お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。 Connpass: https://shinjukurb.connpass.com/event/342412/ それぞれのLTなどについての簡単な記録です。 開始前 新宿のIBJにて はじめに Shinjuku.rbの説明 スポンサーLT:IBJ様 会社概要 事業内容:婚活サービス、少子化対策につながる! IBJに入ったらこういう働き方が出来る:幅広く活躍できるなど BackendはほぼRails hamachan「Ruby型推論は楽しいぞ!」 Goで実装している 字句解析やパースについて 今後は、まず設計をしっかりしたい、テスト環境をどうにかしたい Rubyの型推論はすでにあるが、楽しみとしてやっていきます チャー「収益を出すための個人開発」 今までの個人開発 フードロス削減 おじさん救済 ECサイト 夢は個人開発による不労所得! 市場調査:検索キーワードから需要の想定 「調整さん」を改善した「調整ちゃん」で収益を出したい Wakairo「PmRails」 スライド: https://speakerdeck.com/wakairo/pmrails 様々なバージョンでのrailsコマンド実行を容易にするツール Podmanについて PmRailsについて Koji NAKAMURA「Add-on を作って学ぶ Ruby LSP」 スライド: https://speakerdeck.com/kozy4324/ge-ren-kai-fa-fa-biao-lt-shinjuku-dot-rb-number-97 LSPについて 作り出して分かったこと フルサイクル開発は楽しい yoshihisasan「Chrome拡張」 食べログの拡張 Webページにフリガナを振る 小林悟史(小林ノエル)「政治資金データベース」 発表スライド: https://www.docswell.com/s/free_world21/59V2RJ-2025-02-05-132943 政治資金収支報告書は紙をスキャンしただけの画像データなので集計が難しい データソースが複数存在し、政治家などへの紐付けが難しい 連結決算のようなデータが存在しない 既存団体は手作業で限界がある。プログラミングで解決! プログラミング・シンポジウムで受賞 s.mototsune「爆速アプリ開発」 発表資料: https://blog.saeki-mototsune.com/articles/1 年末年始、個人開発したい! 大掃除、旅行、会食、etc... 個人開発LTを見つけた! 気が付いたら1/29、昼休憩1時間で爆速開発 rails-new -> devcontainer すごいペースで、Rails 8の新機能も使いつつ、1時間で、様々な機能を実装できました yamataka22「プロジェクトタスク管理ツール」 既存ツールは計画変更が面倒:変更が当たり前なのに変更がつらい! 完成したら自分のチームでまず使う 来月末にはMVPを完成させたい
Home Software Libraries Ruby solid_queue Solid Queueとアプリで同じDBを使う時の注意点と設定 @wakairo 2025/01/30 11:52 最終更新 2025/03/26 11:13 公式READMEでは、Solid Queueとアプリで同じデータベースを利用することは可能だがいくつか注意点があると記されており、問題をさけるための設定として以下が紹介されています。 なお一般的には、class ApplicationJobはapp/jobs/application_job.rbで定義されています。 class ApplicationJob < ActiveJob::Base self.enqueue_after_transaction_commit = true end また、インストールにおいても単一データベース用にいくつか作業が必要になります。 なお、本件に関する日本語情報としては、Rails Guidesの日本語版に概要の記述があります。
Home Software Unix Unix commands env 一時的な環境変数設定はenvコマンドでも出来る Linx使い @linux 2025/01/16 21:27 あるコマンドの実行のためだけに一時的に環境変数を設定するには、 bashやzshでは実行したいコマンドの直前で環境変数設定をすればOKです。 具体的には、下例のように、タイムゾーンに対応する環境変数を設定(TZ=UTC)して、dateコマンドを実行することが出来ます。 $ date Thu Jan 16 21:08:10 JST 2025 $ TZ=UTC date Thu Jan 16 12:08:13 UTC 2025 ところが、この機能は一部の古いシェルや軽量シェルには備わっていないらしいです。 そのようなシェルでは、シェルに依存しないenvコマンドを以下のように利用して同じことが可能、という小ネタでした。 $ env TZ=UTC date Thu Jan 16 12:08:35 UTC 2025
Home Cloud services Heroku 「Getting Started on Heroku with Rails 8.x」が「db:migrate」でエラーになる @wakairo 2025/01/10 21:08 Herokuを使ってRails 8のアプリを運用するときに手始めに試されるであろうGetting Started on Heroku with Rails 8.xですが、「Last updated November 13, 2024」の版では、heroku run rake db:migrateのところでエラーが出ます。 原因は、Rails 8のデフォルトの新規アプリでは、Solid CacheとSolid Queue、Solid Cableが有効になっており、これら3つの機能はそれぞれデータベースを1つずつ必要とするところにあると思われます。 もう少し詳しく言うと、Rails 7まではアプリ本体の情報を記録するprimaryデータベース1つを用意してそのデータベースへの接続設定を行うだけで良かったところが、 Rails 8からはprimaryデータベースに加えて前述の3つの機能用にそれぞれデータベースを用意して設定しないといけなくなってしまっているのに、 渦中のGetting Startedにはそれに対応する作業の記述がないため、マイグレーションでエラーが出ているものと思われます。
Home Web Document Ruby on Rails ガイド 新規リリースに伴うRailsガイドの更新の情報 @wakairo 2025/01/08 17:54 Rails 8.0.1のリリースに伴い、Railsガイドが更新されました。更新内容は、Railsガイド公式による以下の記事をご参照ください。 https://note.com/yasslab/n/n8f0473c0f1cd
Home Software その他 PmRails PmRails 1.0をリリースしました。 @wakairo 2024/12/31 12:01 PmRails 1.0.0をリリースしました。 PmRailsは、Ruby on Railsのアプリケーションのテストまたは開発をするためのツールセットです。 RailsやRailsが依存するものをローカル環境にインストールすることなく使用できます。 Podmanを活用し、Railsプロジェクトのための隔離されたコンテナ環境を作成します。 ご不明な点や質問などございましたら、このTopicにお気軽にお寄せ下さい。できる範囲で回答いたします。
Home Web Document Ruby on Rails Guides Rails 8.0の新機能に対応するRails guidesのページ @wakairo 2024/12/26 10:30 最終更新 2024/12/26 10:39 Rails 8.0で導入された新機能に関して記述しているRails guidesのページを以下にまとめました。 Kamal: https://guides.rubyonrails.org/getting_started.html#deploying-to-production Propshaft: https://guides.rubyonrails.org/asset_pipeline.html rails generate authentication: https://guides.rubyonrails.org/security.html#authentication Solid Cache: https://guides.rubyonrails.org/caching_with_rails.html#solid-cache Solid Queue: https://guides.rubyonrails.org/active_job_basics.html#default-backend-solid-queue なお、Solid Cableの記述がRails guidesのどこにあるかは分かりませんでした。 ちなみに、GitHubのレポジトリは以下の通りで、そのREADME等からも情報を得られます。 Thruster: https://github.com/basecamp/thruster Kamal: https://github.com/basecamp/kamal Propshaft: https://github.com/rails/propshaft Solid Cache: https://github.com/rails/solid_cache Solid Queue: https://github.com/rails/solid_queue Solid Cable: https://github.com/rails/solid_cable
Home Web Document Ruby on Rails ガイド Podmanを利用して、簡単にローカルでRailsガイドの編集内容を確認する方法 @wakairo 2024/12/24 20:13 RailsガイドのPull Requestは編集後の生成結果を確認せずに送って良いそうですが、 送る前に確認している方に向けて、Podmanを利用して簡単にローカルでRailsガイドの編集内容を確認する方法のご紹介です。 メインとなるのは、以下の1行のコマンドです。毎回コピペしても良いのですが、長いのでエイリアスを貼ったり、PATHの通った場所にこのコマンドのシェルスクリプトを置いても良いと思います。 podman run -it --rm -v "$PWD":/x -w /x -p 4000:4000 "ruby:$(cat .ruby-version)" bash -c "bundle config set --global path 'vendor/bundle' && bundle install && bundle exec rake assets:precompile && bundle exec jekyll server --host 0.0.0.0" 環境構築 必要になるのはシェルスクリプトを実行できる環境とPodmanのみです。 Podmanのインストールに関してはPodmanの公式インストールガイドをご覧ください。 ちなみにUbuntuなど多くのLinuxディストリビューションでは、aptなどの標準パッケージ管理ツールでPodmanのインストールが可能です。 Podmanを利用して、簡単にローカルでRailsガイドの編集内容を確認する具体的な方法 Podmanがインストールできていれば、以下の手順でRailsガイドの編集と確認が行えます。 /guides/source/ja 内の Markdown ファイルを編集する 上述の1行コマンドを実行 localhost:4000 から変更結果を確認する 動作不良が起きた等でgemを全て削除したいとき ちなみに、上述の1行コマンドはvendor/bundle/にgemをインストールします。 Rubyのバージョンが変わって動作不良が起きた際などは、rm -rf vendor/bundle/でgemを全て削除して綺麗な状態にすることが出来ます。
params.expectで配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要
Rails8では、
requireとpermitに代わるより安全な新しいメソッドとして、strong parametersへexpectが導入されました。expectでは、安全面への配慮から、配列のパラメータを指定する方法がpermitに比べ厳格化されています。 具体的には、配列のパラメータを許可するには明示的に二重の角括弧([[ :属性名 ]])が必要となりました。配列のパラメータを許可する具体的な方法(引用元:
expectのAPIドキュメント)は以下の通りです。なお、安全のためにexpectがこの二重の括弧の記法を採用した背景については、Rails 8: strong parametersの新しいparams.expectの使い方(翻訳)を参照ください。
Shinjuku.rb #97 「個人開発発表 LT大会!」
小林悟史さんの発表スライドの情報を追記しました。
Shinjuku.rb #97 「個人開発発表 LT大会!」
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://shinjukurb.connpass.com/event/342412/
それぞれのLTなどについての簡単な記録です。
開始前
新宿のIBJにて
はじめに
スポンサーLT:IBJ様
hamachan「Ruby型推論は楽しいぞ!」
チャー「収益を出すための個人開発」
Wakairo「PmRails」
スライド: https://speakerdeck.com/wakairo/pmrails
Koji NAKAMURA「Add-on を作って学ぶ Ruby LSP」
スライド: https://speakerdeck.com/kozy4324/ge-ren-kai-fa-fa-biao-lt-shinjuku-dot-rb-number-97
yoshihisasan「Chrome拡張」
小林悟史(小林ノエル)「政治資金データベース」
発表スライド: https://www.docswell.com/s/free_world21/59V2RJ-2025-02-05-132943
s.mototsune「爆速アプリ開発」
発表資料: https://blog.saeki-mototsune.com/articles/1
yamataka22「プロジェクトタスク管理ツール」
Solid Queueとアプリで同じDBを使う時の注意点と設定
公式READMEでは、Solid Queueとアプリで同じデータベースを利用することは可能だがいくつか注意点があると記されており、問題をさけるための設定として以下が紹介されています。 なお一般的には、
class ApplicationJobはapp/jobs/application_job.rbで定義されています。また、インストールにおいても単一データベース用にいくつか作業が必要になります。
なお、本件に関する日本語情報としては、Rails Guidesの日本語版に概要の記述があります。
一時的な環境変数設定はenvコマンドでも出来る
あるコマンドの実行のためだけに一時的に環境変数を設定するには、 bashやzshでは実行したいコマンドの直前で環境変数設定をすればOKです。
具体的には、下例のように、タイムゾーンに対応する環境変数を設定(
TZ=UTC)して、dateコマンドを実行することが出来ます。ところが、この機能は一部の古いシェルや軽量シェルには備わっていないらしいです。 そのようなシェルでは、シェルに依存しない
envコマンドを以下のように利用して同じことが可能、という小ネタでした。「Getting Started on Heroku with Rails 8.x」が「db:migrate」でエラーになる
Herokuを使ってRails 8のアプリを運用するときに手始めに試されるであろうGetting Started on Heroku with Rails 8.xですが、「Last updated November 13, 2024」の版では、
heroku run rake db:migrateのところでエラーが出ます。原因は、Rails 8のデフォルトの新規アプリでは、Solid CacheとSolid Queue、Solid Cableが有効になっており、これら3つの機能はそれぞれデータベースを1つずつ必要とするところにあると思われます。 もう少し詳しく言うと、Rails 7まではアプリ本体の情報を記録するprimaryデータベース1つを用意してそのデータベースへの接続設定を行うだけで良かったところが、 Rails 8からはprimaryデータベースに加えて前述の3つの機能用にそれぞれデータベースを用意して設定しないといけなくなってしまっているのに、 渦中のGetting Startedにはそれに対応する作業の記述がないため、マイグレーションでエラーが出ているものと思われます。
新規リリースに伴うRailsガイドの更新の情報
Rails 8.0.1のリリースに伴い、Railsガイドが更新されました。更新内容は、Railsガイド公式による以下の記事をご参照ください。
PmRails 1.0をリリースしました。
PmRails 1.0.0をリリースしました。
PmRailsは、Ruby on Railsのアプリケーションのテストまたは開発をするためのツールセットです。 RailsやRailsが依存するものをローカル環境にインストールすることなく使用できます。 Podmanを活用し、Railsプロジェクトのための隔離されたコンテナ環境を作成します。
ご不明な点や質問などございましたら、このTopicにお気軽にお寄せ下さい。できる範囲で回答いたします。
Rails 8.0の新機能に対応するRails guidesのページ
Rails 8.0で導入された新機能に関して記述しているRails guidesのページを以下にまとめました。
rails generate authentication: https://guides.rubyonrails.org/security.html#authenticationなお、Solid Cableの記述がRails guidesのどこにあるかは分かりませんでした。
ちなみに、GitHubのレポジトリは以下の通りで、そのREADME等からも情報を得られます。
Podmanを利用して、簡単にローカルでRailsガイドの編集内容を確認する方法
RailsガイドのPull Requestは編集後の生成結果を確認せずに送って良いそうですが、 送る前に確認している方に向けて、Podmanを利用して簡単にローカルでRailsガイドの編集内容を確認する方法のご紹介です。
メインとなるのは、以下の1行のコマンドです。毎回コピペしても良いのですが、長いのでエイリアスを貼ったり、PATHの通った場所にこのコマンドのシェルスクリプトを置いても良いと思います。
環境構築
必要になるのはシェルスクリプトを実行できる環境とPodmanのみです。 Podmanのインストールに関してはPodmanの公式インストールガイドをご覧ください。 ちなみにUbuntuなど多くのLinuxディストリビューションでは、aptなどの標準パッケージ管理ツールでPodmanのインストールが可能です。
Podmanを利用して、簡単にローカルでRailsガイドの編集内容を確認する具体的な方法
Podmanがインストールできていれば、以下の手順でRailsガイドの編集と確認が行えます。
/guides/source/ja内の Markdown ファイルを編集する動作不良が起きた等でgemを全て削除したいとき
ちなみに、上述の1行コマンドは
vendor/bundle/にgemをインストールします。 Rubyのバージョンが変わって動作不良が起きた際などは、rm -rf vendor/bundle/でgemを全て削除して綺麗な状態にすることが出来ます。