タグ

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

  • 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita

    はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第3回です。 今回はRSpecのモックを使ったテストについて説明します。 これまでモックを全く使ったことがない人でもわかるように丁寧に説明していくつもりです。 また、これまでの回と同様、個人的に使用頻度が低いと思っている内容についてはバッサリ説明を省きます。 ただし、第1回や第2回に比べるとテストコードが少し複雑になって、仕組みや動きを想像するのがちょっと難しいかもしれません。 ぱっと頭に入ってこない場合はじっくり文を読んだり、実際に自分で写経しながらコードを動かしたりするなどして、少し時間をかけながら理解するようにしてください。 今回は以下のような内容を説明します。 モックの基的な使い方 モックを使った検証 モックでわざとエラーを発生させ

    使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita
  • 【新人プログラマ応援】Railsにおける良いコントローラ、悪いコントローラについて - Qiita

    TL;DR(長いので最初にまとめ) scaffoldと全く同じ、もしくはscaffoldに限りなく近いコントローラが良いコントローラ fatコントローラは悪いコントローラ。その反対でskinnyなコントローラ(薄いコントローラとも言う)を目指す コントローラ内でtransactionやrescueを書かない(fatになるし、scaffoldからも乖離する) BlogsControllerならBlogクラスのインスタンスだけをインスタンス変数にセットする メールはコントローラで送信する(EメールはSMTPを通じて届けられるviewと考える) はじめに RailsはMVC(Model-View-Controller)アーキテクチャを採用しています。 しかし、ロジック自体はやろうと思えばモデルでもviewでもコントローラでも、どこでも書くことができます。 特に、プログラミング初心者の方はついつい

    【新人プログラマ応援】Railsにおける良いコントローラ、悪いコントローラについて - Qiita
  • サンプルコードでわかる!Ruby 3.3の主な新機能と変更点 - Qiita

    はじめに Rubyは毎年12月25日にアップデートされます。 Ruby 3.3は2023年12月25日に正式リリースされました。 この記事ではRuby 3.3で導入された変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。 ただし、すべての変更点を網羅しているわけではありません。個人的に「Railsアプリケーションの開発時に役立ちそうだな」と思った内容をピックアップしています。記事で紹介していない変更点も多数ありますので、以下のような情報源もぜひチェックしてみてください。 動作確認したRubyのバージョン 記事は以下の環境で実行した結果を記載しています。 フィードバックお待ちしています 文の説明内容に間違いや不十分な点があった場合はコメント欄から指摘 or 修正をお願いします🙏 それでは以下が編です! 言語仕様の変更→なし Ruby 3.3では言語

    サンプルコードでわかる!Ruby 3.3の主な新機能と変更点 - 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
  • config.load_defaultsとnew_framework_defaults_x_x.rbの関係を詳しく調べてみた - Qiita

    config.load_defaultsとnew_framework_defaults_x_x.rbの関係を詳しく調べてみたRubyRails TL; DR(はじめに結論) 以下はRails 5.1から5.2にアップグレードしたケースを想定しています。 必要に応じてバージョン番号を読み替えてください。 Rails 5.2アップグレード後にconfig.load_defaults 5.2と書くと、Rails 5.2のデフォルトの挙動になる 一部にRails 5.1の挙動に戻したい項目があれば、new_framework_defaults_5_2.rbの該当項目のコメントを外し、そのうえで設定値を論理反転させる(trueはfalseへ、falseはtrueへ修正する) Rails 5.1の挙動に戻す必要がなければ、new_framework_defaults_5_2.rbは削除しても構わない

    config.load_defaultsとnew_framework_defaults_x_x.rbの関係を詳しく調べてみた - Qiita
  • 変数名やブロック引数をアンダースコア1文字にするイディオム - Qiita

    はじめに この記事は書籍「プロを目指す人のためのRuby入門」に掲載できなかったトピックを著者自らが紹介するアドベントカレンダーの1日目です。 文に出てくる章番号や項番号は書籍の中で使われている番号です。 今回は変数名やブロックパラメーターをアンダースコア1文字にするイディオムを紹介します。 必要な前提知識 「プロを目指す人のためのRuby入門」の第4章まで読み終わっていること。

    変数名やブロック引数をアンダースコア1文字にするイディオム - Qiita
  • 【アンチパターン】全部nil(null)かもしれない症候群 - Qiita

    はじめに:Rubyの&.演算子やtryメソッドについて Rubyには&.という演算子があります。 この演算子を使うと、メソッドのレシーバがnil(他の言語でいうところのnull)であっても、メソッド呼び出し時にエラーが起きません。(nilが返る) # ユーザが見つかる場合 user = find_user('Alice') user&.name #=> "Alice" # ユーザが見つからない場合(userがnilの場合) user = find_user('Foo') user&.name #=> nil

    【アンチパターン】全部nil(null)かもしれない症候群 - Qiita
  • 永久保存版!?伊藤さん式・Railsアプリのアップグレード手順 - Qiita

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

    永久保存版!?伊藤さん式・Railsアプリのアップグレード手順 - Qiita
  • Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita

    はじめに Railsアプリケーションを格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて

    Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita
  • Ruby 2.5で発生する「プロを目指す人のためのRuby入門」との差異について - Qiita

    はじめに この記事は書籍「プロを目指す人のためのRuby入門」に掲載できなかったトピックを著者自らが紹介するアドベントカレンダーの25日目(最終日)です。 文に出てくる章番号や項番号は書籍の中で使われている番号です。 今回はRuby 2.5で発生する「プロを目指す人のためのRuby入門」との差異を紹介します。 必要な前提知識 「プロを目指す人のためのRuby入門」の第7章、第9章、第11章、第12章を読み終わっていること。 「プロを目指す人のためのRuby入門」(以下、書)はRuby 2.4系を対象にして執筆されています。書は紙のなので、簡単に内容をアップデートすることができません。しかし、何もしないとどんどん内容が古くなってしまい、「なんか今使っているRubyと動きが違う」ということになってしまいます。 そこで新しいRubyのバージョンがリリースされて、書の説明と異なる部分が出

    Ruby 2.5で発生する「プロを目指す人のためのRuby入門」との差異について - Qiita
  • 【翻訳】"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のリードメンテナだけど何か質問ある? - 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
    mikage014
    mikage014 2017/10/11
    まとめありがたい
  • RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita

    RubyRailsにおけるTime, Date, DateTime, TimeWithZoneの違いRubyRails 2021.2.11追記:DateTimeクラスは非推奨なクラスになりました DateTimeクラスは非推奨なクラスとなり、DateTimeクラスではなくTimeクラスを使うよう、公式にアナウンスされました。 参考1 But we consider use of DateTime should be discouraged. - matz (Yukihiro Matsumoto) https://bugs.ruby-lang.org/issues/15712#note-4 参考2 DateTime は deprecated とされているため、 Timeを使うことを推奨します。 https://docs.ruby-lang.org/ja/latest/class/DateT

    RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita
  • Railsの意外な落とし穴? before_xxx で false を返すと処理を停止するが、 nil を返すと続行する - Qiita

    Railsの意外な落とし穴? before_xxx で false を返すと処理を停止するが、 nil を返すと続行するRails はじめに、というか最初に結論 この記事では以下のようなRails(ActiveRecord)のコールバック仕様を説明します。 before_xxx が false を返した場合のみ保存処理が停止する before_xxx が nil を返した場合や、after_xxx が false を返した場合はそのまま保存される この仕様を知らなかった人は先に進みましょう。 知っていた人も興味があれば続きを読んでください。 動作確認したRailsバージョン Rails 4.2.4 Railsあるある問題のひとつ、「before_xxx の戻り値を間違える」 知っている人は知っている、そして知っている人でもたまにうっかり間違える、Railsのよくある落とし穴として befo

    Railsの意外な落とし穴? before_xxx で false を返すと処理を停止するが、 nil を返すと続行する - Qiita
  • WindowsにおけるRubyやRailsの環境構築方法をいろいろ調べてみた(2017年3月版) - Qiita

    はじめに 僕は普段MacRailsの開発をやっているのですが、ひょんなことからWindows環境でRubyの動作確認をする必要が出てきたため、Windows上でのRuby開発環境について調べ始めました。 調べていくと「RubyInstallerを使いましょう」という記事や書籍が比較的多かったです。 しかし、RubyInstallerは2017年3月7日現在、メンテナンスが停滞しており、最新版のRuby 2.4.0ではなく、Ruby 2.3.3で更新が止まっています。 そこで、RubyInstaller以外の環境構築方法はないだろうか、とさらにいろいろ調べていきました。 というわけで、この記事では僕が調べたWindows上でのRuby開発環境方法をいくつかリストアップしていきます。 おことわり この情報は2017年3月7日現在の情報です。 将来的にはまた状況が大きく変わる可能性もあります。

    WindowsにおけるRubyやRailsの環境構築方法をいろいろ調べてみた(2017年3月版) - Qiita
  • サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita

    はじめに 2016年9月にRuby 2.4のpreview2が、11月にpreview3が、12月11日にrc1がリリースされました(参考1、参考2、参考3)。 僕は早速インストールして新機能を試してみましたが、みなさんはいかがでしょうか? というわけで、この記事では僕が実際に動かして確認したRuby 2.4の変更点や新機能をサンプルコード付きでまとめます。 この記事は大きく分けて次のセクションに分かれています。 文法上の変更点 後方互換性が失われる変更点 パフォーマンス改善 オブジェクト全般の新機能 主に数値に関連する新機能 主に文字列・正規表現に関連する新機能 主に配列・ハッシュに関連する新機能 ディレクトリやファイルに関連する新機能 その他の標準ライブラリに関連する新機能 スレッドに関連する新機能 なお、Ruby 2.4は2016年12月25日にリリースされる予定です。 記事はrc

    サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita
  • テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~ - Qiita

    はじめに みなさん、DRY原則はご存知でしょうか? DRY = Don't repeat yourselfの略で「繰り返しを避けること」という意味ですよね。 良いコードを書くための重要かつ基的な原則なので、みなさんよくご存知だと思います。 ですが、DRY原則はテストコードを書く場合は必ずしも最善にはならない場合があります。 他の人が書いたテストコードを見ていると、テストコードにDRY原則を適用したために、かえって悪いコードになっているケースをときどき見かけます。 この記事ではなぜテストコードをDRYにすると良くないのか、ということを説明します。 追記:タイトルを変更しました @t_wada さんのコメントを受けて、タイトルを見直しました。 「テストコードはDRYを捨ててベタ書きする」 => 「テストコードの期待値はDRYを捨ててベタ書きする」 【注意】この記事は画一的なテストコードの書き

    テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~ - Qiita
  • Railsでモデルクラスの名前をネームスペースとして流用してはいけません(warning: toplevel constantが発生します) - Qiita

    2019.8.21追記:Ruby 2.5からはこの問題が発生しなくなりました Ruby 2.5からは定数探索のルールが変わったため、この記事で書いているような問題は発生しなくなりました。 参考:サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 1 - Qiita Ruby 2.5環境だと、この記事で使用したテストケースはどちらも正常に実行されます。 # Ruby 2.5環境 + Rails 5.2で全specを実行した場合 $ bundle exec rspec blogs_controller_spec.rb loaded BlogsController loaded staff/blogs_controller_spec.rb loaded Staff model loaded Staff::BlogsController loaded Randomized wi

    Railsでモデルクラスの名前をネームスペースとして流用してはいけません(warning: toplevel constantが発生します) - Qiita
    mikage014
    mikage014 2016/02/12
    モデルクラスとネームスペースの名前がぶつかると分かりづらいエラーになる
  • Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より) - Qiita

    【注意!】この記事はRails 5.0.0.beta1を対象にしています。最新のRails 5では仕様が変わっている可能性もあるので注意してください。 はじめに 先日、Rails 5のAction Cableを使ったシンプルなチャットアプリの作り方をDHH氏がYouTubeで公開していました。 Rails 5: Action Cable demo - YouTube 動画を見ながら僕もコードを写経してみたので、その内容をこちらで紹介してみます。 なお、ここで紹介するのはコードだけで、DHH氏の発言は完全に再現していません。 発言内容を確認したい人はオリジナルの動画をチェックしてみてください。 チャットアプリの完成形 今回は下のような非常にシンプルなチャットアプリを作成します。 ソースコード 今回作ったコードはGitHubにアップしています。 JunichiIto/campfire コードを

    Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より) - Qiita