タグ

ブックマーク / techracho.bpsinc.jp (33)

  • Ruby 3.2のIRBに導入された新機能(翻訳)|TechRacho by BPS株式会社

    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: What’s new in Ruby 3.2’s IRB? 原文公開日: 2022/12/14 原著者: Stan Lo — ShopifyのRuby Developer Experience Team所属、ruby/debugのメンテナーの一員であり、先ごろIRBのメンテナーの一員にもなりました🎉 IRB 1.6がリリースされ、Ruby 3.2の組み込みIRBにはこのバージョンが使われる予定です(訳注: IRBの現時点の最新バージョンは1.6.2です)。 今回のリリースも含め、最近のIRBには@k0kubunと私が行った多くの拡張が含まれているので、記事でそれらをまとめてご紹介したいと思います。 新しいコマンド 最近のリリースでは以下のような多くの新しいコマンドをIRBに追加しました。 show_cmds show_doc

    Ruby 3.2のIRBに導入された新機能(翻訳)|TechRacho by BPS株式会社
  • 【保存版】Rubyスタイルガイド(日本語・解説付き)総もくじ|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 「Rubyスタイルガイドを読む」シリーズのバックナンバーを改定し、「Rubyスタイルガイド(解説付き)」と題して総もくじ記事といたしました。 スタイルガイドの元になっているbbatsov/ruby-style-guideは、同じ著者によるRuboCop gemで使われているスタイルです。 誤りや原文の追加・更新にお気づきの場合は、末尾のフォームまたは@techrachoでお知らせください。 1. ソースコードレイアウト (1)エンコード、クラス定義、スペースなど 通し番号 カテゴリ スタイル

    【保存版】Rubyスタイルガイド(日本語・解説付き)総もくじ|TechRacho by BPS株式会社
  • Rails 7とReactによるCRUDアプリ作成チュートリアル(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: How to Create a CRUD App with Rails and React · James Hibbard 原文公開日: 2022/04/01 原著者: James Hibbard語タイトルは内容に即したものにしました。 React logo is licensed under Creative Commons — Attribution 4.0 International — CC BY 4.0. ほとんどのWebアプリケーションでは、何らかの形式でデータを永続化する必要があります。これは、サーバーサイド言語で作業する場合はシンプルにやれるのが普通です。しかし、そこにフロントエンドJavaScriptフレームワークも加わってくると、少しややこしくなり始めます。 チュートリアルでは、Ruby on Rai

    Rails 7とReactによるCRUDアプリ作成チュートリアル(翻訳)|TechRacho by BPS株式会社
  • Ruby: injectとeach_with_objectをうまく使い分ける(翻訳)

    最近私がDevMemo.ioに追加した練習問題の中に、Enumerable#inject(エイリアスのreduceも使えます)やEnumberable#each_with_objectの練習問題がいくつかあり、以来どちらをどんなときに用いるべきかという簡単なガイドを書いてみたいと思っていました。 Enumerable#each_with_object (Ruby 3.0.0 リファレンスマニュアル) オブジェクトやコンテナへのミュータブルな操作にはeach_with_objectの方がよい 特にHashやArrayが対象の場合 作業の開始地点となる新しいオブジェクトを提供してそこでビルドする場合にも向いている 既存のオブジェクトを変更したい場合にはさほど便利ではない 例1 いくつかコード例を見てみることにしましょう。オブジェクトのコレクションがひとつあり、それらを用いて新しいHashをひと

    Ruby: injectとeach_with_objectをうまく使い分ける(翻訳)
  • Railsでブラウザテストを「正しく」行う方法(翻訳)|TechRacho by BPS株式会社

    Rubyでテストがこれほど盛んな理由のひとつはRailsの存在にあると私は信じています。Railsフレームワークはテストをできる限り楽しく書けるようにしてくれます。ほとんどの場合、網羅的なRailsテスティングガイドを参照すれば事足ります(少なくとも最初のうちは)。しかし物事に例外はつきものです。私たちの場合「システムテスト」がそれでした。 テストをページのマークアップから切り離す方法については、「Railsシステムテスト」シリーズの次の記事『System of a test II: Robust Rails browser testing with SitePrism』をご覧ください。 Railsアプリケーションでシステムテストを書いたりメンテしたりするのは、正直「楽しい」からほど遠い作業です。この問題に対処するために用いた私のアプローチは、今を去ること2013年に初めてCucumber

    Railsでブラウザテストを「正しく」行う方法(翻訳)|TechRacho by BPS株式会社
  • Ruby: 文字列マッチは正規表現より先に専用メソッドを使おう|TechRacho by BPS株式会社

    🔗 正規表現は文字列メソッドより「遅い」 新しい話ではなくて恐縮です。 Rubyに限らず、一般に正規表現は言語の文字列マッチメソッドより低速になります。 複雑なパターンを調べたい場合は正規表現を使うことになりますが、特に「開始文字列」「終了文字列」とのマッチを単純にチェックするだけなら、String#start_with?やString#end_with?でマッチを取る方が可読性の上でも速度面からもおすすめです。 記事ではtrue/falseを返す文字列マッチメソッドについてのみ言及していますが、文字列の取り出しや置換といった操作についても、専用メソッドの方が正規表現よりも一般に高速なので、「正規表現は次なる手段」と考えるようにしています。 🔗 文字列マッチ専用メソッド(単機能、高速) String#start_with? (Ruby リファレンスマニュアル) String#end_

    Ruby: 文字列マッチは正規表現より先に専用メソッドを使おう|TechRacho by BPS株式会社
  • Rails: present?より便利なActiveSupportのpresenceメソッド(翻訳)|TechRacho by BPS株式会社

    Rails: present?より便利なActiveSupportのpresenceメソッド(翻訳) Active SupportはRubyのコアライブラリにメソッドをたくさん追加するので、何かと非難が集中します。特に評判がよろしくないのは、RubyのObjectクラスへのパッチです。 RubyのあらゆるオブジェクトはObjectのサブクラスなので、Objectクラスにメソッドを追加すればコードのあらゆるオブジェクトにそのメソッドが追加されることになります。 Active Supportでの拡張に関するドキュメントでもう少し詳しく見てみましょう。 そうしたメソッドのひとつが#presenceです。これはお馴染みの#blank?(訳注: #empty?のエイリアス)や#present?に比べて馴染みの薄いメソッドです。 Rails API: presence -- Object Rails

    Rails: present?より便利なActiveSupportのpresenceメソッド(翻訳)|TechRacho by BPS株式会社
  • Rubyにおけるunlessとコードの読みやすさについて|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 状況や好みによって異なりますが、条件分岐が二重否定の形になると、一般にコードが読みにくくなる傾向があります。 unlessはうまく使えば読みやすいコードを書くときに役立ちますが、unlessが二重否定を形成するとかえって読みにくくなることもあります。三重四重は言わずもがなですね。 🔗 unlessと||の組み合わせは避けよう unlessの是非は好みが分かれることが多く、よく議論のネタになります。 少なくともunlessと||の組み合わせは苦情が出やすいので避けましょう。 unless obj1.blank? || obj2.blank? 言葉で書けば「obj1とobj2のどちらもblankでないなら」となります。コーディング前にこのような表現で考えるのはよくあることですが、それをそのままロジックに落としこむと上のようなコードになってしまいます。 b

    Rubyにおけるunlessとコードの読みやすさについて|TechRacho by BPS株式会社
  • [Rails]ビューで配列を改行するなら脆弱なjoinではなくsafe_joinにしよう|TechRacho by BPS株式会社

    こんにちは、hachi8833です。小ネタなのでQiitaに書こうかと思いましたが、こちらにしました。 Railsのビューテンプレートで配列の内容を改行brで区切って縦に一覧表示したいとき(普通ならulを使うところですがあえてbrにしています)、こんなコードを最初書いてみました。なおビューではhamlを使用しています。 #コントローラ @my_array = ['太郎', '次郎', '花子'] #ビュー =@my_array.join('<br/>').html_safe が、書いてみてすぐ、このコードが脆弱なため使えないことに気付きました。ここで@my_arrayはユーザーが入力した内容をDBから取り出したものなので、ユーザー入力に悪意のあるタグが含まれていたらXSS脆弱性が発現してアウトです。ビューでユーザー入力にhtml_safeをかけるのは禁じ手です。 何かスマートな方法はないか

    [Rails]ビューで配列を改行するなら脆弱なjoinではなくsafe_joinにしよう|TechRacho by BPS株式会社
  • Rails 4でcallback(before/after/around action)の実行順序おさらい|TechRacho by BPS株式会社

    baba 高校時代から趣味でプログラミングを始め,そのままずっとコードを書いています。2010年SFC卒業,在学中にBPS入社。ゲームなどの趣味プログラミング,Webシステム,スマホアプリ,超縦書エンジン(C++/Chromium),Webフロントエンド(TypeScript/React)などを主にやってきました。最近は自社製品(超シリーズ,くんシリーズ)の開発に関わるお仕事が中心です。管理業務もしますが,ゆとりプログラマーなので気楽にPCに向かっているのが好きです。 情報処理技術者試験(16区分 + 情報処理安全確保支援士試験),技術士(情報工学部門),中小企業診断士、Ruby Programmer Gold,AWS Certified Solutions Architect - Professional,日商簿記2級,漢検準1級。情報処理技術者試験 試験委員(2021-)。 babaの

    Rails 4でcallback(before/after/around action)の実行順序おさらい|TechRacho by BPS株式会社
  • Rubyスタイルガイドを読む: 文法(5)ブロック、proc|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 「Rubyスタイルガイドを読む」シリーズの文法編もいよいよ第5回目にさしかかりました。今回はブロックとProc関連です。 Rubyスタイルガイドを読む: 総もくじ 前回: Rubyスタイルガイドを読む: 文法(4)ループ 次回: Rubyスタイルガイドを読む: 文法(6)演算子など 文法(5) ブロック、procなど 参照: bbatsov/ruby-style-guide 2-32【統一】ブロックの各要素でメソッドを1つだけ呼び出す場合は、proc呼び出しのショートハンド「&:」を使う Use the proc invocation shorthand when the invoked method is the only operation of a block. Rubyを使い始めた頃はこの&:という書き方にちょっと戸惑いましたが、メソッドが1つ

    Rubyスタイルガイドを読む: 文法(5)ブロック、proc|TechRacho by BPS株式会社
  • Rails tips: RSpecでコード実行回数をスマートに数える(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Ruby on Rails / RSpec - test execution count to make your code better 原文公開日: 2018/02/24 著者: Paweł Dąbrowsk 参考: RSpec 3.12ドキュメント Class: RSpec::Mocks::MessageExpectation 2018/04/02: 初版公開 2023/09/21: 更新 RSpecでは、指定のメソッドが呼び出される回数をexpectで指定できます。その方法を説明する前に、呼び出し回数を知ることの重要性についてお話します。これはコードの振る舞いを制御するためのものです。説明のため、わざと誤ったコードを書いてみます。 class SomeClass def something @something = ser

    Rails tips: RSpecでコード実行回数をスマートに数える(翻訳)|TechRacho by BPS株式会社
  • [Rails] RSpecのモックとスタブの使い方|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 なかなかRSpecをうまく書けずに悩んでましたが、morimorihogeさんに教えてもらって、RSpecのモックとスタブの使い分け方が少し見えてきたのでメモします。 スタブの目的 そもそもスタブを使用する目的は、当にテストしたいところだけをテストできるように、筋に関係ない部分(バリデーションなど)をとにかく動くようにする、動かしたい場所まで辿り着くことです。例えて言うなら、ペンキを塗ったりエアブラシを使うときに、塗料が付いて欲しくない部分に貼るマスキングテープをイメージするとよいでしょう。テストしたい箇所以外はスタブで塞いでしまうわけです(以下の4行目)。 #vtypes_controller_spec describe "POST create" do it "create_from_text が呼ばれ,client_vtypes_path を

    [Rails] RSpecのモックとスタブの使い方|TechRacho by BPS株式会社
  • Rails tips: RSpecでシンプルなスタブを使う(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Ruby on Rails / Testing - creating tests with RSpec simple stubs 原文公開日: 2018/01/12 著者: Paweł Dąbrowsk アプリのチェックのためにテストを書くべきかどうかまだ迷っている方は、私の過去記事をご覧下さい。 specを書くときは、ほとんどの場合テストするクラスをスタブ(stub)で塞ぎたくなるでしょう。必要もないのにデータベースを叩きたくはないものです。スタブはこういうときに使います。スタブは、メソッド内のコードを実際には呼び出さずにメソッドを呼び出し、テストで欲しい値を返すようにするための指示です。 スタブは次のように動作します。 指定のクラス(またはクラスインスタンス)をallowで使えるようにする 指定のメソッドを受け取る 欲しい結果

    Rails tips: RSpecでシンプルなスタブを使う(翻訳)|TechRacho by BPS株式会社
  • Rubyスタイルガイドを読む: 例外処理|TechRacho by BPS株式会社

    こんにちは、hachi8833です。Rubyスタイルガイドを読むシリーズ、クラスとモジュール編の次は例外処理編をお送りします。記事中で推奨されている「contingency method」という手法をこのスタイルガイドで初めて知りましたが、今後の例外処理で積極的に検討したいと思います。 前回: Rubyスタイルガイドを読む: クラスとモジュール(3)クラスメソッド、スコープ、エイリアスなど 次回: Rubyスタイルガイドを読む: コレクション(Array、Hash、Setなど) Rubyスタイルガイド: 例外処理 参照: bbatsov/ruby-style-guide 6-01【統一】例外処理ではraiseを使う方がfailより望ましい Prefer raise over fail for exceptions. # 不可 fail SomeException, 'message' #

    Rubyスタイルガイドを読む: 例外処理|TechRacho by BPS株式会社
  • Linuxのサービス起動周りとDockerとの関連を理解する#3(社内勉強会)|TechRacho by BPS株式会社

    #1: OSとサービス、daemon、Linuxのinitソフトウェア #2: SysVInit、ハンズオン、SysVInitの問題 #3: Systemd、ハンズオン、Dockerでの問題と対応(記事) Systemdはどこが違うか SystemdはSysVInitやUpstartの問題を改善した最も新しいinitですが、SysVInitとの互換性はありません。 その代わり、SysVInitではstart / stopなどの処理やPIDファイルの扱いを手動で書く必要があったのが、良くある処理なら設定ファイルを記述するだけで書けるようになりました。 さらに複雑な管理も可能で、サービス同士の依存関係を定義したり、お互いに依存しないサービスを並列起動したりできます。 また、SysVInit系にはないモニタリング機能があるので、不慮の終了時といった条件を指定した起動を「システム起動時以外にも」

    Linuxのサービス起動周りとDockerとの関連を理解する#3(社内勉強会)|TechRacho by BPS株式会社
  • Rubyのメモリ割り当て方法とcopy-on-writeの限界(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Limits of Copy-on-write: How Ruby Allocates Memory 公開日: 2017/08/28 著者: Brandur サイト: https://brandur.org/ Unicorn(またはPumaやEinhorn)を実行していると、誰しもある奇妙な現象に気がつくでしょう。マスタからforkした(複数の)ワーカープロセスのメモリ使用量は開始当初は低いにもかかわらず、しばらくすると親と同じぐらいにまでメモリ量が増加します。大規模な番インストールだと各ワーカーのサイズが100MB以上まで増加することもあり、やがてメモリはサーバーでもっとも制約の厳しいリソースになってしまい、しかもCPUアイドル状態のままです。 現代的なOSの仮想メモリ管理システムは、まさにこの状況を防止するために設

    Rubyのメモリ割り当て方法とcopy-on-writeの限界(翻訳)|TechRacho by BPS株式会社
  • メモリを意識したRubyプログラミング(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Memory Conscious Programming in Ruby 原文公開日: 2017/10/31 著者: Thomas Leitner サイト: https://gettalong.org/index.html -- メモリ使用量を節約する方法と戦略 Rubyのプログラミングでメモリが大量に消費されるのは当たり前で、避けられないと考えている人がたくさんいますが、メモリ使用量を削減するさまざまな方法や戦略が利用できます。記事ではその中からいくつかをご紹介いたします。 Rubyの内部を常に意識する TrueClass、FalseClass、NilClass、Integer、Float、Symbol、String、Array、Hash、StructといったRubyの主要なビルトインクラスは、実行パフォーマンスやメモリ使用量

    メモリを意識したRubyプログラミング(翻訳)|TechRacho by BPS株式会社
  • Rubyの明示的/暗黙的な型変換についてのメモ(翻訳)

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Implicit vs explicit type conversions in Ruby (to_h/to_hash and others) 原文公開日: 2018/01/18 著者: zverok -- 名サイト「rubyreferences.github.io」の作者でもあります。 自分用にメモ。 Rubyには型強制(type coercion)メソッドがいくつもペアになっています。 to_iとto_int to_sとto_str to_aとto_ary to_hとto_hash 右と左はいったい何が違うのでしょうか?どういうときに使い、どんなときに実装するのでしょうか? 短い方は明示的な変換です。 (integerやstringやarrayといった)何らかの型に変換される可能性がある場合は、その型に明示的な変換を実装すべき

    Rubyの明示的/暗黙的な型変換についてのメモ(翻訳)
  • Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Managing db schema changes without downtime 原文公開日: 2018/03/22 著者: Sam Saffron -- Discourseの共同創業者であり、Stack Overflowでの開発経験もあります。 後半で紹介されているgemについては先週のRailsウォッチもどうぞ。 2018/04/09: 初版公開 2022/10/25: 細部を更新 Discourseのメンバーはいつも継続的開発の大ファンであり、コミットのたびにCIのテストスイートと対決しています。すべてのテスト(UI、単体、結合、スモーク)にパスすれば、自動的にコードの最新バージョンがhttps://meta.discourse.orgにデプロイされるようになっています。 私たちが継続的開発というパターンに沿って実践し

    Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社