タグ

rubyに関するsuzuki86のブックマーク (97)

  • Extracting specific keys from a hash in Ruby · zaiste.net

  • Procオブジェクト - rochefort's blog

    パーフェクトRuby (PERFECT SERIES 6) 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型この商品を含むブログ (22件) を見る Proc#curry がとてもわかりやすい記載になっていました。 また、例のややこしいやつも一部忘れていたのでメモ。 どっち使うよという話だと Procオブジェクトで私自身は嵌った経験はなく(Proc.new, Kernel#proc が欲しいケースがない) 「->」というsyntax sugarが用意されていることからlambdaで書くことが多いです。 基lambdaで統一しておいて、Proc.new, Kernel#proc 欲しい場合のみ、 そっちで書くという方針にしています。 8-1-6. Proc#cu

    Procオブジェクト - rochefort's blog
  • ブロックのはなし - mirichiの日記

    RubyのProcやlambdaについての記事は検索するとよく出てくるが、ブロックはなぜかいまいちスポットライトが当たらない。あってもProcの説明のオマケみたいな感じが関の山。 この記事ではそんな不遇なブロックについて焦点を当ててみたい。 ブロックとは何か まずはここの認識を合わせておこう。Rubyの構文において、メソッド呼び出しの後ろにくっつくことがあるdo〜end、もしくは{〜}の間にあるコードの塊をブロックと呼ぶ。 すべてがオブジェクトであるRubyでも、言語の文法を構成する要素はオブジェクトではない。例えばifとか、代入式の=や、変数などはオブジェクトではない。当たり前といえば当たり前なのだが、同様に、文法を構成する要素であるブロックはオブジェクトではない。 Procオブジェクトと一緒に「似たようなもの」と説明されると地味に理解しづらいのだが、ProcはRubyの文法とは何の関係

    ブロックのはなし - mirichiの日記
  • クックパッドの本番環境で使われている Ruby のバージョンが 2.2 になりました - クックパッド開発者ブログ

    技術部の鈴木 (@eagletmt) です。 先日、クックパッドで使われている Ruby のバージョンを 2.0.0 から 2.2 にアップグレードしました。 アップグレードは主に @sorah と私で進めました。 今回はアップグレードまでの過程やアップグレード当日の流れ、そして今のところ見られているアップグレードによる効果などについて紹介します。 アップグレードまでの準備 テストを通す Ruby 2.1 がリリースされたときから 2.1 にアップグレードできないか検証環境でテストを回していました。 しかし、当時はクックパッドの全テストを実行すると必ず途中で Ruby がクラッシュする現象に悩まされていました。 Ruby の GC のバグ、拡張ライブラリのバグを疑いながら色々やってみたものの結局解決できず、Ruby 2.2 がリリースされてからもこの状況は改善されませんでした。 しかしある

    クックパッドの本番環境で使われている Ruby のバージョンが 2.2 になりました - クックパッド開発者ブログ
  • 33 gems for building command-line apps

    Automation can help you complete repetitive and time consuming tasks quickly, whether you work at a software company or a development shop. Instead of writing one-off, hacky Ruby scripts, you’d be better off writing polished command-line apps that you can reuse and share with the Ruby and Rails community. Polished and well-thought-out command-line apps are easier to maintain and provide a good use

  • ScaleOut | Supership

    2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 件に関する詳細は、プレスリリースをご確認ください。

    ScaleOut | Supership
  • Railsアプリやgem作る時にいつも入れているgem一覧 - くりにっき

    id:joker1007 さんに触発されました。 Ginza.rb 21回の発表資料。rails_adminのつらみとオススメgem達。 1年間で10個以上アプリやgemを作っている中でよく使うgemをまとめてみます Railsアプリ(rails new した直後に必ず入れる) annotate https://github.com/ctran/annotate_models modelのソースの先頭にテーブルのスキーマ情報を付加してくれるgem。いちいちschema.rbを見に行く必要がなくなるので超ベンリ こんな感じ # == Schema Information # # Table name: plugins # # id :integer not null, primary key # name :string # title :string # version :string #

    Railsアプリやgem作る時にいつも入れているgem一覧 - くりにっき
  • スクリーンキャストで学ぶRubyリファクタリング: Keitai Message編

    他の人が書いたRubyコードをリファクタリングしてみました。 画質を上げてから視聴してください。(720p以上 x PC全画面表示を推奨) 題材に使った問題はこちらです。 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2006 リファクタリングしたコードはこちらにあります。 https://github.com/JunichiIto/Keitai-Message 見どころはこのあたりかも。 getterメソッドではなく、attr_readerを使う - 開始位置: 0:04:00 API利用者の予想を裏切るような「サプライズメソッド」をなくす - 開始位置: 0:15:45 仕様書に書かれていない「憶測に基づいた独自仕様」をなくす - 開始位置: 0:33:20 正規表現を導入してコードをシンプルにする -

    スクリーンキャストで学ぶRubyリファクタリング: Keitai Message編
  • Ruby: Forwardable によるデリゲート(委譲) - Qiita

    Ruby の標準添付ライブラリに Forwardable があります。 Forwardable によりデリゲート(委譲)が手軽に行えます。 稿は Fowardable に関する簡単なメモです。 参考リンク library forwardable (Ruby2.1.0リファレンスマニュアル) 標準添付ライブラリ紹介 【第 6 回】 委譲 #!/usr/bin/env ruby require 'forwardable' class C extend Forwardable # Forwardable を extend する delegate %i(push []) => :@array # push, [] メソッド呼び出しを @array に委譲する def initialize @array = [] # 委譲先オブジェクト end end c = C.new c.push 2015

    Ruby: Forwardable によるデリゲート(委譲) - Qiita
  • RubyのProcを引数付きで実行する4つの方法 - アジャイルSEの憂鬱

    Procにこんな実行の方法があったなんて知らなかったのでメモ。 引用 self[*arg] -> () call(*arg) -> () self === *arg -> () yield(*arg) -> () 手続きオブジェクトを実行してその結果を返します。 引数の渡され方はオブジェクトの生成方法によって異なります。 詳しくは Proc#lambda? を参照してください。 「===」は when の所に手続きを渡せるようにするためのものです。 http://docs.ruby-lang.org/ja/2.1.0/method/Proc/i/=3d=3d=3d.html 実行結果 irb(main):001:0> proc = -> (x) { p x } => #<Proc:0x007fa8bcd12e70@(irb):1 (lambda)> irb(main):002:0> pro

    RubyのProcを引数付きで実行する4つの方法 - アジャイルSEの憂鬱
  • Object#tapでローカル変数を減らす。 - Qiita

    上記のとおり、ブロックにselfを渡してselfを返すメソッド。 tapは「盗聴」という意味なのでオブジェクトの中身を覗き見るためのメソッドなんだと思う。[1,2,3].tap { |ary| puts ary } みたいな。 で、これをうまく使えば一時的な変数を減らせる。 たとえば下記のようなメソッドを

    Object#tapでローカル変数を減らす。 - Qiita
  • Learn Ruby the Hard Way - Read for Free

    The type for this book is set in 18px / 1.5 Adobe Serif, Sans, and Code. Welcome to Learn Ruby the Hard Way, 3rd Edition. You can visit the companion site to the book at http://learnrubythehardway.org/ where you can purchase digital downloads and paper versions of the book. The free HTML version of the book is available at http://learnrubythehardway.org/book/. Common Student Questions How long doe

  • RubyのOptionParserの底力を知る - ザリガニが見ていた...。

    コマンドは、以下のような書式でオプションと引数を設定して、実行する仕組みになっている。 例: コマンド名 オプション オプション オプション引数 オプション コマンド引数 optparser_test.rb -a -b VALUE --foo FILE_PATH 実際にコマンドを作ろうとすると、オプションの解析には手間がかかると気付く。 そのため、多くの言語環境にはオプション解析用のライブラリが用意されている。 Rubyのoptparserについて、基的な使い方は知っているつもりだったが... Rubyでコマンドの中身を作るまで - ザリガニが見ていた...。 ちょっと気の利いたコマンドにしようとすると、その使い方は謎だらけになった。 どうしたら苦労最小限でオプションを解析できるのか、調べてみた。 基 require 'optparse' OptionParser.new do |op

    RubyのOptionParserの底力を知る - ザリガニが見ていた...。
  • Rails 5の404/500エラーページ、簡単作成手順

    Railsアプリケーションで簡単に自分で作った404/500エラーページを表示させる手順です。404/500エラーページもユーザービリティの面やコンバージョンの面で非常に重要ですよね! あるRailsアプリケーションでルーティング系のエラーはルートにリダイレクトするようにしていたのですが、SEO的にはNGだと知りました。 『ソフト404エラー』と呼ばれており、ルーティングがないのに404ステータスを返さないのは検索エンジンさん的にはなはだそうです。 ということで、Webサービスを作るときにはルーティングと、エラー時の挙動をしっかり制御したほうがいいと反省中です。

    Rails 5の404/500エラーページ、簡単作成手順
  • 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita

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

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

    Jan 9, 2012 Over time, as your libraries evolve, you’ll want to deprecate methods. Generally, the deprecations you’ll make will fit into one of three categories: Changing the name of a method to be more descriptive Change how a certain process works to be more clear, normally as part of a shift in how people will use your library Removing functionality Ruby makes adding deprecation painless, by us

  • (あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方 - Qiita

    (2021-8-28追記) この記事の改訂版を書いてみました。改訂版の方が易しい内容になっているので、プログラミング初心者の方はこちらを参考にしてみてください。 はじめに:「引数があるよりは、ない方が良い」? 先日、同僚の西見さん(@mah_lab)がこんな技術ブログを書いていました。 インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) 同じ内容を僕だったらどういうふうに書くかな~?と思って、ちょっと書き始めてみたんですが、わかりやすく実践的な説明をするのは意外と難しく、内容も西見さんのブログとほぼ同じになりそうだったので、途中で断念しました。 というわけで、インスタンスメソッドとクラスメソッドの使い分けが未だにあやふやだという方は、ぜひ西見さんのブログを読んでみてください! ・・・なんですが、1点だけ気になる点がありました。 それはインスタンスメソッ

    (あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方 - Qiita
  • Rubyで大きな配列から特定の要素を抜き出すとき、普通のselect使うのとLazyのselect使うのどっちが速いの? | mah365

    多分Lazy使ったほうが速いんじゃないかと思ってベンチマークしてみました。 ただし状況による ハッシュの配列から、ハッシュ内に特定のキーワードを持つハッシュを抽出するという処理で比較してみました。 というわけでまずは抽出したものを全件Arrayのインスタンスにしなおすという処理の結果から。

    Rubyで大きな配列から特定の要素を抜き出すとき、普通のselect使うのとLazyのselect使うのどっちが速いの? | mah365
  • インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) | mah365

    Rubyといったオブジェクト指向言語を学ぶと、メソッドの定義方法としてインスタンスメソッドとクラスメソッドという2通りの定義方法があることを学ぶと思います。しかし、言語自体のガイドブックには「定義方法にインスタンスメソッドとクラスメソッドがある」と書いてあるだけで、大抵その使い分けについては書かれていません。 そういう訳で、このエントリではその使い分けについて少し考えてみたいと思います。理論的に厳密な使い分けを目指すというよりは、そもそも使い分けの検討が全くつかない!という方に向けて、その指針の一助となることを目指します。 インスタンスメソッドとクラスメソッドとはそもそものところ、Rubyといった「オブジェクト指向の考え方」を実装した言語の機能です。その機能がなぜあるのか?というそもそものところは、オブジェクト指向の考え方にさかのぼることになります。 そこで、インスタンスメソッドとクラスメ

    インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) | mah365
  • そうだRack作ろう。

    超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回 「Ruby / Ruby on Rails ビギナーズ勉強会 第3回」で発表した内容です。 簡単に管理画面が作成できるActiveAdminについて発表しました。 他の管理画面系Gemの紹介や、導入を説明しています。 また、カスタマイズするに必要な知識のDSLについて概要を解説しています。 ================= 「Ruby / Ruby on Rails ビギナーズ勉強会」は初心者が集まって発表したり、自主学習する勉強会です。定期開催しています。 開催の連絡は以下の方法で受け取ることができます。 ## DoorKeeperグループ イベント申し込みを受け付けている、DoorKeeper でのグループです。 http://ror-beginners.doork

    そうだRack作ろう。