カレーの恩返し

おいしいのでオススメ。

Ruby

Rails7.1からcolumn,enum名に使えない名前が増える可能性が高いので注意

3行まとめ Rails 7.1 から dup, freeze, hash, object_id, class, clone, frozen は column 名や enum の種類として使えなくなる可能性が高い 該当 column を持つ Model の initialize で ActiveRecord::DangerousAttributeError が発生する 各位そういった…

rubocop-ast.wasm を作った

便利そうなツールを作ったという紹介です。 Ruby 30th LT に出したのですが落ちたので供養として書きました。 解決しようと思った課題 Ruby には RuboCop という linter 兼 formatter があります。 RuboCop に元々入っているルール(Cop と呼ばれます)だけ…

ActiveModel::Dirty を使うときに気をつけること

最近ハマってしまったのでメモとして残しておく。 TL;DR 自身のmodel と association を同時に save する場合は dirty attribute が上書きされる可能性があるので注意する必要がある。 本編 雑なサンプルを提示する。 User : ユーザー作成時に新規ユーザー向…

sorbet は production で使えるのか [2020/03/29 時点]

sorbet は少し前に話題になっていた Ruby の type annotaion gem。 sorbet.org 以下のようなコードを書くと静的型チェック、動的型チェックの両方をやってくれる。 # typed: true require 'sorbet-runtime' class A extend T::Sig sig {params(x: Integer).r…

Podcast配信機能をRailsに組み込んでみた

これは呉高専エンジニア勉強会 Advent Calendar 2017の9日目の記事です。 呉高専OB1年目の@euglena1215です。 今年の12月はすごい勢いで記事書いてます。 とあるラジオのサイトでPodcastを配信したくなったのでどう実現するべきなのかを考えた過程を書いてい…

ActiveRecordっぽいO/Rマッパーを作ってみた

github.com ActiveRecordっぽいものを一度実装してみて本物と実装方法の違いを眺めるのが勉強になりそうだと思ったのでとりあえず作ってみました。 ついでにSQLite3のC言語APIをRubyで実行できるようにする拡張ライブラリsqlite3_coreも作りました。 ※記事中…

refineは一体どこで真価を発揮するのか

結論 ナンセンスな標準メソッドの実装にパッチを当てたくなったときにrefineは真価を発揮する。 以下、結論に至るまでに道のりです。 refineとは Rubyにはrefineというどんなクラスのメソッドでもローカルで再定義できる機能がある。 [1] pry(main)> module …

RDFをSPARQLを使ってRailsでDBっぽく扱ってみた

RDFをSPARQLで操作するハッカソンがあり、Activerecordを使ってのDB操作と同じようにRDFを扱いたかったのでactiverecordのメソッドっぽくラップしてみた。 まず以下をGemfileに追記する。 # Gemfile ... gem 'active_attr' gem 'sparql' active_attr はテー…

RubyとSwiftにおける感嘆符/疑問符の扱いの違い

RubyとSwiftでは「!」と「?」が多用されますが使い方が違います。 Swiftでの使い方に中々慣れなかったので自分なりに対比させてまとめてみました。 元々Rubyを書いていてこれからSwiftを書き始める人やその逆の人の参考になればと思います。 最も違うところ …