Developers Summit 2025(2025.02.13-14) - 翔泳社イベント 1日目 13-E-9 あなたのプロダクトが見たい!個人開発リレーセッション で話したときの資料です。 https://event.shoeisha.jp/devsumi/20250213/session/5551

原著者の許諾を得て翻訳・公開いたします。 英語記事: Supercharge the One Person Framework with SQLite | Fractaled Mind 原文公開日: 2024/10/16 原著者: Stephen Margheim 日本語タイトルは内容に即したものにしました。 また、見出しを適宜加えています。 本記事は、Rails World 2024における私の発表を編集して記事化したものです。以下のYouTube動画でもご覧いただけます。 はじめに Railsは誕生したときから、アイデアを超音速で宇宙空間に打ち上げるロケットエンジンのような存在として名を馳せてきました。しかし少なくとも私にとって、自作のフル機能アプリケーションをデプロイして動かすにはロケット科学者になる必要がある気もしていました。 ロケットエンジンは時とともに大型化し、複雑化してきまし
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Find records missing an association with where.missing | Boring Rails: Skip the bullshit and ship fast 原文公開日: 2021/03/14 著者: Matt Swanson サイト: Boring Rails #missingはRails 6.1で追加された機能です。 参考: 週刊Railsウォッチ(20190513) 否定は一般には立証できませんが(訳注: 消極的事実の証明)、データベースに否定のクエリを投げることについてはどうでしょうか。クエリはデータを検索するために書くのが普通ですが、逆にデータが「存在しない」ことを検出するためにクエリを書くこともあります。 生SQLで言うなら、LEFT OUTER JOINとNULLチェッ
CTOの藤村です。つい最近まで STORES ブランドアプリ のチームでRailsを書いていました。 STORES ブランドアプリ のRailsリポジトリではdatabase_cleanerを(strategy = truncationで)使ってテスト中のデータベースをリセットしており、このことがテストコードの品質、速度などで重荷となっていました。 これを、テスト実行時にテストコード自体を書き換えて改善する仕組みを作り、先日無事Transactional Testへの移行が完了しました。ということで気分がとてもよいので、どうやったか共有させてください。 課題 STORES ブランドアプリのRailsのテストコードは速度に課題がありました。 テストデータを片付ける仕組みとして、 Railsエンジニアにはお馴染みのdatabase_cleanerというGemを使っていました。database_
先日行われたRails Developers Meetup 2019で、Clean Test Code Revisedというタイトルで発表しました。スライドはこちら。 動画も上がっているようなので興味のある方はどうぞ*1。 所感 ご存知のかたもいると思いますが、この発表は2017年5月に行われたRails Developers Meetup第一回目で発表した内容を更に一歩進めたものとなっています。 Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記 当時僕の頭の中にあった「こういうケースのときはこう書く。なぜならこうだから」というものを点で出したのが前回の発表で、それらを「脳に負荷をかけない」という線でつなげてまとめたのが今回の発表になります。 テストコードをレビューしたときに「これなんか読みづらいな…」と思って
この記事は、著者の許可を得て配信しています。 Do You Really Need Redis? How to Get Away with Just PostgreSQL Webサービスやアプリケーションに対応するために、何度も見てきた試行錯誤のアーキテクチャがあります。 データストレージとしてのPostgreSQL バックグラウンドのジョブキュー(および限定的なアトミック操作)を調整するためのRedis Redisは素晴らしいものですが、このスタックの最も一般的な使用例を実はPostgreSQLだけで実現できると言ったらどうでしょう? 使用例1:ジョブのキューイング 私が見てきたRedisの最も一般的な使い方は、Webサービスからバックグラウンド・ワーカーのプールへのジョブのディスパッチ調整でしょう。そのコンセプトは、(おそらく入力データを使って)実行されるべきバックグラウンド・ジョブの
Rails何もわからない民。RDBのデータ件数が猛烈に多く、Elasticsearchへの全件登録にXX時間かかるので、どうにかしようとしている。以下は妄想メモ。そのうち検証する。 現状から書き換えてみる これがテーブル全件登録。現状これでXX時間かかっている。 __elasticsearch__ は elasticsearch-rails というgemがモデルクラスに生やしてるオブジェクト。ここに import とか index_document などのメソッドが生えている。 import の実装は https://github.com/elastic/elasticsearch-rails/blob/master/elasticsearch-model/lib/elasticsearch/model/importing.rb#L140-L185 Hoge.__elasticsearch
(自分はRailsを書くことが多く、フロントエンドの経験は乏しいです。見方にだいぶ偏りがあると思いますので、そのあたり差し引いてお読みいただければと思います〜🙇♂️) こんにちは〜。Hotwireを仕事で使う機会があったので、実際に使ってみて感じた、良かった点、辛かった点、向いているケース、向いていないケースを共有します〜。 Hotwireとは? Turbo Driveとは? Turbo Framesとは? Turbo Streamsとは? Stimulusとは? Hotwireのデモ 良かった点 サーバーサイドに集中できる Railsの資産をフルに活かせる 後付けで段階的にSPA風の挙動を追加できる 学習コストが低い 開発コストが低い WebSocketは必須ではない 辛かった点・辛くなりそうな点 DOM更新時にレスポンスを待たないといけない SPAのユーザー体験とはだいぶ違う He
migration の中で model を触ったら必ず reset_column_information する 治安の悪い Rails アプリケーションでは、migrate 中に model の不整合で怒られることがあります。 class AddAgeToUsers < ActiveRecord::Migration[5.1] def up p User.first # 1 add_column :users, :age, :integer # 2 User.create(name: "Taro", age: 16) # 3 end end 1 で User model を触ってしまっているので add_column 前の DB の状態がキャッシュされて 2 で追加した add_column は別にキャッシュをリセットしないので 3 で ActiveModel::UnknownAttrib
rails new してから steep check が通るまでにやってみた作業をまとめておく。 GitHub コードはGitHubで公開しているので、詳細な手順を知りたい方は参照してください。 github.com 手順 gemを入れる steepとrbs_railsをGemfileに追加する。 # Gemfile group :development do gem 'rbs_rails', require: false gem 'steep', require: false end bundle install を実行する。 $ bundle install rbs_rails のREADMEの手順に従って lib/tasks/rbs.rake を作成する。 # lib/tasks/rbs.rake require 'rbs_rails/rake_task' RbsRails::Rak
やりたいこと 認証画面で「Azure ADで認証」を選択できるようにします。 通常のID/PASS認証を実装 まずはdeviseを使って普通にID/PASS認証を実装します。 既にご存知の方は読み飛ばしても大丈夫です。 rails new まずはrains newします。 DBはPostgreSQLとしていますが、他のDBでも問題ありません。 # Railsアプリを作成 $ rails new devise_omniauth_azure_ad -d postgresql $ cd devise_omniauth_azure_ad # DB接続を確認 $ vi config/database.yml # 適宜編集 $ bin/rails db:create rails db:migrate Deviseの導入 以下コマンドを実行してdeviseをインストールします。 $ bundle add
Ruby on Railsの生みの親、Basecamp(旧 37signals)のファウンダーでCTOのDavid Heinemeier Hanssonさんによる寄稿記事です。著書に、ニューヨーク・タイムズの�ベストセラー「REWORK」と「REMOTE」。「ル・マン24時間レース」のクラス優勝者。Davidさんの活動は、ご本人のWebサイト、またTwitter(@DHH)でフォローできます。本記事は、Mediumに投稿された記事をDavidさんから許可を得て翻訳したものです。元の英語記事もどうぞ。 *記事は、「Web Summit 2015」のDavidさんの講演内容を起こしたものです。 #WEBSUMMIT2015 12年前、僕はBasecampというスタートアップを共同創業した。月額制のシンプルなコラボレーションツールで、チーム間のプロジェクト進行を後押ししてくれる。 それがあること
OAuth2やOpenID Connectの理解を深めようと思い、 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践(Justin Richer Antonio Sanso 須田 智之 Authlete, Inc.)|翔泳社の本 Auth屋さんの書籍 【電子版】雰囲気でOAuth2.0を使っているエンジニアがOAuth2.0を整理して、手を動かしながら学べる本 - Auth屋 - BOOTH 【電子版】OAuth、OAuth認証、OpenID Connectの違いを整理して理解できる本 - Auth屋 - BOOTH 【電子版】OAuth・OIDCへの攻撃と対策を整理して理解できる本(リダイレクトへの攻撃編 - Auth屋 - BOOTH OAuth認証とは何か?なぜダメなのか - 2020冬 - r-weblife OAuth & OpenID Connect 関連仕
こんにちは、サーバーサイドエンジニアの竹若です。今回GraphQLにおけるエラーハンドリングを調査、Ruby on Railsとgraphql-rubyを使って実装する機会があったので、そこで得られた知見を共有させていただきたいと思います。(なお今回の実装はプロダクション環境には出ていません) GraphQLの仕様とプラクティス それではまず初めに、GraphQLが仕様に定めているレスポンスの返し方を見ていきましょう。 レスポンスのフォーマットに関するプラクティス GraphQLのプラクティスの1つに、レスポンスのhttp statusを200で統一し、レスポンスのerrorsキーにエラーの詳細な情報を持たせるというものがあります。 なぜならGraphQLではリクエストに複数のクエリを含めることができるからです。 https://www.graph.cool/docs/faq/api-ee
Rails 6.1 の新機能 rails_storage_proxy_url を使うと、ActiveStorage で添付したファイルへのリンクが署名付きURLへのリダイレクトにならず、RailsアプリのURLのままファイルをダウンロードできるようになります。 どういうこと? ActiveStorageはこれまで、S3をバックエンドとして使った場合、S3への署名付きURL=タイムスタンプなどが付与されたURLへのリダイレクトを行ってきました。 しかしこれは扱いづらいことも少なくなく、悩みの種の1つでした。 Rails 6.1 でこの問題に対する回答が(ようやく)公式に用意されたことになります。 例 url_for(user.photo) でActiveStorageへのURLを生成 たとえば http://localhost:3000/rails/active_storage/blobs/
今回は、qnyp GraphQL APIを設計・実装する過程で役立ったものや参考になった情報を実際のコードを交えて紹介しようと思います(qnypはアニメの感想を記録するサービスです)。API設計の詳細や具体的な実装手順までは踏み込みません。 API実装はRailsアプリ内で行っていますので、紹介するライブラリなどは主にRuby向けのものとなります。 GraphQLの概要をつかむ The Anatomy of a GraphQL Query このエントリは、GraphQLを使う際に知っておく必要のあるOperationやVariables、Fragments、Directiveといった概念を手っ取り早く俯瞰する際に役立ちました。 GraphQL APIの実装を進めていくと、最終的には graphql.org にある Introduction to GraphQL を隅々まで読むことになるとは
ネイト・ベルコペック (@nateberkopec) SpeedShop(詳細),Railsパフォーマンス・コンサルタンシー 要約:Rails開発者の多くが、ActiveRecordがSQLクエリを実際に実行する条件を理解していません。よくある3つのケースを見てみましょう:countメソッドの誤使用と、サブセットをセレクトするためのwhereの使用、そしてpresent?です。 断言しましょう。あなたはこの3つのメソッドを使い過ぎていて、無駄なQueryとN+1を発生させているでしょう。 (字幕:なんて奇妙な謎だ、バットマン!) "いつActiveRecordがクエリを実行するかって?知るか!" ActiveRecordは素晴らしいです。本当に。しかし抽象化されているので、データ・ベース上で実行されている実際のSQLクエリに無頓着になりがちです。ActiveRecordがどのように動作す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く