Rails
3行まとめ Rails 7.1 から dup, freeze, hash, object_id, class, clone, frozen は column 名や enum の種類として使えなくなる可能性が高い 該当 column を持つ Model の initialize で ActiveRecord::DangerousAttributeError が発生する 各位そういった…
has many through の挙動についてずっと勘違いしていたところがあったので忘れないように書き留めておきます。 3行まとめ has many through のデフォルトの挙動では削除時に delete_all を実行したのと同じ挙動になり、callback が発火しない has many throu…
困っている人向けまとめ marginalia(ActiveRecord::QueryLogs) を prepend_comment = true の設定で使うと ActiveRecord::Relation#explain が空文字を返す問題がある marginalia に issue が立っていて修正は既に rails/rails に取り込まれている Merge pul…
最近ハマってしまったのでメモとして残しておく。 TL;DR 自身のmodel と association を同時に save する場合は dirty attribute が上書きされる可能性があるので注意する必要がある。 本編 雑なサンプルを提示する。 User : ユーザー作成時に新規ユーザー向…
結論 Concern に記述された callback が先に実行される。 既存の callback を Model もしくは Concern に移すときは気をつける必要がある。 以下確認コード class Hoge < ApplicationRecord include HogeConcern before_validation -> { puts "before_valida…
背景 既に動いているRailsアプリケーションとfrontendの間にBFF用のnodeサーバを立てて、認証情報(currentUserIdの取得)はBFFで吸収させたい。 ※ Session管理にCookie Storeを使っているRailsアプリケーションを想定しています。 書いた RubyのMarshal.load…
「RailsのService層ってどう使っていくのがいいんだろうね?」って聞かれたときにすぐ答えられなかったのでまとめておきたいと思います。 ※ Fat Modelの解決策としてTrailblazerが最近よく話題に上がりますが、私がまだ使ったことがないので触れない方向で行…
これは呉高専エンジニア勉強会 Advent Calendar 2017の9日目の記事です。 呉高専OB1年目の@euglena1215です。 今年の12月はすごい勢いで記事書いてます。 とあるラジオのサイトでPodcastを配信したくなったのでどう実現するべきなのかを考えた過程を書いてい…
github.com ActiveRecordっぽいものを一度実装してみて本物と実装方法の違いを眺めるのが勉強になりそうだと思ったのでとりあえず作ってみました。 ついでにSQLite3のC言語APIをRubyで実行できるようにする拡張ライブラリsqlite3_coreも作りました。 ※記事中…
結論 ナンセンスな標準メソッドの実装にパッチを当てたくなったときにrefineは真価を発揮する。 以下、結論に至るまでに道のりです。 refineとは Rubyにはrefineというどんなクラスのメソッドでもローカルで再定義できる機能がある。 [1] pry(main)> module …
RDFをSPARQLで操作するハッカソンがあり、Activerecordを使ってのDB操作と同じようにRDFを扱いたかったのでactiverecordのメソッドっぽくラップしてみた。 まず以下をGemfileに追記する。 # Gemfile ... gem 'active_attr' gem 'sparql' active_attr はテー…
# Gemfile gem 'carrierwave' gem 'fog-aws' gem 'rmagick', require: 'RMagick' # config/initializers/carrierwave.rb if Rails.env.production? CarrierWave.configure do |config| config.storage = :fog config.fog_provider = 'fog/aws' config.fog_cr…
こんなクラス構造 class Hoge < ApplicationRecord has_many :hoge_foos has_many :foos, through: :hoge_foos accepts_nested_attributes_for :hoge_foos end class Foo < ApplicationRecord has_many :hoge_foos has_many :hoges, through: :hoge_foos end…
Railsアプリを作成するときに毎回使う rails new my_appで何が起きているか知りたかったのでソースを読み解いてみました。 初学者なので解説が間違っている, 解説の粒度がバラバラで読みにくい可能性があります。 何かありましたらコメントください。 コード…
この続きです。 euglena1215.hatenablog.jp 検証方法が全く網羅的ではないということを踏まえた上でお読みください。 検証 XSS(クロスサイトスクリプティング) 方法 投稿フォームに以下のリンクに載っているXSSの例を片っ端から入力してみた。 XSS Filter Ev…
こんにちは。僕はこのたびセキュリティキャンプ九州2016に行ってきました。 一言感想を言わせていただくと大変面白かったです。 ただ一つ不安になったことがあります。それはwebアプリの脆弱性です。 キャンプ中にwebアプリの脆弱性を見つけてみようという講…
rake db:migrate と rake db:schema:load はどちらもテーブルを作成、変更、削除するときに使うコマンドだけど違いがよく分かっていなかったのでメモメモ。 rake db:migrate migrateファイル群を元にschema.rbを作成 schema.rbを元にSQLクエリを発行する rak…
rails s でサーバーを立ち上げている最中にPCがフリーズして再起動させるとデーモン化してしまい、終了させることができない。。。ということが多々あるのでメモ。 実行中のプロセスを表示 ps : 実行中のプロセスを表示 オプション 機能 a 自分以外のユーザ…