文章: mala
- 2025-01-20 初稿
- 2025-01-23 いくつかの補足と自分の過去のprivateでの言及のおまけ
- 気が向いたら、追記するかもしれない
| FROM ruby:3.2.2-alpine | |
| # ============================================================================================================ | |
| # Install system packages | |
| # ============================================================================================================ | |
| RUN apk add --no-cache --update \ | |
| bash \ | |
| build-base \ | |
| curl \ | |
| gcompat \ |
This challenge tests if you can locate the cause of a Rails issue in 5 iterations (script execution). Although it's a Rails issue, prior knowledge on Rails is not required.
The 5 iterations limit may feel constraining, but it is intentional. If you can't locate the cause within the limitation, that's totally fine.
After the challenge, there's a simple questionnaire. If you can answer the questions, it'll help me prepare my talk for RubyKaigi. Any feedback will be appreciated 🙏
I recommend allocating 1.5 hr for the challenge and the questions
DidYouMean::SPELL_CHECKERS.merge deprecate warnings anymore.database.yml with aliases and secrets.yml with aliases.| class StrippedString < ActiveModel::Type::String | |
| # 左右の空白を除去した文字列クラス | |
| # | |
| # @param [Object] value | |
| # | |
| # @return [String, nil] | |
| def cast(value) | |
| super(value)&.strip&.presence | |
| end |
| # validates :column_name, boolean: true のように使う | |
| class BooleanValidator < ActiveModel::EachValidator | |
| def validate_each(record, attribute, value) | |
| return if value.is_a?(TrueClass) || value.is_a?(FalseClass) | |
| record.errors.add(attribute, :not_boolean) | |
| end | |
| end |
-- Build better software with more intuitive, maintainable, scalable, and high-performance Ruby code
「Rubyの磨きかた -- わかりやすくてメンテナンスしやすい、スケール可能で高性能なRubyコードでソフトウェアを上手につくろう」みたいな感じ?
https://www.packtpub.com/product/polished-ruby-programming/9781801072724
| <!-- app/components/dropdown/component.html.erb --> | |
| <div class="relative inline-block text-left" data-controller="dropdown--component"> | |
| <div> | |
| <button type="button" | |
| class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500" | |
| data-action="click->dropdown--component#toggleMenu" | |
| aria-haspopup="true" | |
| aria-expanded="true"> | |
| <%= @title %> | |
| <!-- Heroicon name: solid/chevron-down --> |
特に何もやってあげてないのに他人(法人だけどさ)から何百万何千万のお金が何年もとめどなく注ぎ込まれてきたら、怖くないですか?
オープンソース・ソフトウェアの開発者だけで給料をもらうというのは、まさにこの現象が発生してくるわけ。それまでもこれからも、ずっとオープンソース・ソフトウェアの開発者はやってきたし、やっていくわけでしょう。そんなの会社があってもなくても、別にやることなんて変わらないじゃない。じゃあなんで、ある時から急にかなりの金額が振り込まれてきてしまうんだ?しかもあからさまに物価上昇を上回る結構なハイペースで昇給していく。やっていることは一切何も変わってないのに!
この状況に適応するまでにはいささかの時間を要しました。根が小心者なので。
Git 2.26.0以下*1には、細工したリポジトリをgit cloneしたときに、
そのユーザーのCredential(たとえばGitHub.comをcloneするときに使う認証情報)を奪い取れる脆弱性があります。
📝 取得できる認証情報は credential.helper の設定に依存する
既にPoC(検証するためのコード)もあり、結構簡単なので是非Gitを2.26.1以上にアップデートしましょう。 git submoduleを使うと見た目ではわかりにくい攻撃もできるので、「気をつける」では回避は難しいです。