タグ

ブックマーク / qiita.com/jnchito (26)

  • RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita

    はじめに:これは何? 僕がコードレビューしていて、「ん?いやいや、こんな書き方しちゃダメだよ!」と思ったコード例をまとめた記事です。 この記事でフォーカスするのはRSpecのDSLを適切に構築してないケースです。 ネタが増えたらまた追記するので、気になる方はこの記事のストックをお願いします!(記事の更新時に通知欄でお知らせします) それでは以下が編です👇 トップレベルのdescribeを2つ以上作らない テストコードを読む際に、読み手は「当然ファイル全体が大きなひとつのdescribeブロックになっているはず」と信じ込んでいるので、予想に反するネスト構造になっていると脳内の予想と実際の実行結果が異なって混乱します。 以下のように大きなdescribeブロックで囲んで1ファイルにつきトップレベルのdescribeが1つだけになるようにしましょう。

    RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita
  • 【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方 - Qiita

    はじめに 自動テストを整備しておくと大量のテストを自動実行してくれるので大変便利です。 ですが、テストコードが増えてくると「パスするはずなのに、なぜかたまに失敗する」というテストが出てきます。 このような不安定なテストを「フレーキー(flaky)なテスト」と呼びます。 フレーキーなテストの問題点 フレーキーなテストは「たまに失敗するだけ」なので、何度かやり直せばパスします。 なので、GitHub ActionsのようなCIツール上でテストが落ちても、「あ、また落ちた。再実行したら直るかな(ポチッ)」という安易な解決策に走りがちです。 しかし、フレーキーなテストを放置するのはよくありません。 理由は以下の通りです。 当はバグのせいで失敗しているのに「きっとフレーキーなテストだからに違いない」と思い込んで、そのままリリースしてしまうから(いわゆる「狼少年」状態) 実務レベルの巨大なテストコー

    【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方 - Qiita
  • RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita

    Webdrivers::VersionError: Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html # ./spec/system/tasks_spec.rb:24:in `go_to_project' # ./spec/system/tasks_spec.rb:14:

    RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita
  • Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita

    Ruby on Rails Advent Calendar 2021の枠が空いていたので、あとから登録しました はじめに 個人的なプロジェクトになりますが、僕が翻訳しているRSpecの入門書「Everyday Rails - RSpecによるRailsテスト入門」を2022年前半にRails 7.0バージョンにアップデートしようと考えています。 そこでこのの中で使っているサンプルアプリケーションをRails 7.0でゼロから作り直してみました。フロントエンド周りを中心に結構考え方が変わっている部分があったので、「ここでハマった!」とか「こういうポイントを押さえておくといいかも」という点をあれこれ書いてみます。 なお、Rails 7.0版のサンプルアプリケーションはまだ公開できる状態ではないので、公開はもうしばらくお待ちください🙏 今回作成したサンプルアプリケーションはこちらで公開してい

    Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita
  • Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita

    はじめに Rails 7.0が2021年の暮れにリリースされて以降、Deviseは長らくRails 7.0(というか、Hotwire/Turbo)に完全対応していない状態が続いていました。ですが、ようやく2023年2月17日にRails 7.0に対応したDevise 4.9.0がリリースされました🎉 rails-ujsではなく、Hotwire/Turboを使っているRails 7.0にDeviseを組み込んでいる(もしくはこれから組み込もうとしている)人は、以下の手順に従ってDevise 4.9.0を導入してください。 備考 もともとこの記事は「開発中のDeviseをインストールしてRails 7.0 (Hotwire/Turbo)のテストに協力する」というタイトルで公開していましたが、Devise 4.9.0が正式リリースされたことに伴い、タイトルと文を修正しました。 前提条件 Ra

    Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita
  • 【この記事はもう古いので読まないこと!!】Turboを有効化したままRails 7.0でDeviseを使う方法 - Qiita

    この記事は古いです!! Devise 4.9.0が正式リリースされたため、この記事の内容はすでに古くなっています。 Devise 4.9の導入方法は以下の記事で説明しています。ですので、こちらを読むようにしてください。 Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita はじめに Rails 7.0がリリースされて1年以上経ちましたが、Railsのメジャーな認証ライブラリであるDeviseは未だにRails 7.0に部分的にしか対応していません(参考)。 そのため、Rails 7.0でrails newしたRailsアプリケーション(つまり、Turboが有効になっている状態)だと、Deviseを使おうと思っても意図しない挙動になります。 そこで、この記事ではTurboを有効化したままRails 7.0でDeviseを使う方法を

    【この記事はもう古いので読まないこと!!】Turboを有効化したままRails 7.0でDeviseを使う方法 - Qiita
  • 永久保存版!?伊藤さん式・Railsアプリのアップグレード手順 - Qiita

    はじめに Railsアプリケーションを長く運用していると避けて通れないのがRailsのバージョンアップです。 古いバージョンのRailsは順次サポートの対象から外れていく(=不具合修正やセキュリティ対応がされなくなる)ため、バージョンアップをせずに運用するわけにはいきません。 そこでこの記事では僕・伊藤淳一がRailsアプリのバージョンをアップグレード(アップデート)する手順を紹介します。 この手順はこれまで何度もRailsアプリケーションをアップグレードしてきた僕の知見が詰まった、いわば「秘伝のタレ」的なアップグレード手順です。 想定するRailsアプリケーション この記事で想定しているのは以下のようなRailsアプリケーションです。 開発者1人でもなんとか面倒が見れるレベルの規模(=アップグレードは1人で作業する想定) 趣味で作っているのではなく、外部のユーザーがいるRailsアプリ(

    永久保存版!?伊藤さん式・Railsアプリのアップグレード手順 - Qiita
  • 【翻訳】URI.escapeは非推奨メソッドです。あなたのクエリ文字列をパーセントエンコードするには - Qiita

    warning: URI.escape is obsolete warning: URI.encode is obsolete この警告の直し方を見ていきましょう! 歴史について少しだけ Ruby 2.7.0ではURI.escapeまたはエイリアスメソッドのURI.encodeを呼びだしたときに警告が出ます。これはあたかも新しく追加された警告のように見えますが、実際はなんと・・・10年以上も非推奨とされ続けていたのです!どうしても今までこの警告を目にしなかったんだろう?と不思議に思っている方へ。答えはこうです。これまではverboseモードでスクリプトを実行したときだけ表示されていました。そして、この仕様が最近変わりました。これがその理由です。 じゃあなんでURI.escapeは非推奨メソッドなの? 「URIをエスケープする」という概念は実はやっかいです。なぜならURIは多数の要素(pat

    【翻訳】URI.escapeは非推奨メソッドです。あなたのクエリ文字列をパーセントエンコードするには - Qiita
    yoshuki
    yoshuki 2020/01/27
  • 【翻訳】Bundler 3アップグレードガイド - Qiita

    はじめに Rubyのパッケージ管理ツールであるBundlerはバージョン 3で後方互換性が失われる様々な変更点が導入される予定になっています。 そして、バージョン 3への移行を容易にするため、バージョン 2.1ではバージョン 3で使えなくなる機能を使うと警告が出ます。 これらの内容については公式リポジトリのアップグレードガイドで詳細が説明されています。 この記事は上記のアップグレードガイドの日語訳です。 翻訳したアップグレードガイドの版について この記事で翻訳したのは2019年10月3日に更新された以下の版です。 (翻訳時点のBundlerの最新バージョンは2.1.4) 今後更新される可能性もあるため、必要に応じて最新の版を参照するようにしてください。 2020.1.15追記 2020年1月14日更新の版に追従しました。 この版における主な変更点は以下のとおりです。cf. rubygem

    【翻訳】Bundler 3アップグレードガイド - Qiita
  • 【動画付き】Railsチュートリアルの統合テスト(integration test)は、RSpecのリクエストスペックに置き換えるのがラクです - Qiita

    はじめに さきほど、こちらの記事を拝見しました。 RSpecのfeatureテストでsessionを扱う方法 - Qiita 詳しい内容はリンク先をチェックしていただきたいのですが、ざっくりまとめると、 RailsチュートリアルのテストをRSpecのフィーチャスペックに置き換えようとした Railsチュートリアルのテストではsession変数を操作するヘルパーメソッドを使っていたが、フィーチャスペックではその方法がわからなかった rack_session_accessというgemを使ったら、フィーチャスペックからsession変数を操作できた というお話です。 ただ、僕はこの記事を読んで「うーん、僕はフィーチャスペックの中でわざわざsession変数を操作することはしないなあ」と思いました。 というわけで、この記事では「じゃあどうするのがベストだったのか?」という点を議論してみたいと思いま

    【動画付き】Railsチュートリアルの統合テスト(integration test)は、RSpecのリクエストスペックに置き換えるのがラクです - Qiita
  • 【翻訳】ActiveRecordにおける、ネストしたトランザクションの落とし穴 - Qiita

    🙅‍♂️この記事の内容は実際のコードに適用しないでください!! (2022-10-5追記) この記事の文でトランザクションに joinable: false というオプションを付けることが推奨されていますが、 joinable: false は内部APIなので指定してはいけない、というのがRails開発チームの見解のようです。 https://github.com/rails/rails/issues/39912#issuecomment-665483779 https://github.com/rails/rails/issues/46182#issuecomment-1266550987 joinable: false を付けるとコミット実行前にafter_create_commitコールバックが呼ばれるなど(参考)、思いがけない別の問題を引き起こすことがあります。 というわけで、

    【翻訳】ActiveRecordにおける、ネストしたトランザクションの落とし穴 - Qiita
  • 使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita

    はじめに RSpecは難しい、よくわからない、といったコメントをときどき見かけます。 確かにちょっと独特な構文を持っていますし、機能も結構多いので「難しそう」と感じてしまう気持ちもわかります。 (構文については僕も最初見たときに「うげっ、なんか気持ちわるっ」と思った記憶がありますw) しかし、RSpecに限らずどんなフレームワークでも同じですが、慣れてしまえばスラスラ書けますし、実際僕自身は「RSpecって便利だな-」と思いながらテストコードを書いています。 そこでこの記事では、僕が考える「最低限ここだけを押さえていれば大丈夫!!」なRSpecの構文や、僕が普段よく使う便利な機能をまとめてみます。 具体的には以下のような構文や機能です。 describe / it / expect の役割 ネストした describe context の使い方 before の使い方 let / let!

    使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
  • 【初心者向け】テストコードの方針を考える(何をテストすべきか?どんなテストを書くべきか?) - Qiita

    はじめに 「テストコードを書きましょう」とはよく言われるし、テストコードが大事だってことも理解できるんだけど、何をテストしたらいいの?どんなテストを書いたらいいの?と迷っている初心者プログラマさんは意外と多いのではないでしょうか? そんな方たちに向けて、この記事では僕が普段意識しているテストコードの方針を紹介します。 おことわり 来であれば具体的なコード例も豊富に入れたいところなのですが、かなり時間がかかってしまうので、いったん文章メインで記事を公開します。 もしかすると、そのうちコード例も一緒に盛り込んだ「リッチバージョン」を公開するかもしれません。 この記事の前提条件 この記事ではあくまで、「今現在、筆者が仕事で書いているテストコードの方針」です。 そのため、状況が異なると適用しづらい方針も出てくるかもしれません。 筆者は以下のような現場でコードを書いています。 月額定額で、お客様と

    【初心者向け】テストコードの方針を考える(何をテストすべきか?どんなテストを書くべきか?) - Qiita
  • 脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定 - Qiita

    はじめに: 「素のVim」から「プラグイン付きのVim」へ Vimを使い始めた当初、僕は.vimrcの設定だけで実現できる機能に限定した方が「ポータブルなVimスキル」になる気がしていたので、プラグインは全く使わずに「素のVim」を使っていました。 しかし、Vimを使って実務でRailsを開発し始めるとそんなことも言ってられなくなりました。 やはり素のVimだけでは限界があります。 Vimを使って効率よくRailsを開発するためにはプラグインに頼らざるを得ません。 ネットの情報などを参考にしてあれこれプラグインを入れてみましたが、これは手放せないというプラグインもあれば、思ったほど使わなかったというプラグインもあります。 今回の記事では前者のような「これは手放せない!」と僕が考えているプラグインに限定して紹介していきます。 また、後半ではプラグインを使わない.vimrcの一般的な設定につい

    脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定 - Qiita
    yoshuki
    yoshuki 2018/01/06
  • サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 2 - Qiita

    はじめに Rubyは毎年12月25日にアップデートされます。 Ruby 2.5のpreview1がリリースされた際に新機能をまとめた記事を書いたのですが、2017年12月14日にリリースされたrc1ではさらに多くの新機能が導入されていました。 Ruby 2.5.0-rc1 リリース これをそのままpreview1の記事に追記すると、記事のボリュームがかなり大きくなるため、rc1で導入された新機能は今回別記事(Part 2)として公開することにします。 ちなみにPart 1の記事はこちらです。 サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 1 - Qiita 記事の情報源 記事は以下のNEWSページに掲載されている情報から、個人的に注目したい新機能(なおかつPart 1に載っていないもの)をピックアップしたものです。 NEWS(commit: 7361587)

    サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 2 - Qiita
    yoshuki
    yoshuki 2018/01/01
  • 【翻訳】"Factory Girl"が"Factory Bot"に変わった理由(と移行手順) - Qiita

    2017年10月に、Rubyのライブラリ(gem)である"Factory Girl"が"Factory Bot"に変わりました。 名前が変わった理由が以下のページに記載されていたので、翻訳してみます。 プロジェクト名の歴史 このライブラリはもともと2008年に"Factory Girl"という名前でリリースされました。 この名前を選んだ理由は書籍「デザインパターン」に載っていたファクトリメソッドパターンとオブジェクトの母(Object Mother)パターンに従っていたことと、ローリング・ストーンズに同じ名前の曲があったためです。 "Factory Girl"という名前はこのライブラリの存在を知った一部の開発者を混乱させました。また、不快で問題があるように感じる人々もいました。そのため、2017年10月に私たちはこのライブラリの名前を"Factory Bot"に変更しました。 (翻訳ここま

    【翻訳】"Factory Girl"が"Factory Bot"に変わった理由(と移行手順) - Qiita
  • rspec-rails 3.7の新機能!System Specを使ってみた - Qiita

    はじめに 先日、RSpec 3.7がリリースされました。 参考: RSpec 3.7 has been released! 上記ブログの中で「今回のリリースはRailsのSystem Testの統合機能をいち早く使ってもらうためのリリースだ」と書いてあります。 実際、ブログの中で触れられている新機能は「System Spec」機能の追加だけです。 というわけで、この記事はrspec-rails 3.7で導入されたSystem Specの紹介と使い方の説明をしていきます。 実行環境 この記事は以下のバージョンを対象にして書かれています。 rspec-rails 3.7.1 Rails 5.1.4 Ruby 2.4.2 selenium-webdriver 3.6.0 Capybara 2.15.4 Chrome 62 ChromeDriver 2.33 サンプルコード この記事で使用したコー

    rspec-rails 3.7の新機能!System Specを使ってみた - Qiita
  • 【翻訳】RSpecのリードメンテナだけど何か質問ある? - Qiita

    はじめに 先日、Redditでこんな記事が載っていました。 AMA: The authors of "Effective Testing with RSpec 3", Myron Marston and Ian Dees : ruby この記事は書籍「Effective Testing with RSpec 3」の筆者であるMyron Marston氏とIan Dees氏が、書籍に関する質問に何でも答えます、という企画です。 この2人のうち、Myron Marston氏はRSpecの開発者(リードメンテナ)です。 Q&Aを読んでいると、RSpecの開発者ならではの意見だなと思うところがたくさんあり、なかなか興味深い議論になっていました。 というわけで、この記事では先ほどのQ&Aから「これは日Rubyプログラマにも役立ちそう」と思ったやりとりをピックアップして翻訳してみます。 ピックアッ

    【翻訳】RSpecのリードメンテナだけど何か質問ある? - Qiita
  • サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 1 - Qiita

    はじめに Rubyは毎年12月25日にアップデートされます。 今年はまだpreview版がリリースされていませんが(2017年10月10日時点)、今年もそろそろリリースの日が近づいてきました。 Ruby 2.5については2017年10月10日にpreview1がリリースされました。 Ruby 2.5.0-preview1 Released そこでこの記事ではこの2.5.0-preview1を参考にして、おそらくこんな感じでリリースされるであろうRuby 2.5の新機能や変更点をまとめてみました。 2017.12.25追記: Part 2もあります! この記事を公開したあとにも多数新機能が追加されました。この記事に追記すると長くなってしまうので、Part 2として公開しています。こちらもあわせてご覧ください。 サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 2 - Q

    サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 1 - Qiita
    yoshuki
    yoshuki 2017/10/14
  • Rails 5.1の変更点まとめ - Qiita

    はじめに 去る2017年2月23日、Rails 5.1.0.beta1が公開されました。 Rails 5.1.0.beta1: Loving JavaScript, System Tests, Encrypted Secrets, and more - Riding Rails Rails 5.1ではマイナーバージョンアップと言えど、かなり大きな変更点が多数入っているようです。 そこで上記公式ブログの内容を僕なりにまとめてみます。 おことわり この記事は公式ブログやpull requestの内容を読んで、筆者が個人的にまとめたものです。 実際に動かして試したりはしていないので、おかしな内容や誤解している内容が含まれている可能性もあります。 もし、「これは明らかにおかしい!」という内容を見つけた場合は、コメントや編集リクエストで優しく指摘してやってください。 サンプルコードについて この記事

    Rails 5.1の変更点まとめ - Qiita