タグ

Rubyに関するramtigaのブックマーク (302)

  • DRY原則とテストの可読性 - ✘╹◡╹✘

    DRY原則に従おうとするほど、テストコードがどんどん読みづらくなる。 The RSpec Bookに答えがあるかと思って読んでみたものの、「あるある」と一言述べているだけだった。辛い。 テストコードが読みづらくなる例を示すために、1つRubyのライブラリをつくった。 値とパターンを与えてValidationを行う機能を提供するライブラリ。 実装60行、テスト120行なので、詳しく見たければすぐ読めると思う。 最近不意ながらキラキラネームの命名力が上がってきたと思う。 avalon - A validator implementation for Ruby https://github.com/r7kamura/avalon 冗長だが読みやすい例 letもsubjectもローカル変数も何も用いずに率直に書いたテストコード例がこちら。 冗長だが読みやすく、テストコードを見ればライブラリの使い

    DRY原則とテストの可読性 - ✘╹◡╹✘
    ramtiga
    ramtiga 2012/09/03
  • 私はRSpecでテストをこんな感じで書いてる - アジャイルSEを目指すブログ

    私がRSpec使ってテスト書く時はこんな感じで書いてるよ〜ってのを書いてみた。*1 テストを書く順番について TDDでコードを書く場合、先にテストを書く事になります。 そして、そのテストを書く順番ですが、私は下記のような順番で書くように意識しています。 設計する describe を書く itを書く subjectを明確にする before(context)を明確にする その他に、気をつけている点はこんな感じ 別のメソッド呼ぶ時は基的にstubなどで潰す contextは「〜の場合」、it は「〜であること」になるようにする 一つずつ、詳細を書きます。 設計する テストを書き始める前に、まず実装しようとしてるクラス、メソッドを簡単に設計します。 少なくとも、「クラス名」「クラスメソッド or インスタンスメソッド」「メソッド名」「メソッドの戻り値」ぐらいは決めます。 describe を

    私はRSpecでテストをこんな感じで書いてる - アジャイルSEを目指すブログ
  • Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)

    2. 宣伝: 翻訳買ってください 抽象によるソフトウェア設計(Daniel Jackson 著) – 中島震 監訳 ・ 今井健男・酒井政裕・遠藤侑介・片岡欣夫 共訳 (オーム社) – 会場で買えます! Types and Programming Languages (通称 TAPL) – Benjamin C. Pierce 著 – 絶賛翻訳中! 2 3. 目次 • 背景: 近年のプログラミングの問題 • 提案: 超絶技巧プログラミング • 実践 テーマ1: self-descriptive な Ruby プログラム テーマ2: 文字を制限された Ruby プログラム • まとめ 3 4. 近年のプログラミングの問題 • 俗世の欲にまみれすぎ – 例: プログラミング言語 Ruby の宣伝文句 生産性が10倍! 10分でblogが 作れる! プログラミングが 楽しくなる! 実用性なんか無

    Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
    ramtiga
    ramtiga 2012/08/26
  • Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary

    備忘録兼、初心者向けのメソッド一覧。 余裕があればRails編とかも書こうかな。 これ忘れてるとか何事?とかいう突っ込みがあれば是非お願いします。 もうちょっとコードの具体例書きたかったけど、めんどくさくなってきたw Array Array#combination(n), Array#permutation(n) 配列のデータを元に組み合わせ(順列)を作ってくれます。 ブロックを渡さない場合はEnumeratorで組み合わせの各要素を列挙します。 Enumerator Enumerator#with_index(offset = 0) Enumeratorの各要素に合わせてindexを列挙してくれるEnumeratorを返す。 each_sliceやcombination等にメソッドチェインで繋げて使う。 Enumerator#with_object(obj) with_indexと同様で

    Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary
  • RubyのMechanizeを解説 for 1.0.0 - きたももんががきたん。

    私、餡子のためなら逆立ちだってしますよ。 こじらせている。 べたいと思ったらべたいのである。 ここが北カリフォルニアの片田舎であろうと、私があんみつがべたいと思えば、あんみつは今すぐ作ってべなくてはいけないものになる。いしん坊の思考は凄まじい。 子供が観ていたアニメで、赤ちゃんが空の…

    RubyのMechanizeを解説 for 1.0.0 - きたももんががきたん。
    ramtiga
    ramtiga 2012/08/14
  • 「関数型Ruby」という病(1) - Symbol#to_proc, Object#method - ( ꒪⌓꒪) ゆるよろ日記

    この記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 だって、ブロックって汚いじゃん?仮引数の|x|とかキモイ。 Symbol#to_proc 基中の基。 instance method Symbol#to_proc 以下のようなArrayがあって、 irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user, :entry, :article, :comment, :category] 各要素をto_sしたかったら、 irb(main):004:0> arr.map{|s| s.to_s} => ["user", "entry", "article", "comment", "category"] と書くかわりに、 irb(main)

    「関数型Ruby」という病(1) - Symbol#to_proc, Object#method - ( ꒪⌓꒪) ゆるよろ日記
    ramtiga
    ramtiga 2012/08/09
  • Rubyのクラスの太った人たち

    前回の記事「Ruby、君のオブジェクトはなんて呼び出せばいいの?」で、Rubyには大量のメソッドがあることが分かりました。今回はその補足として、各クラスごとのメソッド数を数えてグラフ化してみます。 インスタンスメソッドを数える まずは、インスタンスメソッドを数えましょう。グラフ化の対象は、10以上のメソッドを持つクラスです。最初にクラスごとのメソッド数をリストアップします。 klasses = ObjectSpace.each_object(Module) def live(methods) methods.reject { |m| "#{m}".start_with? '_deprecated' } end methods = klasses.map do |k| [k, live(k.methods(false)).size, live(k.instance_methods(false

    ramtiga
    ramtiga 2012/07/20
  • Ruby Garbage Collector Performance Tuning | Carpe Diem

    Ruby のガベレージコレクションのパフォーマンスチューニングをする方法に環境変数を指定する方法があります。Ruby Enterprise Edition でも同様の設定が可能なので、パフォーマンスチューニングできるか試してみました。 以下、それぞれの環境変数の意訳です。 RUBY_HEAP_MIN_SLOTS: 最初のヒープスロット数です。デフォルトは、10000 です。 RUBY_HEAP_SLOTS_INCREMENT: Ruby が最初に新しいヒープを確保するときに必要な確保するために追加するヒープスロットの数です。デフォルトは、10000 です。例えば、デフォルトの GC 設定のとき、ヒープ上に 10000 の Ruby オブジェクトが存在しています。プログラムは他のオブジェクトを生成するとき、Ruby はそこに 10000 ヒープスロットで新しいヒープを確保するでしょう。合計で

  • rummelonp.com

    rummelonp.comNameKazuya Takeshima Blogrummelonp.hatenablog.com Mastodon@[email protected] Twitter@rummelonp GitHub@rummelonp

  • Ruby で作る、簡単 CLI ツールのススメ - Qiita

    Ruby 開発環境 AdventCalendar 10 日目です。前日は、 aereal さんでした。 さて、皆さんコマンド打ちまくってますか?僕は Ctrl+R で履歴から引っぱり出さないとタイポで撃沈します。 そんなこんなで皆さんいろんな CLI ツールをご利用中だと思います。 vim とか emacs とか、 rails g とか、 guard とか。実に便利なものたちですが、現実の開発現場に即した、素晴らしいニッチなツールというのは、得てしてそんなにないものです。 「こんなに重厚でなくていい」 「もうちょっとざっくりとした……なんというか痒いところに手が届くような……」 などなど、いろいろあると思います。例えば「チームで開発しているのだが、今行ったコミットのレビューを依頼するメールを書くのが面倒なので社内 Twitter 的なものに書こうかと思うのだがそれもめんどくさいのでコミット

    Ruby で作る、簡単 CLI ツールのススメ - Qiita
    ramtiga
    ramtiga 2012/07/11
  • GitHub - technoweenie/faraday: READ-ONLY fork of https://github.com/lostisland/faraday

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - technoweenie/faraday: READ-ONLY fork of https://github.com/lostisland/faraday
  • 第2弾!知って得する12のRubyのトリビアな記法 ~ 12 Trivia Notations you should know in Ruby - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 第2弾!知って得する12のRubyのトリビアな記法 melborne.github.com - 半年くらい前にちょっとトリビアだけど 知っていると意外と便利なRubyの記法を21個紹介したよ 知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby - hp12c 今回はその第2弾だよ! ちょっと数が少ないけど 知らないものがあったらへーとかほーとか 得したとか言ってもらえるとうれしいよ 1.Enumerator#with_index 任意のリストを標準出力するときに 連番を同時に振るとしたら 普通はEnumerable#each_with_indexを使うよね names = Mod

    第2弾!知って得する12のRubyのトリビアな記法 ~ 12 Trivia Notations you should know in Ruby - hp12c
    ramtiga
    ramtiga 2012/07/10
  • #fluentd のためのプラグインをイチから書く手順(bundler版) - tagomorisのメモ置き場

    前に自分で書いた fluentdのためのプラグインをイチから書く手順 - tagomorisのメモ置き場 はたいへん重宝していたのだが、書いたすこし後になって実は現在すでに bundle gem コマンドを使うやりかたが良さそうだということがわかってしまったがばたばたしてて移行してなかった。 で、またひとつプラグインを書くことにしたのでついでに bundle を使った手順をざっくりまとめておく。以下のエントリをたいへん参考にさせてもらった。 T-POINTを取得するスクリプトをGistから移動, Bundlerを使ったGem作成メモ (自分用) - ただのにっき(2012-02-18) 準備とディレクトリツリーの作成 bundler は必要なので、なにはなくとも入れておこう。 gem install bundler そしてプラグイン用ディレクトリツリーを作成する。今回は DataCount

    #fluentd のためのプラグインをイチから書く手順(bundler版) - tagomorisのメモ置き場
  • tuningathon 4 に参加&優勝してきました

    @tnmt 次回チューニンガソンは7/1(日)らしいけどご予定は?前回のリベンジを是非! — Michael H. Oshita (@ijin) June 12, 2012 というわけで3回目のJavaではボロボロでしたが、 @ijin さんと再び tuningathon に参加して、優勝してきました。 ルール レギュレーション があるのでそれを参照。refineryていうRoR製CMSのブログ機能のチューニングがお題でした。 やったことを時系列順で ※スコアの移り変わりや、このエントリで触れていない点については相方@ijinさんのエントリが詳しいので、合わせてご参照ください。 rbenv + ruby-buildRuby 1.9.3-p194 を入れる Railsのアプリサーバにunicornを使う MySQLにいくつかindex追加 計測ツールを眺めてスコア算出方法を調査 Var

  • Rubyアソシエーション: テスト

    ここではRubyで記述されたコードに対するテスト方法の概要について説明します。Rubyには、ユニットテストをしやすくするフレームワーク(ライブラリ)が提供されています。通常は、個々のモジュールやメソッドなど小さな単位で十分なユニットテストを行って検証し、結合テストへと進みます。 提供されるフレームワークは、「テスト駆動開発(Test Driven Development:TDD)」や「振舞駆動開発(Behaviour Driven Development:BDD)」という思想がベースになっています。テスト駆動開発とは、プログラム開発手法の一つで、プログラムに必要な各機能について、最初にテストコードを書きそれが失敗することを確認し(テストファースト)、そのテストが成功するように必要最低限の実装を行った後、プログラムの振る舞いを変えないようにコードを洗練(リファクタリング)していく方法です。こ

  • これからRubyを始める人たちへ

    (追記:2012-12-03) 記事を電子書籍化しました。「Gumroad」を通して100円にて販売しています。詳細は文末に追記しましたので、購入ご検討のほどよろしくお願いしますm(__)m 電子書籍「これからRubyを始める人たちへ」EPUB版 Rubyの特徴 Rubyは、まつもとゆきひろ氏(通称Matz)により設計されたオブジェクト指向プログラミング言語です。Rubyの特徴を一言で言うならば、それは「間口が広くて奥が深い言語」ということになります。 「間口が広い」というのは、インタフェースがシンプルで誰でもが簡単に使い始められることを意味します。「奥が深い」というのは、プロフェッショナルによる長期使用に耐えうる物の言語であるということを意味します。「間口が広い」ということと「奥が深い」ということは来競合する概念ではありませんが、その両方をバランスよく組み合わせるには、対象に対する

    ramtiga
    ramtiga 2012/06/28
  • いまどきのRubyとRailsの学び方 | Act as Professional

    code school という学習サイトがあります。現在は、Ruby on Railsに特化したコンテンツがありますが、確認する限りでは、jQueryやHTML5 & CSS3のコンテンツが近いうちに公開される予定です。 なにが、いまどきなのか? Ruby on Railsrails3に対応してる)が無料で学習できる Rails for Zombies をやってもらえば、すぐにわかるのですが、rails環境を一切つくることなく、Webブラウザだけで完結しているコンテンツなんです。 つまり、ブラウザにコードを打ち込んでいくと、動作する結果を返してくれるのです。環境作りに苦労することなく、学習に専念できるのです。 初心者向けのコンテンツだからこそ、こういった配慮は大事だなぁと考える。 Rails for Zombies は5章構成になっていて、1章ずつ動画で丁寧に説明されている。英語が聞き取

    いまどきのRubyとRailsの学び方 | Act as Professional
  • RailsアプリをふつうにCIで回すやり方

    The document discusses setting up a Jenkins environment for a Rails project. It mentions SHIBATA Hiroshi from Eiwa System Management and links to his website, GitHub profile, and Twitter account. It also references maintaining legacy Ruby code and the continuous integration tool Travis CI.Read less

    RailsアプリをふつうにCIで回すやり方
  • #shibuyarb に参加した + LTしてきた - Kentaro Kuribayashi's blog

    死霊ないけど、「gemの命名規約について」という感じで、飛び入りでLTしたw 内容は、CPANは素晴しい、gemはクソ、という感じです。 #shibuyarb— kentaro (@kentaro) June 20, 2012 (ツイートは釣りです) というわけで、日行われたShibuya.rbで、ひとの発表を聞いていたら意識が高まったので、飛び入りで、ブラウザであれこれページを開きつつLTしてきた。 写真1: Rubyistの集まりで、YAPC::Asiaティーシャツ着用で発表する私 ふりかえると、話したい内容、あと3個ぐらいはあったなーという感じだったのだけど、いろいろ時間なくてスライド作れてなかったのが敗因であった。ふだんから、いつでも喋れるよう、ネタをスライドの形にしておこう、と思ったのであった。 今日の内容、資料とかないので、以下、おおまかに話した内容など。 Perlのほうから

    #shibuyarb に参加した + LTしてきた - Kentaro Kuribayashi's blog
  • あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して

    あなたは,下記のコードを理解できない。 p f /g+h/i これはRubyのコードである。「p」は,コンソールに出力する関数である。 問: だいたい,何をやっているコードですか? ※例えば,四則演算など。 構文をおおまかに説明して下さい。 どれが変数で,どれが関数で,どれが演算子か? ↓回答 回答: 一意に決定できない。 下記に, このコードの複数の解釈方法と, この件が引き起こす問題 について述べる。 ※なお,この問題が起きるのは動的言語に限らず,静的言語でも同様に発生しうることを前もって述べておく。 (1)分数の計算とみなすパターン 先行するコードを下記のように書いた場合: test1.rb # 変数に数値を代入 f = 2 g = 1 h = 2 i = 1 # 演算結果をpで出力する p f /g+h/i 実行結果: >ruby test1.rb 4 「分数の計算」とみなされる。

    あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して
    ramtiga
    ramtiga 2012/06/20