現在、Ruby 製 worker を作成することを業務で行っているのですが、継続的にメモリ使用量が増加する現象に遭遇してました。 (グラフの値が下がったタイミングが数回ありますが、それぞれでデプロイが行われてリセットされただけ) ObjectSpace.allocation_sourcefile や ObjectSpace.allocation_sourceline を利用してどのファイルのどの行でメモリ確保が多くなるのか調べれるようにしました。 以下のようなコードを worker に追加しました。 require 'objspace' class MemoryProfiler INTERVAL = 5 * 60 DISPLAY_COUNT = 20 def self.start Thread.start do loop do memory_usages = {} ObjectSpace.
解決に少し手間取ったのでメモ 検索用キーワード: faraday array params without square brackets 問題点 Faradayでリクエストした時のパラメータがfoo_ids[]=1&foo_ids[]=2のようになってしまう (ちなみにこの[]を付加するのはRailsでは標準になっているが、Web全体の標準というわけでは無いらしい) foo_ids=1&foo_ids=2のようにしてリクエストしたい 解決方法 Faraday::FlatParamsEncoderを使う Faraday.new(:url => base_url) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.options.params_encoder = Faraday::FlatP
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Don't Use Floats and Use the Ruby Money Gem to Represent Currencies - Andy Croll 原文公開日: 2021/11/15 著者: Andy Croll 日本語タイトルは内容に即したものにしました。 アプリケーションで金額を管理しなければならなくなることはざらにあります。何の話かというと、Rubyコミュニティにある素晴らしいオープンソースのソリューションを使えば、自分で開発するよりもずっと良い結果を得られるのです。 以下のようにするのではなく 金額を表現するときにFloatやBigDecimalを使う。 # マイグレーション add_column :products, :price, :decimal class Product < Application
Rails(というかActiveRecord)に型を付けるのは大変だが、Railsが絡まないrubygemにはそんなに苦労なく型が書けるので、これからgemを書く時には型を書きたいという人向けに今のところオススメの設定を紹介します。 というか自分が忘れるのでまとめておきます。 現状とはsteep-1.3.1, rbs-2.8.4を指します。 rbsは既に3系が出ていますが、一般利用者が型検査に利用する場合はsteepを使うはずで、steepはまだrbsの3系に対応していません。また、rbs-3.0で多少変わっているところもあるので、割と寿命が短い話かもしれません。 設定例 とりあえず結論から。Steepfileとrbs_collection.yamlを修正します。 Steepfile: D = Steep::Diagnostic target :lib do signature "sig"
Railsプロジェクトでgemを変更しながら開発する場合、 Gemfileに:pathでローカルのgemを指定 gem 'mygem', :path => '../mygem' gemを変更したらgem側をプッシュ 本体のプロジェクトのGemfileのgemの指定をリモート向けに戻してbundle update mygem やっと本体のプロジェクトをコミット、プッシュ またGemfileに:pathでローカルのgemを指定 することになりますが、頻度が多いと面倒になります。 bundle local 以下のコマンドにより、Gemfileを変更する必要がなくなります。 $ bundle config local.mygem ../mygem ($ bundle config local.mygem /Users/user/path/to/mygem)
概要 VS Code Debug Visualizer という VS Code のエクステンションをご存知でしょうか。デバッグ中のオブジェクトを以下のようにビジュアライズしてくれるものです。 VS Code Debug Visualizer ではこれまで Ruby のサポートはされていませんでしたが、最新バージョン(本稿執筆時点ではバージョン2.4)より debug.gem を用いてのビジュアライズが可能になりました。 本稿ではそれらの実際の使い方についてお話ししていきます。 対象読者 本記事では VScode を用いた debug.gem の簡単な利用方法について理解していて、既にそれらのセットアップが完了している方を想定しています。 VScode を用いた debug.gem の使い方やセットアップ方法については以下のリンクなどをご覧ください。 事前準備 事前準備として VS Code
この記事はRuby Advent Calendar 2022の第20日の記事です。前日の記事は@ydahさんによる「RuboCopのバージョンを最新に保つ技術」でした。 2022年11月22日に、Ruby cgi gemのHTTPヘッダインジェクション脆弱性CVE-2021-33621が発表がされました。 CVE-2021-33621: HTTP response splitting in CGI RubyのCGIライブラリにHTTPレスポンス分割脆弱性があり、秘密情報が漏洩する - HackerOne CGI::Cookieクラスにおけるセキュリティ上好ましくない仕様および実装 - HackerOne 私はHackerOneを通じてこの脆弱性を報告しました。この記事では、当該脆弱性の概要と発見の経緯などについて報告します。 概要 脆弱性発見の経緯 影響を受けるアプリケーション 影響 対策
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: What It Took to Build a Rails Integration for Rodauth | Janko's Blog 原文公開日: 2022/10/12 原著者: Janko Marohnić 日本語タイトルは内容に即したものにしました。 参考: 週刊Railsウォッチ20221025 RodauthをRailsと統合するのに必要だったこと 以下のrodauth-rails READMEもどうぞ。 Rails: 認証gem ‘rodauth-rails’ README(翻訳) Rodauthが登場した当時の既存のソリューションは、Rails(DeviseやSorceryの場合)か少なくともActive Record(Authlogicの場合)が必要だったので、ついにRailsに縛られないフル機能の認証フレームワ
はじめに Ruby 3.1で標準ライブラリになった debug.gemとVSCodeを組み合わせると、VSCodeのデバッグ機能をRubyでの開発に使えるようになります。 この記事では、最近私がよく活用するDevContainerを使ったRails開発において debug.gem を使うにはどのようにすればいよのか? 試したことをご紹介します。 debug.gem debug.gem については開発された笹田さんの記事をご覧下さい。 vscode-rdbg vscode-rdbgはVSCodeのデバッグ機能からdebug.gemを利用するためのエクステンションです。 ソースコードの左をクリックしてブレークポイントを設定でき、pryのようにコード中に仕込む必要がないのでとても便利です。 Dev Container Dev ContainerはVSCodeの機能の1つで、任意のDockerコン
読みました。 Take My Money: Accepting Payments on the Web 作者:Rappin, NoelPragmatic BookshelfAmazon どんな本か 副題が "Accepting Payments on the Web" となっているように、決済 (payment) システムをもつ Web アプリケーションを作る方法について説明しています。『達人プログラマー』などでおなじみの The Pragmatic Bookshelf シリーズの本です。 チケット販売システムの開発を通して、次のような具体的な話題に触れています。基本的には Rails 5 を使ってロジックからビューまでを開発していきます*1。 決済システムの実装 ショッピングカート 外部決済サービスとの連携 サブスクリプション機能 エラーケースとその対策 管理画面の実装 返金など注文の操
自分は便利だから使いたいけど、他の人にまで強制するのはなんだなーって思うgemを開発時に使いたい時どうするかメモ 概要 環境変数BUNDLE_GEMFILEで使用するGemfileを設定できるので、個人用のGemfileを用意する 前提 direnv/direnvを使ってること やりかた Gemfile.localに個人的に使用したいgemを書く #Gemfile.local eval_gemfile "Gemfile" gem "pry" 環境変数BUNDLE_GEMFILEを設定 echo "export BUNDLE_GEMFILE=./Gemfile.local" >> .envrc Gemfile.localをglobal gitignoreに追加 リポジトリに入れないように cat <<EOS >> ~/.gitignore Gemfile.local Gemfile.loca
Comparing ancestry and closure_tree for your nested data structure Sun, Sep 13, 2015 When it comes to implementing ActiveRecord nesting, there are a few popular implementations. In this post I will look closer at how Ancestry and Closure tree work and what the pros and cons are. How ancestry works Ancestry works by adding one column (by default named “ancestry”) that replaces the parent_id. Instea
これはなに Rails で開発されているプロダクトで libv8 が使われており違いや浅く歴史について調べたので簡単にまとめました TL;DR therubyracer と libv8 と libv8-node すべて JavaScript Engine V8 を実行バイナリである 最初は therubyracer が開発されていたが、 実行環境の差分追従などが困難になり libv8 の開発を開始、その後再び困難になったことから libv8-node の開発が行われている therubyracer, libv8, libv8-node の何れかの利用が求められたら、現在は libv8-node を使うことが望ましい therubyracer について therubyracer は JavaScript Engine V8 実行を行う binary を提供している Gem です 2018 年
TestProf is a collection of different tools to analyze your test suite performance. Why does test suite performance matter? First of all, testing is a part of a developer's feedback loop (see @searls talk) and, secondly, it is a part of a deployment cycle. Simply speaking, slow tests waste your time making you less productive. TestProf toolbox aims to help you identify bottlenecks in your test sui
タイトルは釣りっぽいんですが Psych v4.0.0 で『 Psych.load が Psych.safe_load を使用するようになった』事で普段利用している YAML.load や YAML.load_file が今後非互換になってしまう、という話です。 この変更により今まで読み込むことができていた YAML ファイルが今後読み込みエラーになる可能性があります。 先にまとめだけ書いておくと Psych v4.0.0 で YAML.load が非互換になる なので既存の YAML データが読み込めずにエラーになる可能性がある もし急に YAML データが読み込めなくなったら Psych のバージョンを確認しよう 回避する場合は YAML.unsafe_load などが利用できる また、この記事の内容は記事を書いた当時の話なので今後変わっているかもしれないので注意してください。 NOT
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く