タグ

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

  • サンプルコードでわかる!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
    fuyu77
    fuyu77 2023/12/24
  • 【新人プログラマ応援】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
    fuyu77
    fuyu77 2023/04/12
  • 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
  • PostgreSQLのプライマリーキーはSERIALとUUIDのどっちが速いのか実験してみた - Qiita

    注意 この記事の実験は実際の運用を正確に反映していない恐れがあります(コメント欄の @hmatsu47 さんの投稿を参照)。 実務のアプリケーションでは異なる結果になる可能性もあるので、記事の内容はあまり鵜呑みにせず参考程度に留めておいてください。 ※「実務に近い環境で実験してみた」という投稿もお待ちしています! はじめに データベース(この記事ではPostgreSQLを対象とします)の主キーは1,2,3のような連番の整数値を主キーにするSERIALと、"00009236-b73c-4338-8ebd-e1f6c4f4fdd8"のようなランダムな文字列を主キーにするUUIDがあります。 それぞれメリットとデメリットがありますが、パフォーマンスについてはどうでしょうか?なんとなくSERIALの方がシンプルなぶん、速そうなイメージがありますが、実際はどうなのか調べてみました。 実行環境 Ma

    PostgreSQLのプライマリーキーはSERIALとUUIDのどっちが速いのか実験してみた - Qiita
    fuyu77
    fuyu77 2023/02/08
  • ActiveRecord serialize / store の甘い誘惑を断ち切ろう - Qiita

    はじめに みなさん、ActiveRecordの serialize や store は好きですか? 僕は 嫌い です。 serialize や store は原則として使わない方がみんな幸せになれると思っています。 なのでみなさんも serialize や store は使わないようにしてください。 以上! ・・・で終わったら意味がわからないと思うので、この件についてなぜダメなのかをちょっと詳しく掘り下げてみます。 そもそも serialize / store とは? serialize や store は ActiveRecord の機能の一つです。 text型のカラムに配列やハッシュなど、好きな形式のデータを放り込めます。 テーブルやカラムを追加しなくても自由にデータが保存できる 魔法のような機能 (注:皮肉)です。 サンプルコードを使ってこの機能を確認してみましょう。 以下の例では

    ActiveRecord serialize / store の甘い誘惑を断ち切ろう - Qiita
    fuyu77
    fuyu77 2022/07/21
  • 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
    fuyu77
    fuyu77 2022/03/11
  • Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita

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

    Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita
    fuyu77
    fuyu77 2021/08/26
  • ネイキッドドメイン+HTTPSで運用するRailsアプリを5.1にアップグレードしたら、サブドメインも強制的にHTTPSになってしまった話 - Qiita

    ネイキッドドメイン+HTTPSで運用するRailsアプリを5.1にアップグレードしたら、サブドメインも強制的にHTTPSになってしまった話RailsSSLHTTPS 問題:実際に起きた怖い話 長いタイトルですいません。この問題はちょっとわかりづらいので、まず実例からお話しします。 僕のはクープバゲットというパン屋をやっていて、僕はそのWebサイト(メインサイト)を管理しています。 このWebサイトはRailsで構築しています。 このほかに、ブログサイトがあります。 ブログサイトの実体はTumblrですが、独自ドメインを充てています。 この時点で押さえておくポイントは以下の2点です。 メインサイトはネイキッドドメインで、ブログサイトはサブドメインで運用している メインサイトはHTTPSで、ブログサイトはHTTPである 今朝、メインサイトのRailsのバージョンを5.0から5.1にアップグレ

    ネイキッドドメイン+HTTPSで運用するRailsアプリを5.1にアップグレードしたら、サブドメインも強制的にHTTPSになってしまった話 - Qiita
    fuyu77
    fuyu77 2021/02/01
  • self.classの形でクラスメソッドを呼び出すときの注意点 - Qiita

    class Product attr_reader :name, :price def initialize(name, price) @name = name @price = price end # 金額を整形するクラスメソッド def self.format_price(price) "#{price}円" end def to_s # self.class.クラスメソッド名の形でクラスメソッドを呼び出す formatted_price = self.class.format_price(price) "name: #{name}, price: #{formatted_price}" end end class Product # 省略 def self.format_price(price) "#{price}円" end def to_s # self.classが返すクラスに

    self.classの形でクラスメソッドを呼び出すときの注意点 - Qiita
    fuyu77
    fuyu77 2021/01/30
  • 【翻訳】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
    fuyu77
    fuyu77 2020/12/28
  • Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜 - Qiita

    Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜RubyrbsSteepTypeProf はじめに Ruby 3.0ではRubyのコードに型定義情報を提供するRBSという仕組みが導入されます。 この記事では簡単なサンプルプログラムを通して、RBSとその周辺ツールの使い方や役割を説明します。 なお、説明する内容はあくまで初歩的な内容です。予めご了承ください。 動作確認時の実行環境 記事の執筆時点ではまだRuby 3.0は正式にリリースされていません。 正式リリース時、または今後のバージョンアップによってこの記事の内容と実際の挙動が異なる可能性もあります。 記事の執筆時に使用した実行環境は以下のとおりです。 Ruby 3.0.0dev (2020-11-13T16:46:08Z master 782621054

    Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜 - Qiita
    fuyu77
    fuyu77 2020/12/28
  • 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita

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

    使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita
    fuyu77
    fuyu77 2020/03/09
  • 自分が書いたRubyプログラムをirb上で読み込む方法 - Qiita

    はじめに この記事は書籍「プロを目指す人のためのRuby入門」に掲載できなかったトピックを著者自らが紹介するアドベントカレンダーの4日目です。 文に出てくる章番号や項番号は書籍の中で使われている番号です。 今回は自分が書いたRubyプログラムをirb上で読み込む方法を説明します。 必要な前提知識 「プロを目指す人のためのRuby入門」の第5章まで読み終わっていること。 「プロを目指す人のためのRuby入門」では、各章に例題があり、その例題をMinitestを使ってテスト駆動開発(TDD)で実装しています。 たとえば以下は第5章の例題で作成するプログラムとテストコードです(問題やコードの説明はサンプルページのPDFを参照)。 # lib/convert_length.rb UNITS = { m: 1.0, ft: 3.28, in: 39.37 } def convert_length(

    自分が書いたRubyプログラムをirb上で読み込む方法 - Qiita
    fuyu77
    fuyu77 2019/12/28
  • 【初心者向け・動画付き】Railsで日時をフォーマットするときはstrftimeよりも、lメソッドを使おう - Qiita

    <% @users.each do |user| %> <tr> <td><%= user.name %></td> <!-- 作成日時を表示する --> <td><%= user.created_at %></td> <td><%= link_to 'Show', user %></td> <td><%= link_to 'Edit', edit_user_path(user) %></td> <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %>

    【初心者向け・動画付き】Railsで日時をフォーマットするときはstrftimeよりも、lメソッドを使おう - Qiita
    fuyu77
    fuyu77 2019/07/31
  • RSpecのletを使うのはどんなときか?(翻訳) - Qiita

    はじめに RSpecにはletという機能があります。 これを使うとインスタンス変数を次のように置き換えることができます。 # インスタンス変数を使う場合 before do @user = User.new(name: 'Taro', email: 'taro@example.com') end it 'is valid' do expect(@user).to be_valid end # letを使う場合 let(:user) { User.new(name: 'Taro', email: 'taro@example.com') } it 'is valid' do expect(user).to be_valid end RSpecを使い慣れている人であれば、おそらくletを使うことが多いと思いますが、初心者の人には違いやメリットがよくわからないと思います。 また、使い慣れている人で

    RSpecのletを使うのはどんなときか?(翻訳) - Qiita
    fuyu77
    fuyu77 2019/04/09
  • Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita

    はじめに 先日スタック・オーバーフローでこんな質問に回答しました。 webサーバー、アプリケーションサーバー、Rackといった仕様や概念と、WEBrick、Unicorn、Pumaといった実装の関係が頭の中で結びつきません 質問者の方はwebサーバー、アプリケーションサーバー、Rack、Unicorn、Pumaと言った用語や概念の理解がこんがらかっているように見えたので、このあたりをきれいに説明している記事を探していたところ、以下の記事を見つけました。 A web server vs. an app server - Justin Weiss スタック・オーバーフローでは記事の一部を抜粋して「ざっくり翻訳」したのですが、それだけで終わらせるのはもったいない気がしたので、Qiitaには全文を翻訳して載せておこうと思います。 これを読むと、あなたもwebサーバーとアプリケーションサーバーの違い

    Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita
    fuyu77
    fuyu77 2019/03/28
  • [初心者向け] Railsで関連するデータ(親子関係)を保存する方法あれこれ - Qiita

    はじめに: 関連(association)って何? 関連とはModel(データ)同士のつながりのことです。 単純な例で言うと、ブログの投稿(Post)とそれに対するコメント(Comment)は 関連 しています。 たとえば以下のような1件の投稿と2件のコメントを考えてみます。

    [初心者向け] Railsで関連するデータ(親子関係)を保存する方法あれこれ - Qiita
    fuyu77
    fuyu77 2019/03/26
  • Railsの正規表現でよく使われる \A \z って何?? - Qiita

    はじめに この記事では以下のような内容を説明します。 Railsの正規表現(入力値バリデーション)でよく使われる \A や \z とは何なのか \A や \z は ^ や $ とどう違うのか JavaScript のような他の言語でも同じように \A や \z を使えるのか 「なんかよくわからないけど、^ や $ を使うとRailsに怒られるから \A や \z を使ってる」という人は、ぜひこの記事を読んできちんと意味を理解しましょう! 前提となる知識 正規表現についての基的な説明はここではしません。 正規表現が全く分からない、という方は以下の記事を読んでおいてください。 初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita 初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」 - Qiita 初心者歓迎!手

    Railsの正規表現でよく使われる \A \z って何?? - Qiita
  • Rails 4で作るドラッグアンドドロップで表示順を変更できるサンプルアプリ(スクリーンキャスト付き) - Qiita

    はじめに データの並び順を自由自在に入れ替えたい、という要求があったとき、ドラッグアンドドロップで順番が変えられるとなかなか便利です。 そこで記事ではドラッグアンドドロップによる表示順変更機能をRails 4で実装する手順を説明します。 補足資料 理解しやすくするための補足資料をいろいろ用意してみました。 デモサイト Herokuにデモサイトを作ってみました。 元々のサンプルアプリケーションはCRUDができるようになっていますが、このデモサイトではデータの更新はできません。(変更できるのは順番のみ) ドラッグアンドドロップするとどうなるか、実際に動かしてみてください。 サンプルアプリケーションを作る過程を録画してみました。 フルスクラッチでrails newするところから始めています。 http://www.youtube.com/watch?v=YQ-6HkBhVyc&feature=

    Rails 4で作るドラッグアンドドロップで表示順を変更できるサンプルアプリ(スクリーンキャスト付き) - Qiita
    fuyu77
    fuyu77 2018/11/21
  • Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの? - Qiita

    はじめに:Springが起動するコマンドはいったいどれだ!? Rails 4.1からはアプリケーションpreloaderとしてSpringが標準で組みこまれています。 Springを使うとバックグラウンドでRailsサーバーが動いている状態になるので、rails g やrakeコマンドが素早く起動します。 一般に、Springを使う場合は bin/rails g や bin/rake -T のように、bin/ を付けるように言われていますが、これは必須なんでしょうか? bin/ を付けずに実行すると、何が起きるんでしょうか? というわけでちょっと調べてみました。 対象バージョン Rails 4.1または4.2 railsコマンドの場合:bin/ を付けなくても大丈夫! まず最初に、bin/rails c と rails c を実行して、Springのstatusがどう変わるか確認してみまし

    Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの? - Qiita
    fuyu77
    fuyu77 2018/11/18