はちゅにっき

こっちのブログはまったり更新

Ruby

Grape on Rack with ActiveRecord

「Ruby で API サーバを書くなら Grape がいいよ。」 ってよく見聞きするんだけれど、ほぼ + Rails の構成。 食わず嫌い的な感じで Rails を避けている (訳じゃないんだけど) ので、Rails 臭がする程度に Grape を Rack 上にマウントしたらどうなるのかなー…

Ruby で is_numeric

PHP の is_numeric( ) みたいなのを Ruby でやる場合はこんな感じでいいのかなー? def numeric? (value) return true if value.kind_of?(Numeric) !!(Integer(value) rescue Float(value)) rescue false end これで、以下のようにテストしてみたら、だいた…

Enumerable#each_with_object でハマった

[1, 2, 3].each_with_object(Array.new) do |i, memo| memo += [i, i * 2] end # => [ ] あれ!? [[1, 2], [2, 4], [3, 6]] になると思ったのに!? Ruby - Enumerable.each_with_object の使い道 - Qiitaqiita.com Ruby - injectとeach_with_objectって何…

ブロック内でのみ有効な Redis のインスタンスを起動したい

最近は Ruby をちょくちょく使っています。 Ruby で Redis を使ったテストを書く場合は fakeredis や mock_redis を使うのが一般的かと思いますが、ちょっとだけ Fake や Mock ではなく本物の Redis を使いたい時ってありませんか? 例えば Redis やその周辺…

mp3 の ID3 Tag をファイルパスに基づいて更新する

アーティスト名/アルバム名/01-曲名.mp3というファイルパスのルールで保存してある mp3 に対して、ファイルパスに基づいて適切な ID3 タグを一括で設定する Script を Ruby の taglib-ruby を使って書いてみました。taglib-rubytaglib-ruby は C++ で書かれ…

String#to_s と 文字列リテラル内の式展開と - その3

もうここまでくるとただの興味本位。 文字数・桁数によってどんな感じに処理時間が増加するのかを調べてみました。 今回は桁数を 1桁から100桁まで増加させたときの処理時間の変化。 グラフにしたらこんな感じ。 ノイズっぽいデータが一部あるけれど、String…

String#to_s と 文字列リテラル内の式展開と - その2

Float と Symbol についても気になったので追加してみました。 どれも予想通り Object#to_s の方が "#{Object}" の書き方よりも早いですね。 Float#to_s のコストは他と比べると比較的高いんですね。 といっても 100万回やってこの値なので、本当に気にする…

String#to_s と 文字列リテラル内の式展開と

やっぱ、こういうものですよね。 String#to_s (文字列を文字列にする) か Fixnum#to_s (数値を文字列にする) かでも、当然だけれど違いは出るんですね。

ActiveRecord で Numeric 型を使いたい!

うーん、float 型で作って ALTER TABLE すればいいのかなぁ? あれ、でもそうしたら倍精度型になっちゃったよ? こんなときは、ActiveRecord::ConnectionAdapters::PostgreSQLAdapter あたりを見てみよう! そんな感じで見てみると、decimal という型を発見…

ActiveRecord の Migration で bigint を

つかい。。。たい? そもそも bigint が本当に必要なのかを先に考えるべきじゃ。。。 とか思いつつも 「移行元の DB が bigint なんだよ」 というわけで、bigint を使うことに。 あれ?ところで (Rails とかで)、ActiveRecord 使って migration するとき、bi…

Rails の環境を整えてみる

「Perl なんていう言語は、もう終わっているんだからいい加減あきらめて PHP にしなさい」 と、イロイロとぼろくそにいわれたので、Rails の門戸を叩いてみることにしました。*1 というわけで、今回は Ruby on Rails の環境構築のお話。 Linux での環境を整…

"gem install pg" したらエラーがでた

# gem install pg Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb install pg extconf.rb:1:in `require': no such file to load -- mkmf…

rake を使って CodeRepos から Checkout する

MENTA や NanoA といった最近話題の WAF や、HTTP::Engine といった CodeRepos で開発が進められている最近話題のモジュール群は、ソース読むだけでも良い勉強になるので積極的に Checkout したり、Update して、なるべくソースを追いかけまわるよう、頑張っ…

require されているモジュールのバージョンを知りたい!調べたい!

Perl の場合 Google さんで検索すれば1件目にはHITするのに、Ruby はまったく HIT せず。 とんちんかんな検索結果ばっかりで困った。。。 う〜ん? なんだかんだで、Perl コミュニティの大きさって偉大だなぁ。 ゴミ記事ばっかり量産しているこんな blog で…

正規表現ではまる

Perl print "hogehoge\n\n" =~ /^\n$/ ? "true" : "false"; #=> false Ruby p "hogehoge\n\n" =~ /^\n$/ # => 9 むむむ?Perl だと false なのに、Ruby だと true になる。 なんで? と思っていたら、初めての Ruby に書いてあった。 Rubyでは「行頭≠文字列…

Rakefile に頼りすぎないようにしましょう

rake って? 「make の ruby 版」 へー。使い方は Rake http://www2s.biglobe.ne.jp/~idesaku/sss/tech/rake/ に書かれている内容で、ほぼ使うことができました。 最初に Rakefile を見たときは、Makefile とは違う「何か」のように思えましたが、よくよく読…

XML を Parse したり書き出したりしたい

REXML を使って簡単にできました。 の前に。 no implicit conversion from nil to integerとかいうエラーに悩まされたらhttp://redmine.ruby-lang.org/repositories/diff/ruby-18/lib/rexml/formatters/pretty.rb?rev=19511を見て、131行目付近を書き直して…

Perl でいうところの $PERL5LIB は Ruby でいうところのなんなのさ

よく分からないタイトルでごめんなさい><Perl で 独自に作ったり、ダウンロードしたライブラリやモジュールを利用する場合、パスを通すために perl のスクリプト自体に # 相対パスはあんまりよくないかも! use lib qw( ./lib ); # かっこよく use FindBin…