blog.sowatchasayin

Rails etc.

Showing posts with label ruby. Show all posts
Showing posts with label ruby. Show all posts

RubyConf2010(1)

RubyConf 2010に参加しました。
Ruby界最大の国際カンファレンスです。
網羅的なレポートは書けないので、気になったトピックについてのみ漫然と記しておこうと思います。

Dave Thomas - Keynote
Dave Thomasの基調講演はRuby10年史、3つのチャレンジー自分とは違う誰かをインスパイアすること、自分達を多様化すること、レールを外れることーについてでした。

発表の中で気になったのは、オープンソースの世界の女性の少なさはコミュニティの文化に由来するところもある、という指摘。いわゆるハッカー文化/倫理の、自分たちは「メインストリーム」から外れた存在である、という自己定義の内に、女性をそのメインストリームとみなす価値観が含まれている、という指摘はもっともだと思いました。自分がコミュニティの価値観から外れる存在であった時の居心地の悪さは、恐らくこのブログを読んでいる人なら感じたことはあると思います。

そして、これは日本でも起こっている現象かと。
向こうで言うハッカー倫理にあたるものは、こちらでは「リア充」って言葉になると思います。
リア充」って表現もハッカー倫理と同じように女性への特定の視点(もしくは視点自体の意図的な排除)を含んでいます。ハッカー倫理的なものと違って、こちらではプログラマー=「非リア」という自己定義は意図的なものではありません。でも、それを否定しない雰囲気はありますよね。そういうラベル付けを受け入れてしまっていることが、自分のコミュニティの多様性を損ねているという点は認識すべきです。

ずっと感じていた違和感をうまく形にしてくれたキーノートでした。
これを機にコミュニティの多様性について考えてくれる人が増えると良いのですが。

Enumerable.all?は空だと常にtrueを返す

ううむ…空集合の全てって一体何だ?

irb(main):001:0> [].all?{false}
=> true
irb(main):002:0> [1].all?{false}
=> false


そして、安易なソリューション。

class Array
def not_empty_and_all?(&block)
return false if self.empty?
self.all? &block
end
end


Enumerable - Rubyリファレンスマニュアル

ArrayのjQuery的な挙動をRubyで

あの勝手にmapしてくれる感じをRubyでも…。適当、かつ冗談です。


module Jq
def method_missing(method_name, *args)
self.map{|a|a.send(method_name, *args)}.flatten
end
end

class Array
include Jq
end


こういうことができます

User.all.articles.comments.body
=> [コメント本文全部]

やっちまった!


setup do
#ここにコントローラのコードを書いてしまった
end

Fakerとfactory_girlで偽物大量生産

適当なデータを作るときのお供に。
factory_girlと組み合わせて便利でした。

これが

Factory.define :message do |f|
f.title Faker::Lorem.sentence
f.body Faker::Lorem.paragraph
end


こうなります!

>> y Factory.build :message
--- !ruby/object:Message
attributes:
created_at:
body: Quasi ab fuga reprehenderit quia. Nostrum laud...(以下略)
title: Alias dolor velit ut et vitae magnam aut non.
updated_at:
recipient_id:
sender_id:

適当なデータが入ってくれますねー
他にもメールアドレス、名前などいろいろFakeしてくれます。

実際はこんな風に使いました。

@a_to_b = Factory.create(:message, :sender_id => @Aさん.id, :recipient_id => @Bさん.id)
@c_to_d = Factory.create(:message, :sender_id => @Cさん.id, :recipient_id => @Dさん.id)


悪くないす。
http://rubyforge.org/projects/faker
Faker: Quick “Fake Data” Generation in Ruby

shouldaの結果を読みやすくするgemを作りました

shouldaでautotestしてると".FE"しか出ないのが嫌でした!なので、gemを作りました。

http://github.com/fujimura/speak_your_mind

実行結果が全部テストメソッド名で出るようにしました。例えば

context "Test" do
should 'success' do
assert true
end

should 'fail' do
assert false
end

should 'error' do
raise
end
end

を走らせると

E Test should error.
F Test should fail.
. Test should success.

と出てくれるようにしてあげました。
私はspecが全部字で出てくれないと心配になってしまうので、これで安心です。
元々自分用だったんですが、gemにしました。gemにすればどこでも使えるから。

中身はtest/unitの出力部分のラッパーです。コンソール用出力の部分でmediatorとか使われてて、コード追うのが大変でした。

bash to rush

Rubyっぽいbash。まじですか。
Rush
rush is a replacement for the unix shell (bash, zsh, etc) which uses pure Ruby syntax.

確かに、BashのUI(interfaceなのは間違いないよね)はたまにヒドイ。Rubyにしたくなる気持ちはわかる。
しかし、、、これはやっぱりきもい。
myproj.ls
myproj['app/models/my_model.rb'].vi
まさかのリモートアクセスもできます。

ここで知りました。
Blink #1 - The first in a series of Link-Blogging posts

配列おまとめyield

def お徳用(商品)
  return if 商品.length == 0
  if 商品.length >6
    [商品[0..5]] + お徳用(商品[6..商品.length])
  else
    [商品[0..5]]
  end
end

これを読んでおいてよかった。と思った瞬間。
(とはいえ、まだ全部読んでない)
The Little Schemer, 4th EditionThe Little Schemer, 4th Edition

The MIT Press 1995-12-21
売り上げランキング : 3390

Amazonで詳しく見る
by G-Tools


できた!と思ったら、each_sliceなんてものがあるのか…

Author

Fujimura Daisuke
http://fujimuradaisuke.com

Labels