タグ

Rubyに関するlulichnのブックマーク (7)

  • Ruby の引数の種類をまとめてみた - Secret Garden(Instrumental)

    普段何気なく書いている Ruby なんですが実はメソッドの引数の種類って思ったよりも多くてまとめてみました。 実際自分も Ruby の AST をいじっている時に引数の種類が多すぎて混乱したのでまとめておくと色々と役に立つかなーと。 と、軽い気持ちで書いてみたんですが結構なボリュームになってしまいまsた。 引数の名称とかは調べつつ独断と偏見で書いてあるのでそこら辺はご注意ください。 諸注意 この記事は基的に Ruby 3.1 を元にして動作確認しています 下にも書いてあるんですが 仮引数(parameter) についての解説で 実引数(argument) の話はあんまりでてきません 引数の名称は日語に寄せていますが Ruby 界隈だと英語で書いてある事が多いかも 調べる時は英語の方で調べてもらったほうが情報はでてくると思う 引数という言葉の意味とは 『引数』という言葉には厳密に言うと『

    Ruby の引数の種類をまとめてみた - Secret Garden(Instrumental)
    lulichn
    lulichn 2024/03/11
  • RubyのThreadとThread::Queueを活用したAPI処理の高速化方法 - Qiita

    はじめに 最近業務でとあるデータの大量登録をするため、APIによる一括登録の実装を行いました。初期実装ではAPI呼び出しを直列で実行していたのですが、APIの応答に数秒かかるため、呼び出し回数が何万件となると数日かかってしまうことが分かりました。 高速化を図るためRubyのQueueとThreadを利用したところ、数時間で大量データの登録を終えることができました。自分の備忘録も兼ねて、RubyのThreadとThread::Queueを活用したAPI処理の高速化方法についてまとめます。 やりたいこと 以下の要件を満たすスクリプトを実装したいとします。 とあるAPIを利用して登録処理をしたい 登録件数は1万件とする 登録データには連番の値を登録する 例)IDを1, 2, 3とする 万が一プログラムが途中終了してしまった場合に備えて、途中から再開できるようにする 例) 1〜50番まで登録済みの

    RubyのThreadとThread::Queueを活用したAPI処理の高速化方法 - Qiita
  • Rubyで書くスレッドのデザインパターン

    queue = Queue.new N = 10 sender = Thread.start do Thread.current[:data] = [] N.times do |i| sleep(rand(0..0.01)) queue << i Thread.current[:data] << i end end receiver = Thread.start do Thread.current[:data] = [] N.times do sleep(rand(0..0.001)) # shift出来ないとスレッドが自動停止してくれる Thread.current[:data] << queue.shift end end sender.join receiver.join # 正常にデータが受け取れている sender[:data] # => [0, 1, 2, 3, 4, 5, 6

    Rubyで書くスレッドのデザインパターン
  • 【Ruby】gemの作り方から公開まで - Qiita

    2018/08/15に投稿された記事です。現在のbundlerの挙動とは異なる可能性があります。 Rubyのライブラリであるgemを作成し、RubyGems.orgで公開するまでの流れです。 What is a gem? gemRubyのライブラリです。もう少し言うと、RubyGemsというデファクトスタンダードなRubyのパッケージ管理システムがあり、そこではアプリケーションやライブラリをgemという単位で管理しています。gemRubyGems.orgで公開されています。 gemをインストールするには、gem install [gem]を使います。 インストールしたgemRubyプログラム内で使うには、requireを使います。

    【Ruby】gemの作り方から公開まで - Qiita
    lulichn
    lulichn 2023/08/15
  • Module Builder Patternと出会う | PSYENCE:MEDIA

    RubyKaigi2017帰りの@mactkgです。これからちまちまとブログを書いていくと思いますが、よろしくお願いします。普段はRubyRailsを書いています。 入社してから毎日Ruby(たまにiOSとSQL)を書いている日々ですが、使用しているgemのコードを眺める中でModuleの表現力に驚かされることが多々ありました。そんな中参加したRubyKaigi2017での個人的テーマは、Moduleだったのではないかと振り返って感じます(MatzのKeynoteも、Moduleの話でした)。 そんな中会場で聞いた「The Ruby Module Builder Pattern」というトークが面白かったのですが、最近使ったShrineという画像アップロードのgemの実装とつながり、ビビっと来ましたので記事にします。まずはModule Builder Patternから…。 Module

    Module Builder Patternと出会う | PSYENCE:MEDIA
    lulichn
    lulichn 2023/03/02
  • [初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか - Qiita

    はじめに: 遠回りせずに「近道」を探す RubyRailsを始めたばかりの人は、もっと短く書く方法や便利な標準ライブラリの存在を知らずに遠回りした書き方をしてしまいがちです。 そこで、RubyRails初心者の人によく見かける「遠回り(または車輪の再発明)」と、それを回避する「近道」をいろいろ集めてみました。 2013.11.06 追記 この投稿を書くに至った経緯などを自分のブログに書きました。 こちらも合わせてどうぞ! 昨日Qiitaに投稿した記事は普段のコードレビューの副産物 - give IT a try Ruby編 以下はRubyの標準機能を使ったイディオムやメソッドです。 Railsプロジェクトでもそれ以外でも使えます。(Ruby 1.9以上を想定) 後置ifで行数を減らす

    [初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか - Qiita
  • Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

    Rubyのcase」を一瞥し「あー要は〇〇(言語名)のswitchね」などと早合点し、その後もその真の価値を知ることなく一生を終えるプログラマが近年跡を絶たない。加えて、「今更条件分岐?RubyはOOPなんだからポリモフィズムじゃね?」とか「HashにProc突っ込んでcallするのがオレ流。」とかうそぶく人たちもまた増加の一途を辿っている。 そんな世の中にあって、ぼくは一言、できればガツンと一言申し上げたい。生まれも育ちもRubyなぼくから、是非ともそんな人たちに「Rubyのcase」について一言申し上げておきたい。 ─ 問題1 ─ 名前name、レベルlevel、ポイントpointの各属性を持った複数のCharacterオブジェクトcharlie, liz, benがある。 class Character < Struct.new(:name, :level, :point) def

    lulichn
    lulichn 2020/12/10
  • 1