Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに こんにちは。 プロダクト開発人材の副業転職プラットフォーム Offers を運営する株式会社 overflow のエンジニアばばです。 2023 年 1 月に中途入社としてジョインいたしました。 前職では不動産テックのエンジニアとして、データの各種エンジニアリング(クローリング、取り込み、集計処理)や機械学習ロジックのサービスへの組み込みを行っておりました。 overflow では、先日オープンβ版を発表いたしましたプロダクト開発支援組織の生産性最大化を支援するサービスである「Offers MGR」の開発を担当しております。 一見まったく別のプロダクトに見えますが、やっていることは案外共通点があり興味深く毎日開発をしています。 ただ、いまだジョインしたて業務に直結したことを書くネタはないので、Ruby on Rails(以下 Rails)のバッチ処理の概要をまとめてようとおもいま
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います
1:N な関係でN個の中で最新のレコードだけ欲しい、っていうケースで has_manyなrelationのfirstを取得していくとN+1になりまくってつらいので has_oneで取得できるようにしてeager_loadする方法を調査したメモ 環境 OS: Ubuntu 20.04 Ruby: 3.0.2 Rails: 6.1.4.1 RDB: Postgres 13 薄いプロジェクトを作る FROM ruby:3.0.2-alpine3.12 as ruby ## Development FROM ruby AS dev ENV BUNDLE_FORCE_RUBY_PLATFORM=1 \ CFLAGS="-Wno-cast-function-type" RUN apk update \ && apk add --no-cache \ gcc \ g++ \ libc-dev \ lin
Custom type-casting with ActiveRecord, Virtus and dry-types … and check why 5600+ Rails engineers read also this Custom type-casting with ActiveRecord, Virtus and dry-types In Drop this before validation and just use a setter method I showed you how to avoid a common pattern of using before_validation to fix the data. Instead I proposed you just overwrite the setter, call your custom logic there a
capistranoでbundle installする際、並列実行数を変更できます。 公式ドキュメントを読まないと見つけられなかったので、記録として残しておきます。 https://github.com/capistrano/bundler/blob/master/README.md リポジトリのREADMEより bundle_jobsを設定することで並列実行数を変更できます。 上記英文にも書いていますが、インスタンスのコア数以下に設定するように書いてあります。 気を付けないといけないのはデフォルトが4となっているため、コア数が少ないインスタンスにデプロイする際は思わぬ負荷がかかる可能性があります。 参考まででした!
gemをインストールする際に、書く場所に不安があったので調べて記事にしました。 groupとか分けられているっぽいけど、どこに書けばいいの・・? 結論 どこにでも書いていいわけでもなく、 開発、テスト、本番環境でインストールさせたいgemはgroup分けされているdo.. end内のそれぞれの場所に、全ての環境でgemをインストールさせたければそれ以外の場所に書く。 なぜこのようなグループ分けがされていたり、書く場所が分かれていたりするのか →環境によってインストールしたいgemがある場合があったり、gemを環境毎でグループ分けすることで管理しやすくする為。アプリケーション開発では環境を3つは分けるべき。 環境は下記にまとめてます。 それぞれの書く場所について
本記事は、2023年10月27、28日に開催された Kaigi on Rails 2023 に登壇させていただいた みてねプロダクト開発部 プロダクト開発Dグループ アプリ開発チーム栗原(@_ksss_)のセッションを、文字起こしをベースにブログ記事にまとめたものです。 セッションについてタイトルRailsの型ファイル自動生成における課題と解決 セッション概要「Railsアプリケーションで型をあつかいたい。」これはコミュニティーにおいて未だベストプラクティスが見つかっていない、模索中の課題です。 ある程度の主要な情報は生成方法が見つかっているでしょう。 しかしながらコーナーケースはどうでしょうか? Railsのプラグインgemを使っている場合は? 個々のプロダクトの事情に合わせたカスタマイズ方法は? 既存の資産を活かす方法は? 本セッションでは、これらの問題を解決する方法として、ortho
アプリケーション本体や自動テストを実行するのに必要なgemは、開発者全員が同じものをインストールするべきだ。しかし、pry-*などの開発支援系のgemについては、開発者全員が同じものを使う必要はないのではないか1。 Bundlerの作法に従うと、自分が使いたい開発支援系のgemとGemfileに登録されているgemが食い違っている場合には、Gemfileを編集してbundle installすることになる。この操作を複数のプロジェクトで繰り返すのは面倒だ。また、自分好みの設定は手元だけで使いたいこともあるだろう。GemfileやGemfile.lockをVCSで管理しているときには、誤って変更をコミットしないように気をつけなければならない。 ここでは主に、bundle exec --によるgemのバージョン固定の恩恵を受けながら、特定のgemだけはGemfileに登録せずに使う方法について
概要 rails accepts_nested_attributes_forでググると非推奨がサジェストされたり、これを使わずに別の方法を取っているような記事が複数ヒットします。 私自身も結構前にコードレビューで「非推奨だよ〜」みたいなコメントをもらったことがあり、その時はそのまま直さなかった気がするのですが、また実装する機会があったので今どういう状況なのか改めて調べてみました。 チーム開発での話なので、個人で使う使わないは自由にしてください。 いつ誰が非推奨と言ったか 非推奨なら普通deprecatedの警告が出ますよね? 非推奨のソースってどこなんでしょう。 ↓ここのようです。 dhh on 15 Nov 2016 I'd actually like to kill accepts_nested_attributes_for in due time. Don't think we sh
「Windows Subsystem for Linux上のUbuntu上のRuby」のメモです。やったのは下記。 Windows 10でWSL(Windows Subsystem for Linux)を有効化してUbuntuインストール Ubuntu上でrbenvインストール rbenvを使ってRubyインストール bundlerを使ってgem(ライブラリ)インストール ローカルにRuby環境を整えておこうと思ったのだけど、これまでよく使っていたPerlではWindows固有の問題で手間取ることがあったので、「Windows版Ruby」「Windows Subsystem for Linux上のUbuntu上のRuby」の両方を用意することにしました。これは後者の作業メモということになります。 Windows 10上にUbuntuを導入 「【WSL入門】第1回 Windows 10標準L
新規でRailsプロジェクトを始める時の個人的な環境構築についてまとめる。前提とする条件等は下記。 規模: ~中規模 開発者数: 個人 利用シーン: PoC作成・スタートアップ立ち上げ・並の業務アプリ開発等 基本戦略 利用シーン的に「思い立ったらすぐアプリの開発ができる」という感じの運用がしたい。極力セットアップで悩みたくないから必要なミドルウェアなどは全部Dockerでインストールできるようにして立ち上げれば終わり、の環境を作る。その環境の中で色々とコマンドを叩いたり、rails newやrails gなどでRailsアプリを作成していく。 この辺のRailsの初期セットアップの手間を出来るだけ省きたいのでtemplateとなるリポジトリを作成し、そこからcloneしてくるだけでOKにする。 フロントエンドはReactなどを使わずをRails標準のerbとHotwireを軸に開発する。開
今回の記事では、そんな Timecop と ActiveSupport::Testing::TimeHelpers にはどんな違いがあるのか、これをもう少し掘り下げて比較してみようと思います。 時間を止める/任意の日時に移動する Timecop では「任意の日時に移動しつつ、時間は止めない」ことができますが、 ActiveSupport::Testing::TimeHelpers では「移動すると同時に時間を止める」ことしかできません。 ## Timecop Timecop.freeze do # 現在時刻で時間を止める end Timecop.travel(time_or_date) do # time_or_date に渡された時間に移動するが、時間は止まらない end Timecop.freeze(time_or_date) do # time_or_date に渡された時間に移動し
YARD Type Parser Here is an experimental version of a parser that converts YARD's formal type syntax into plain old English. This is a good way to test if your type declaration means what you think it does: You can find the code on Github at http://github.com/lsegal/yard-types-parser. Try Some Examples Click the examples to run them. The syntax used in the examples below is not official YARD type
$ rails generate model 名前 [カラム名:型[:index]..] [オプション]
sessionに保存されたHashの挙動がストア前後で変わる。 session[:test_data] = {hoge: ‘fizz’, fuga: ‘buzz’ } としたとき、session[:test_data]の中身は {:hoge =>’fizz’, :fuga => ‘buzz’} となる。 しかしこれが別のアクションで使用するとき、つまり一度ストアされると、 {‘hoge’ =>’fizz’, ‘fuga’ => ‘buzz’} このように、keyがシンボルから文字列に変わっている。 これ、stackoverflowにも質問がありました。 session - Ruby on Rails sneakily changing nested hash keys from symbols to strings - Stack Overflow 回答 Sessions, if you'
ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Support コア拡張の章です。 railsguides.jp deep_dup リンクはこちら dupでは、コピーした配列の中身がgsub!などで変化する場合、コピー元の配列の中身まで影響しますが、deep_dupでは影響を受けないようにできます。 このあたりは意図せぬバグを混入させてしまわないよう、きちんと理解しておく必要があるなと思いました。 try リンクはこちら &.とtryは似ていますが、存在しないメソッドを指定した際に、前者はNoMethodErrorを返し、後者はnilを返します。 &.とtry!は挙動自体は同じようです。 ただし、try!は&.と比べる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く