Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

webappとrubyに関するsh19910711のブックマーク (490)

  • 個人開発から公式機能へ: PlaywrightとRailsをつなげた3年の軌跡

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

    個人開発から公式機能へ: PlaywrightとRailsをつなげた3年の軌跡
    sh19910711
    sh19910711 2025/02/18
    "作り続けるには「工夫」が必要 / 自分の役に立つソフトウェアを作るインセンティブは大きい"
  • 技術的負債の借り換え on Ruby and Rails update

    https://kaigionrails.org/2023/talks/ginkouno/ Kaigi on Rails 2023登壇時の資料です。

    技術的負債の借り換え on Ruby and Rails update
    sh19910711
    sh19910711 2024/06/24
    "後からのUpdateには専用リソースが必要 / 借り換えの大事なポイント: 利子が少なくなること + 負債には高金利から低金利までいろいろある / 完済まで至らずとも工数をあまりかけずに利率の低い負債に乗り換えたい" 2023
  • ぼくがかんがえたさいきょうのRails API開発環境 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今やっているバイトでRails APIを作成しています。 APIを作成する際に、以下のような問題点が出てきました。 APIのdocumentがないとフロントエンドの開発者が開発しづらい documentを書くのにopenapiを採用するが、文法を覚えるのに一苦労するし、見づらいので書き忘れが生じる。 API responseの構造に開発者間で違いが出てしまう。 実際のAPIとdocumentの挙動が違うのに修正を忘れてしまう 結論 結論から言うと、これらの問題を解決するために以下のようにしました。 APIのPRを出す時にopenapi

    ぼくがかんがえたさいきょうのRails API開発環境 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "Spotlight Studioを使ってOpenAPIを書く / 文法を覚える必要がありませんし、タイポしてエラーが出ることもありません / APIのresponseの形にもルールがないと、フロントエンド側で取り扱いが難しく" 2020
  • GraphQL Ruby でクエリの複雑度をレスポンスヘッダで応答する - Qiita

    概要 GraphQLでクエリをしたときにそのクエリの複雑度がどの程度だったのかを把握したくなることがあります。 この問題を解決する手段として複雑度をHTTPレスポンスヘッダで応答できるようにしてみます。 このAPIデザインがどの程度一般的なのかはちゃんとわかっていないのですが、Contentful の GraphQL Content API にはレスポンスヘッダで複雑度を応答するデザインが含まれていましたので特別に異常なことではないでしょう。 コード 複雑度の計算をするアナライザとして GraphQL::Analysis::AST::QueryComplexity が標準で提供されていますので、これを継承してアナライザーを実装します。 OverseQueryComplexityComplexityAnalyzer をクラスを作り、#result メソッドをオーバーライドし 、ここではGra

    GraphQL Ruby でクエリの複雑度をレスポンスヘッダで応答する - Qiita
    sh19910711
    sh19910711 2024/06/18
    "GraphQLでクエリをしたときにそのクエリの複雑度がどの程度だったのかを把握したくなる / Contentful の GraphQL Content API にはレスポンスヘッダで複雑度を応答するデザインが含まれ" 2022
  • Railsで作ったシステムのER図を日本語で出してほしいと言われたときにやったこと - Qiita

    Ruby on Railsを使った開発をしていると「システムのER図が欲しい」といったお願いされることがあります。 Railsを使っているのであれば、rails-erd というRubyGemを使うことで簡単にER図を出力できます。 rails-erdで出力されるER図はEntityもAttributeも全て英語です。 提出先がエンジニアである場合や、普段からモデル名を使ったコミュニケーションをしている場合であればこのままでもなんとかなるかもしれません。 一方、相手がビジネスサイドのメンバーである場合や、普段はモデルを日語変換してコミュニケーションしている相手の場合はこのER図をそのまま出しても困惑されてしまいます。 そこで、今回はなんとかしてEntity・Attributeを日語化できないか検討しました。結論とそこに至った過程をメモしておきます。 結論 結論としては、rails-erd

    Railsで作ったシステムのER図を日本語で出してほしいと言われたときにやったこと - Qiita
    sh19910711
    sh19910711 2024/06/17
    "rails-erd というRubyGemを使うことで簡単にER図を出力できます / なんとかしてEntity・Attributeを日本語化できないか検討 / Railsで作られたアプリであれば大抵の場合、i18nで既に日本語定義を終えているはず"
  • Ruby 3.3.0 Rails 7.1.3 でYJITを有効にする - Qiita

    あるWebアプリケーションの Ruby on Rails のバージョンを7.1.3に上げました。 Ruby のバージョンを3.3.0に上げました。 ついでにYJITを有効にしました。 Enable YJIT · pubannotation/pubannotation@f9284cd 次のファイルを追加しました。 運用中に何かの理由で無効にしたくなったら、コメントアウトするかファイルごと削除します。 この方法は、最新のRuby on Railsに取り込まれているそのままです。 YJITとは Rubyを高速に実行する機能です。Ruby 3.3 から Ruby on Rails に適用するのも実用的になったそうです。次の記事で詳しく説明されています。 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp RubyJust-In-

    Ruby 3.3.0 Rails 7.1.3 でYJITを有効にする - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Ruby 3.3 から Ruby on Rails に適用するのも実用的になった / Rails では Ruby のオプションではなく、イニシャライザでYJITを有効にします / 手動で動作確認をした感じでは、キビキビ動くようになった気がします"
  • Rails のブラウザテストを Playwright で動かすようにしたらデバッグが簡単になって捗った - Qiita

    Rails, RSpec でブラウザテストというと System Spec, Feature Spec などが挙げられます。バックエンド、フロンテエンド両方を End-to-End でテストするには便利ですが、複雑さ故に、たまに落ちるテストになってしまったり、落ちたときのデバッグが大変という難しさがあります。 Qiita でも主要な機能 (エディタ、記事ページなど) をテストするのに使っているのですが、CI で時折よくわからない理由で落ち、 更に何故落ちたかの再現や調査が難しい というのが結構つらいポイントでした 今回 Qiita で RSpec で利用するブラウザ自動化ツールを Selenium から Playwright を使うように置き換えたら、かなりデバッグが行いやすくなりました 移行自体も Cabybara 用の Driver を使うことで、大きく書き換えることなく移行することが

    Rails のブラウザテストを Playwright で動かすようにしたらデバッグが簡単になって捗った - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Rails, RSpec でブラウザテストというと System Spec, Feature Spec などが挙げられ / Playwright ではテスト中のブラウザの操作などをファイルに記録し、 Trace Viewer からその記録を再生することが出来ます" 2023
  • ここがいいよねGraphQL - Qiita

    こんにちは。フリーランスで、主にRailsを使った開発の仕事をしている ymstshinichiro と申します。 直近約3年GraphQLの現場で仕事をしつつ、今年4月からはOpenAPIの現場でも並行で稼働しているのですが、両方を使ってみて個人的にGraphQLのここが良いなと思ったポイントをまとめてみました。 おことわり: 「これからGraphQLを使っていくべきか迷っている」という方へ向けた記事になったので、既にGraphQLをガンガン使いこなしている人には当たり前のことしか書いてないかもです あくまで僕の 好み・主観・経験 に基づく記事なので、その辺考慮の上で読んでいただけると助かります 記事中のサンプルコードはRailsで書かれています GraphQLを使うと自然にCQSに近づく 先日、YOUTRUSTさんが主催する実際のproductionコードを見ながら会話する勉強会 に参

    ここがいいよねGraphQL - Qiita
    sh19910711
    sh19910711 2024/06/16
    "GraphQLを使うと、単一のエンドポイント (/graphql) -> Query || Mutation -> それぞれの Resolver と辿ることで、CQSに近いUseCaseレベルでの分離 / モデルにロジックを書かず、更新とバリデーションは常にCommandから通す" 2023
  • cancancanのテストをRSpecで書く - Qiita

    cancancanを使った際、テストに学びがあったので投稿します。 前提:cancancanとは 権限による制御が簡単にできるgemです。 cancancan Rails|CanCanCanの使い方解説 ↓私も1つ記事を書きました。 cancancanでモデル名に紐づかない制御をする方法 cancancanのテスト requestスペックなどで特定の権限が各アクションを実行できるかどうかをテストする方法もあると思いますが、今回はcancancanが用意しているmatcherを使ってテストする方法を紹介します。 参考 https://github.com/CanCanCommunity/cancancan/blob/develop/docs/testing.md require "cancan/matchers" describe "User" do describe "abilities"

    cancancanのテストをRSpecで書く - Qiita
    sh19910711
    sh19910711 2024/06/16
    "cancancan: 権限による制御が簡単にできるgem / cancancanが用意しているmatcherを使ってテストする / cancan/matchersをrequireすることでbe_able_toというmatcherを使えるようになる" 2022
  • Everyday RailsでRspecについて学んだこと - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Everyday RailsでRspecについて学んだこと - Qiita
    sh19910711
    sh19910711 2024/06/16
    "コントローラのテストは最近では非推奨 + 代わりとしてリクエストスペックの使用が推奨 / 失敗のテストはまとめる: 通常、一つの検証が失敗するとそこで停止 + aggregate_failuresで囲むと一つ検証が失敗しても続けて検証" 2023
  • 大規模 Rails で役立つテクニック: コード品質の担保 - Qiita

    はじめに 先日、LTイベント「Qiita Night~Rails~」にて登壇させていただきました。 そこで、Railsで大規模Webアプリケーションを 開発するときに知っておきたいテクニックを Qiita の Rails を例にいくつか紹介しました。発表資料はこちらです。 アーカイブ動画もあります。 これまで大規模 Rails で役立つテクニックをそれぞれ記事として紹介しました。 この記事は、LT で話した残りの部分、「Qiita が Rails のコード品質を担保するためにやっていること」を紹介します。 Qiita が Rails のコード品質を担保するためにやっていること それぞれ簡単に紹介していきます! RuboCop Qiita の Rails では RuboCop を導入しています。RuboCopRuby のコードを静的解析し、よくない書き方があると指摘してくれます。 実行

    大規模 Rails で役立つテクニック: コード品質の担保 - Qiita
    sh19910711
    sh19910711 2024/06/16
    "テストが多いことによるデメリットとして Flaky Test が発生してしまったり、仕様が大きく変化するとテストの修正箇所が多くなってしまう / テストがあることで得られる恩恵を考えると、それを直すのも苦ではない"
  • RSpecによるRailsテスト入門を読んで - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 今回はRSpecによるRailsテスト入門というを読んだので、そちらの感想を書いていこうと思います! 今回読んだはこちらです。 良かったところ RailsRubyの書籍はたくさん存在していますが、自動テスト(RSpec)についての日語の書籍はなかなか見たことがありませんでした。よくRailsの書籍の最後の方に少しだけのっていたり、動画の中で少し触れていたりというものはありますが、ガッツリテストのって見かけないのでテストの学習をしたい方にはとても良いと思いました。 悪かったところ テストって結構簡単に書けると思われてい

    RSpecによるRailsテスト入門を読んで - Qiita
    sh19910711
    sh19910711 2024/06/16
    "期待する結果は能動形で明示的に記述 + exampleの結果がどうなるかを動詞を使って説明する / チェックする結果はexample1つにつき1個だけにする / 起きてほしいことと、起きてほしくないことをテストする"
  • FactoryBotでtraitを使おう - Qiita

    はじめに FactoryBotでテストデータを作成するに当たってtraitを押さえるのは必須かなと思います。 RSpecをこれから始める方向けにこの記事を書きます。 traitを使ってみる 一例としてTaskのファクトリを作成する場面を想定してtraitを使ってみます。 # spec/factories/tasks.rb FactoryBot.define do factory :task do title { 'Task' } status { :todo } from = Date.parse("2019/08/01") to = Date.parse("2019/12/31") deadline { Random.rand(from..to) } trait :done do status { :done } completion_date { Time.current.yester

    FactoryBotでtraitを使おう - Qiita
    sh19910711
    sh19910711 2024/06/16
    "FactoryBot: テストデータを作成するに当たってtraitを押さえるのは必須 / 一例としてTaskのファクトリを作成する場面を想定 / statusがdone、completion_dateがTime.current.yesterday のtaskが作成でき + traitを使えば簡潔に書ける" 2020
  • PlaywrightをRailsに導入して手動テスト工数を減らす - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 対象者 Cypressを使ったテストを書いたことがある人 RailsのRSpecを使ったテストを書いたことがある人 手動テスト辛い 私が担当している案件の中には、1年以上運用しているwebサービスがあります。 フロントエンド・バックエンド共に存在します。 課題は色々あるのですが、一番課題に感じているのがテストです。 そのサービスの前回の機能追加リリース時は、画面操作系のテストは手動で行いました。 そうなってしまった理由は大きく分けて以下3点です。 画面操作系の自動テストを書く時間がない 手動テストした方が早いという考えがある 今の画面操

    PlaywrightをRailsに導入して手動テスト工数を減らす - Qiita
    sh19910711
    sh19910711 2024/06/16
    "画面操作系の自動テストを書く時間がない + 画面操作後のDB値チェックができない + 手動テストした方が早いという考えがある / Playwright: Microsoftが開発しており、近年人気で出てきている"
  • Factorybotのtransient属性とは何か - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Factorybotのコード内に transient という定義を見かけました。 初めて見かけた属性だったので調べてみました。 transient属性とは? factory_bot gemのGETTING_STARTEDドキュメントには以下のように定義されていた。 Transient attributes are attributes only available within the factory definition, and not set on the object being built. This allows

    Factorybotのtransient属性とは何か - Qiita
    sh19910711
    sh19910711 2024/06/16
    "transient: モデルに定義された属性とは別にファクトリー内の一時的な変数のように利用できる属性 / ファクトリーでcreateするときに、フラグの値を渡すことで任意のデータを登録するようにできる"
  • Rails7(Hotwire)のSPA体験が快適すぎるので紹介する - Qiita

    Rails7を使った管理画面を業務で、2件ほど進めているのですが、 Rails7から搭載されたHotwireによるSPAっぽい開発が良すぎたので紹介します。 特に今回はRansack、Kaminariをつかった検索一覧画面の実装を紹介します。 これを例えば、Rails API + Vue.jsとかでやろうものなら、なかなか大変ですね。(っていうかめんどくないのでやらない) 事前準備 今回使うプロジェクトはこちら 情報 ruby2.7 Rails7.0 css: tailwind css 使用するデータ シンプルにべ物を管理するアプリを作りたいと思います # べ物をカテゴライズする種別データ create_table :kinds do |t| t.string :name t.timestamps end # べ物データ create_table :foods do |t| t.st

    Rails7(Hotwire)のSPA体験が快適すぎるので紹介する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Vue,Reactなどでやろうものなら、かなり大変で、コード量はサーバーサイド、フロントエンド共にそれなりに増え + ページネーションまでやるとかなり面倒 / turbo_frame_tagを適切に書くだけで、済むのは本当にすごい" 2022
  • Hotwireを使って正規表現チェッカーを作ろう - Qiita

    @z_ohnamiです。こんにちは。 railsの7から導入されたHotwireを使って、JavaScriptをできる限り書かずに正規表現チェッカーを作ってみました。 正規表現チェッカーといえば、Rublarというサイトが以前から存在していて私は日頃からお世話になっていたのですが、見た目はそちらを参考にして作りました。 名前は「RegExpress」にしました。 https://tools.bigwave.biz/regular_expressions 以下のように、正規表現のパターンとテスト用の文字列を入力した時点で結果が返ってきます。 Hotwireを使わずにrailsで作った場合はformのsubmitをしてもらわないと結果を返すことができません。 また、テキストエリアをポンポンと追加していますが、これもRailsのみで実現しています。 こうした動的かつ部分的な画面の変更自体は特に珍

    Hotwireを使って正規表現チェッカーを作ろう - Qiita
    sh19910711
    sh19910711 2024/06/16
    "JavaScriptをできる限り書かずに正規表現チェッカー / 動的かつ部分的な画面の変更自体は特に珍しいものではりませんが、 これをrailsのみで実現できている / Stimulusのルールに則り、子気味よく書ける" 2022
  • Hotwireで検索機能を作ってみる - Qiita

    Rails7 でデフォルトとなったHotwireを使って、検索機能を作ってみようと思います。 今回の完成形はこんな感じです。jsは使いません! Hotwireとは モダンなWebアプリケーションを構築するための代替アプローチです。 シングルページアプリケーション(以下SPA)を作る時に ReactVue が選択肢に上がると思いますが、それとは別のアプローチを取ります。 以下のような特徴があります。 Hotwire は複数のライブラリから構成されている HotwireHTML OVER THE WIREの略称で、以下の複数のライブラリをまとめた概念になります。 Turbo Hotwire の核となるライブラリ Turbolinks の後継者で3つの技術で構成されている Turbo Drive Turbo Frames Turbo Streams 今回は各々の技術の違いを意識しないで機

    Hotwireで検索機能を作ってみる - Qiita
    sh19910711
    sh19910711 2024/06/16
    "HotwireはHTML OVER THE WIREの略 / SPAを作るときには、バックエンドから JSON でデータを渡してフロントエンドで HTML を構築することが多い / Hotwire では JSON ではなく HTML を返します" 2022
  • 【Rails7で遊んでみた】画像つき投稿をSPAっぽく投稿する・ブロードキャストを使ってリアルタイム通信する - Qiita

    はじめに この記事は簡単なCRUDアプリをSPA(Single Page Application)っぽくしたり、ブロードキャストを使ってリアルタイム通信したりと、ちょっとRails7に触ってみての感想になります。 Railsの5系・6系を使ったことはあるけれど、7系はまだ触れていない人向けに、この記事を読んでRails7系に興味をもってもらえると嬉しいです。 ■ 開発環境 ・Ruby:3.1.2 ・Rails:7.0.4 イメージの共有 今回試したことをパッと見で分かりやすく伝わるようにと動画を用意しました。試してみた中で今日は以下の2つについて書いていきます。 画像つき投稿をSPAっぽく投稿する ブロードキャストを使ってリアルタイム通信する 【 画像つき投稿をSPAっぽく投稿する動画 】 【 ブロードキャストを使ってリアルタイム通信する動画 】 画像つき投稿をSPAっぽく投稿する これを

    【Rails7で遊んでみた】画像つき投稿をSPAっぽく投稿する・ブロードキャストを使ってリアルタイム通信する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "SPAっぽく1つのページ上で投稿が完結して尚且それを確認できるようにしたかった / JavaScriptを書き加えたり、複雑なコードを書いたりすることもなく、Rails7が用意してくれているレールの上に乗ってコードを書くだけ" 2022
  • Hotwireを理解するために選曲アプリを作ってみた - Qiita

    はじめに Ateam Finergy Inc.× Ateam CommerceTech Inc.× Ateam Wellness Inc. Advent Calendar 2022の21日目の記事です。 日はエイチームコマーステックの@hibiheionが担当します。 HotwireJavaScriptを使わずにSPA(Single Page Application)を作成することができる仕組みです。Rails 7では標準機能になっています。業務でRailsを使っている身としては無視できない技術だったので作ろうと考えていた個人開発のWebアプリに導入してみました。 選曲アプリの概要 カタログ情報を見ながら選曲するためのWebアプリです。ジャズをよく聴くのですが、その目線で見るとSpotify(に限らず私が知っている音楽ストリーミングサービス)が持っている情報が物足りないと感じていたこと

    Hotwireを理解するために選曲アプリを作ってみた - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Hotwire: JavaScriptを使わずにSPA(Single Page Application)を作成することができる仕組み / Turbo Frames: ページ内の特定の範囲のみを書き換える + HTMLにおけるiframeと似た仕組み" 2022