Ruby

ウェブサイトで特定のgemのバージョンを、表示する

は、dxruby_sdl の最新バージョンを示す画像で、バージョンバッジ(Version Badge)と呼ばれています( dxruby_sdl は私が開発しているソフトウェアで、DXRuby互換のAPIを提供するものです)。 gemを開発している人であれば、 GitHubのプロジェクトページなどの…

DXRubyが、Macでも(少し)動くようになりました

DXRuby (http://dxruby.sourceforge.jp/) を利用して作られたゲームをMacでもLinuxでも動くようにするためのソフトウェアdxruby_sdl (https://github.com/takaokouji/dxruby_sdl) を作りました。ソースコードやインストール方法はGitHubで公開しています。MI…

rvm get stable

もうね、いつも忘れるんでメモっておきます。 RVMを最新にするのは以下のコマンドです。 $ rvm get stableこれで「rvm list known」の実行結果が最新になります。 (特定のバージョンに戻す方法はどうするんだろうね?)

def式の戻り値って?いまのところ、答えはnilです。

Rubyのdef式って、nilを返すんですね。知らなかった... で、以下のチケットにあるように、次のバージョンである Ruby 2.1ではsymbolを返すことになるようです。 https://bugs.ruby-lang.org/issues/3753 We accept this change for 2.1 in the developers' m…

「2013/7/8にRSpec 2.14がリリースされた」の、ファーストインプレッション

RSpec 2.14 is released!: http://myronmars.to/n/dev-blog/2013/07/rspec-2-14-is-released ってことで、ざっとリリースノートを読んで、びびっときたのはこれだ!! Core: Shared example groups are scoped to the context they are defined in Before 2.…

.noexec.yamlとは

いやね、RVMを使っていてGemfileに記述したrakeのバージョンではなく、システムにインストールされたrakeを使いたかったのですが、うまくいかなくて困っていました。 ひょんなことから、次のようにしてrakeを実行すると、rake実行時にRVM(というよりはrubyge…

かあさん、RSpec Mock 2.14にTest Spyがあるようで...

RSpec Mock 2.14にはexpectっぽい記述が追加されましたね。http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ # Old foo.should_receive(:bar) foo.should_receive(:bar).with(:buzz) foo.should_receive(:bar).exactly(3).time…

モデルのscopeの、specを記述する

モデルのscopeのspecを記述したいと思ったのですが、「scope rspec」でGoogleで検索したところ、How can i have an rspec test for my default scope: http://stackoverflow.com/questions/6853744/how-can-i-have-an-rspec-test-for-my-default-scope にそ…

Gitのサブコマンドを、作成する

「git mine merged 」という Git のサブコマンドを作成してみます。このコマンドは、マージ済みのブランチ名を指定して、ブランチの名前にmergedをつけるという単純なものです。これは Git のサブコマンドを高速に作れるようになるための練習です。 といって…

Rails本体の、testを実行する(5) 番外編

http://d.hatena.ne.jp/kouji0625/20130615/p1 の続きで「Travis CIを設定してみましょう!」と行きたかったのです、まったく設定できませんでした。他人のプロジェクトをTravis CIで設定するのはムズいね。いつかはできるけど、いまではありません(キリッ …

Rails本体の、testを実行する(4)

一昨日 (http://d.hatena.ne.jp/kouji0625/20130613/p1) の続きです。 一昨日の時点で、あとは activerecord の失敗するテストをどうにかすればOKという状態でした。さぁ、今日もはりきっていってみよ〜♪ activerecord テストに失敗する activerecord のテス…

Rails本体の、testを実行する(3)

昨日 (http://d.hatena.ne.jp/kouji0625/20130612/p1) の続きです。 昨日の時点で、あとは activerecord のみという状態でした。さぁ、今日もはりきっていってみよ〜♪ activerecord MySQL のセットアップ 事前に MySQL そのものは公式サイト (http://dev.mys…

Rails本体の、testを実行する(2)

昨日 (http://d.hatena.ne.jp/kouji0625/20130611/p1) の続きです。 全体のテストを実行する ここで全体のテストを実行してみて、現状の問題を確認します。 $ mkdir -p ../rails-test-logs/v3.0.3/ $ bundle exec rake test 2>&1 | tee ../rails-test-logs/v…

Rails本体の、testを実行する(1)

さて、急な話ですが少し古い Rails の test を実行してみたいと思います。 なんで古い Rails なのかって!?そりゃ、大人の事情ってもんです。 あと、なんで test するのかって!?いや〜、 Rails にセキュリティパッチだけを適用したいことってあるじゃない…

テストコード(spec)の修正なしで、テストをn倍速くする

(まったく試してないけど)QSpecを紹介します。 テストが遅いので parallel_tests で高速化しようとしたが、効率わるすぎて腹がたってきたのでより効率的な Qspec をつくった。いくつかの rails プロジェクトでベンチマークしたところ、2倍以上の高速化効果が…

既存のRubyのクラスの、テストコードgeneratorを作成する(2) rspec-kickstarterの紹介

昨日、これからやりたいことを書いたのですが (http://d.hatena.ne.jp/kouji0625/20130605/p1) 、それをある程度実現しているスクリプトがあるとのことなので調べてみました。 A Test Code Generator for RSpec Users: https://speakerdeck.com/seratch/a-te…

既存のRubyのクラスの、テストコードgeneratorを作成する(1)

ちょっと機会があって、プログラムでRubyスクリプトを解析したいと思って調べています。まだまだ調査中なので中途半端な情報になってしまいますが、ご勘弁ください。 Rubyのソースコードを解析するためのソフトウェアとしては、Ruby標準添付のripperと、seat…

Rails本体の、generatorのgeneratorを変更したい!!

最近、Railsのカスタムgeneratorが銀の弾丸(開発効率を飛躍的に上げるもの)にならないかと思っていろいろ試しています。いまのところ、成果は上げっていませんwww駄菓子菓子(だがしかし)、generatorを作成することに対する敷居がとても下がりました。まだ、R…

Railsのカスタムgeneratorの、グループ分けをする

今回のお題 Railsのカスタムgeneratorは、以下のように「Rails」「Rspec」といったグループに分けられています。このグループ分けはどのようにするのでしょうか? $ rails generate --- 以下、実行結果 --- Usage: rails generate GENERATOR [args] [options…

Railsのカスタムgeneratorの、specを記述する(その2)

先日 (http://d.hatena.ne.jp/kouji0625/20130524/p1) の続きでやんす。 ammeter でカスタム generator の spec を記述して実行すると、rm -rf ..., mkdir -p ...というログが標準エラー出力に出力されました。 うるさいので設定で変更できないかと調べてみ…

Railsのカスタムgeneratorの、specを記述する

先日はRailsのカスタムgeneratorの作成方法を説明しました (http://d.hatena.ne.jp/kouji0625/20130523/p1) が、今日はそのspecの記述方法を説明します。generator自体の作成はちょろいのですが、generatorのspecとなると面倒そうですね。実際、rspec-rails…

いまさら聞けないRailsのカスタムgeneratorの作成方法

はじめに Railsのアプリケーションを作成していると、同じようなモデル(STIを使っているとよくありますよね)、同じようなコントローラ(RESTfulにすればするほど、コントローラは似てきますよね)が増えてきます。新しいモデルやコントローラを作るときに、コ…

R2Dのリファレンスを、翻訳する - R2D: 初心者向けRubyの描画ライブラリ

今年の中学生Ruby教室 (http://www1.city.matsue.shimane.jp/sangyoushinkou/ruby/rubycity/junior-ruby/junior_ruby.html) のプラットフォームが Windows から Mac に変わることを受け、Mac でも使える Ruby の 2 次元描画ライブラリを調べていました。いま…

RSpecのrequest specで、HTTPS(SSL通信)を実現する

なんのことはない以下の設定をbeforeなどで行うだけですwww 基本的にはwww.example.comはそのままでよく、多くの場合実際のホスト(たとえばhttps://cocktailq.herokuapp.com)に合わせる必要もないはず。 Capybara.default_host = 'https://www.example.com' …

serverspecの記事の紹介(serverspecでテスト駆動サーバ構築)

http://qiita.com/items/46545bdbb9629c4d3860 より Chef と Puppet の勉強会というよりも、むしろ時代は serverspec だった #pfcasual - 彼女からは、おいちゃんと呼ばれています こちらの記事でserverspecを見て、テストファーストでサーバ構築できたら良…

本物のexamplesの共有はこんな感じだろ〜?(RSpecのshared_examplesを定義するファイルの説明です)

Ruby + RSpecでのTDD(BDD)において、shared_examplesやshared_examples_forは最高の武器ですね。 ご存知のようにtest-unitではRubyの言語仕様を駆使してテストコードの共有資産(assert_XXXXなど)を用意することになりますが、RSpecではshared_examplesやshar…

capybara-webkit 0.9.0 on Ubuntu 13.04

必要にせまられて、つまらぬ修正をしてしまったでござる。 commit cf2c7585e5b57c5d605757ef2291594cce537b7b Author: Kouji Takao <kouji@netlab.jp> Date: Wed May 8 23:07:13 2013 +0900 build for Ubuntu 13.04 diff --git a/src/Source.cpp b/src/Source.cpp index 698d4</kouji@netlab.jp>…

jpmobileとRailsの各バージョンの対応

Railsの各バージョンに合わせて、jpmobileのバージョンを変更する必要があるのですね。 https://github.com/jpmobile/jpmobile/wiki/Version-:-Jpmobile-vs-Rails Gemfileはこんな感じにするのでしょうかね。(動作確認していません。すまん。) # Rails 3.2.x…

SomeClass.any_instance.stub(:some_method).ordered => NG

RSpec MockのSomeClass.any_instance.stub(:some_method)したものには、orderedメソッドがないのですね。知らなかった。 あるモデルをsave!したあとに処理していることをチェックしたかったので、 SomeModel.any_instance.stub(:save!).ordered => 例外発生 …

「RSpecのshouldはもう古い!新しい記法expectを使おう!」に一言申す!!

RSpecのshouldはもう古い!新しい記法expectを使おう!: http://qiita.com/items/d880250adc8cdbe7a32f という最高の記事があります。で、expect {}.to change...はどんなふうに書くんだっけかな?と思ってみてみると、それらしいものがなかったのでメモして…