おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

ruby

最近の Rack サーバ事情について

先月、heroku の推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い…

第19回 ginza.rb ミートアップ

第19回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第19回 だれが一番?Railsアプリサーバ徒競走!&Ruby2.2について話そう - Ginza.rb | Doorkeeper raptor と rhebok のパフォーマンスをみる 第17回ミートアップ で、Rack サーバの比較をしまし…

Gimei が住所対応しました

@miyohide さんの協力により、ランダムで日本人の名前を返す gem Gimei が住所に対応しました。次のようにすると、それっぽい住所を返します。 address = Gimei.address address.kanji # => 岡山県大島郡大和村稲木町 address.to_s # => 岡山県大島郡大和村…

bundler で特定のパスに gem をインストールするべきか否か

みなさんはどうしていますか。個人的には、ローカルの開発環境であればグローバルにインストールしちゃっても問題ない気がしてきています。 ずっと習慣で bundle install —path vendor/bundle ってしてたけど、別にグローバルな感じでインストールしちゃって…

mac で nokogori をインストールする

bundle install で nokogiri のインストールに失敗して、そこからやったことのメモです。 とりあえず libxml2 と libxslt 入れる。 brew install libxml2 libxslt これでもダメだったのでNokogiriのドキュメントを見ると、「libiconv をソースから入れろ」と…

完全一致でgemの検索をするには

gem search rails とかすると、部分一致で検索されて結果がたくさんでます。完全一致したgemの情報のみ欲しいときは次のようにします。 gem search ^rails$ しかし毎回^や$を打つのはだるいですね…。そこで簡単なシェルスクリプトを書いてみました。-dは詳細…

クリップボードにコピーしたHTMLをHamlに変換する

HTML2Hamlとかあるけど、いちいちURL開いてコピペして…とか面倒ですよね。次のコマンドで自動変換できます。zip納品されたHTMLをHamlに直すときなどにどうぞ。 前提条件 Mac gem i html2haml pbpaste | html2haml --unix-newlines | pbcopy

rake_shared_context を 0.2.1 にバージョンアップした

僕が作った gem の中で、ダントツにダウンロード数が多い rake_shared_context という gem のバージョンを 0.2.1 に上げました。0.1.0 にバージョンアップしたときから8000ダウンロードくらいされてるみたいなんですが、その間何かあったんですかね…。 0.2.1…

rake_shared_context を 0.1.0 にバージョンアップした

rake_shared_context という、rake タスクをテストする際にべんりな shared context を gem にしたものがあります。これをバージョンアップしました。 バージョンアップしたときに RubyGems.org を確認したら、地味に 2000 ダウンロードされていて驚きました…

gimei を 0.1.0 にバージョンアップした

gimei をバージョンアップして、0.1.0 にしました。2celebさんから pull request を投げてもらい、それに合わせて API を整備。主な変更点は下記のようになります。 サンプルデータを拡充(約14000行のYAMLに!) 男女を指定して名前を返すAPIを追加 コード例 …

ランダムで日本人の名前を返す gem を作った

gimei という、ランダムで日本人の名前を返す gem を作りました。 似たようなライブラリに faker があります。faker は人の名前だけではなく、住所やメールアドレスやユーザ名や電話番号など、たくさんのジャンルのダミーデータを返してくれるすごい gem で…

Tokyo Rubyist Meetup に参加した

Tokyo Rubyist Meetup (trbmeetup) seeks to help bridge the Japan and international ruby and ruby on rails community. ということで、海外の技術者とミートアップできるコミュニティ Tokyo Rubyist Meetup に初参加しました! 今回のミートアップでは、…

ginza.rb を始めます

新しい地域Rubyコミュニティ、ginza.rb を始めます。 第0回目のミートアップを 6/18(火) にやりますので、気になった方はぜひ申し込みください! Ginza.rb 第0回 - Ginza.rb 第0回では Rails 4 での新機能をチェックします、次回からは Rails 4 のソースコー…

東京Ruby会議3日目に参加した

東京Ruby会議 の3日目に参加してきました。既に自分の分の発表は終わっているのでリラックスしながら発表を聞くことができました。 以下箇条書きによる感想です。 joker さんの話を聞いてDDD熱が高まる DDD本読まないと… 安川さんの話を聞いて沖縄旅行したい…

より良い bundle open としての reditor

以前、bundler で管理している gem のソースをすぐに読み始める方法 としてbundle openを紹介しましたが、今はもっぱら hibariya さん作の reditor を使っています。 bundle openと比べての利点は、標準添付なライブラリも開けるところと、正確な gem 名が分…

brew で最新版の ruby-build を入れる方法

ruby1.9.3-p374 がつい先日リリースされましたね。最近テストが謎の segfault で落ちまくっていて困っていたのですが、このリリースでそのあたりが解消されているらしいのこと。なので早く brew upgrade したかったのですが「brew だと ruby-build の変更が…

timecop のちょっと便利な書き方について

みなさん、 timecop 使ってますか?timecop は、テストで時間を扱う時に必須と言えるライブラリです。テスト中の時間を止めたり(Timecop.freeze)時間を移動させたり(Timecop.travel)できます。似たようなライブラリとして delorean があります。RailsCasts …

rbenv をさくらVPSのサーバにインストール

rbenv をさくらのサーバに system wide にインストールする手順のメモです。 インストール準備 ruby のインストールに必要そうなものを yum でインストールします。 sudo yum install libyaml libyaml-devel zlib zlib-devel readline readline-devel openss…

僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編)

昨日 @bekkou68 さんに「前島さんってどうやってRubyやRails関連の情報を収集しているんですか?」って聞かれたのでまとめてみます。とりあえず海外のブログ限定で。日本ブログ編は気が向いたらやります…。 RailsCasts 有名すぎて説明不要かもしれませんね。…

true か false をそれぞれ二分の一の確率で返すコード

これまで rand(2) == 1 みたいに書いてたけど、RailsCasts を見ていたら [true, false].sample のように書いていて、こっちのほうが若干読みやすさで上回っていていいかもと思いました。他にもっといい書き方があるぜ!という方いらっしゃったら教えてくださ…

札幌Ruby会議2012に参加した

札幌Ruby会議2012に参加しました。予約してたホテルが一週間前にホテル都合で予約キャンセルになったり、行きの飛行機の時間を間違えてしまうトラブルがありつつもなんとか3日間フルに参加することが出来ました。 予約してた札幌のホテルが設備故障で休みに…

yokohama.rb #24 に参加した。

ずっと行ってみたかった yokohama.rb に初参加しました。 Bu: Yokohama.rb #24 Rubyレシピブック読書会→もくもく→行きつけの中華屋で懇親会という流れ。僕は Ruby 2.0 の refinements を手元で試したりしていました。 参加してすごく “コミュニティ感” の強…

ruby-mode のインデントをいい感じにする

僕はこれまで下記のようなインデントで ruby のコードを書いてきました。 SuperLongClassName.super_long_name_method(hoge: 'fuga', foo: 'bar', baka: 'aho') 理由は、Emacs の ruby-mode による標準インデントが上記のような形になっているからです。今ひ…

gemコマンドの省略

gem install -> gem i gem list -> gem li など、gemのコマンドは他のコマンドと衝突しない範囲で省略できる。これまで gem install xxx としてたけどこれからは gem i xxx として生きていこうと思います。

Rubyで2進数と10進数の変換

ぐぐってもエントリがみつからなかったので。to_s や to_i に引数を渡すことで変換できる。 10進数から2進数への変換 255.to_s(2) # => "11111111" 2進数から10進数への変換 "11111111".to_i(2) # => 255

Ruby1.9.3ではKernel#randが少し便利になる

5から9までの整数をランダムで返すような処理を書くとき、1.9.2までは rand(5) + 5 もしくは r = Random.new r.rand(5..9) のようにする必要があります。でも1.9.3だと rand(5..9) のようにできるようになっています。少しのことですけど嬉しい改善点ですね…

Google Developer Day 2011 の Dev Quiz に挑戦した

初めてチャレンジしてみました!以下感想。 分野別 Web Game と 一人ゲーム をやりました。Web Game は jquery の click メソッドでなぜかクリックできなくてハマりました(イベント周りの知識不足)。また試しに CoffeeScript を使ってみたら慣れてないせいで…

Redcarpet2のざっくりまとめ

githubで使われているMarkdown用ライブラリRedcarpetが後方互換性のない version 2 になるみたいです。現時点のバージョンは 2.0.0b3 で、まだ本リリースではないようですが、これから使うなら2の方を勉強しておくべきだと思うのでまとめます。基本的にいつ…

RubyKaigi2011に参加した

RubyKaigi2011に当日スタッフとして参加してきました!前回のRubyKaigiは仕事でフルに参加することができず悔しかったです。 次回はちゃんと全部参加したいです><それかスタッフで参加するか。 Rubykaigi2010に参加した - おもしろWEBサービス開発日記 今…

Chapter 13 Spec::Expectations

the rspec book - Chapter 12 Spec::Example その1 - おもしろWEBサービス開発日記 the rspec book - Chapter 12 Spec::Example その2 - おもしろWEBサービス開発日記の続き。 BDD BDDのゴールの一つは正しい言葉を得ること。技術的なことのわからない人と…