MAMPのMySQLにRailsを繋ぐ

MAMPを入れているので、MySQLを入れずにそのまま再利用したいぜ!と思ったのでやってみました。

まぁ別にRailsじゃなくてもいいんですけれど、一応それがしたかったので、そういう風にタイトル付けました。

Railsで素でMySQLに接続しようとすると、/tmp/mysql.sockがないよ!というエラーで落ちるので、ここに対してMAMPのmysql.sockのシンボリックリンクを貼ります。それだけです。

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Request Specsでチェックボックスがチェック済みが確認する

最初は、checkedという属性の値が”checked”だったらいいに違いないと思って、

find("input#hoge").checked.should == "checked"

って書いたら、そんなのないよ!って怒られた。

その後、こうだったらいいなぁと思って、

find("input#hoge").should be_checked

って書いたら、これがビンゴだった。
checked?というメソッドがあるようなので、これでいけるようだ。


読書会を開催してみての感想など。

今回は大都会岡山 Advent Calendar用の投稿です。

さて、今年の2月に岡山に引っ越してきて、早くも10ヶ月が過ぎました。

1日にそうだいが書いていますが、岡山は勉強会が多い!多すぎて、どのタイミングでやっても大体他のイベントと重なってしまうので、もうそれをわかった上で勉強会をやるしかありません。

勉強会は数あれど、自分の興味やレベルとミスマッチすると、参加してもなー…と思うことが結構あるからどうしたものか?と思ってました。まぁ興味のないものには出なければよいわけですが、自己研鑽を行いたい気持ちはあります。しかし、同じような技術を扱う勉強会が既にあると、勝手になんかやるのはマズいかなぁ…といろいろと考えてしまいます。

そこで、読書会をしてみることにしました。
これが思いの外よかったので、
どういう点がよかったのかについて、今更ながら紹介します。

確実にレベルアップできる!

勉強会って情報収集になるので、とても勉強になります。
とても勉強にはなるのですが、自分が知りたい内容とマッチしない場合や、自分には難しすぎる場合は聞いても訳が分からないまま終わってしまうということが結構ありませんか?

しかし読書会の場合は、自分が知りたい内容が書かれている本であることが前提であり、その内容を深く読んでいくことになるので確実にレベルアップできます。

わからない部分は気軽に教えあえる!

本を一人で読んでいると、いまいちわからない部分とかがあっても、とりあえず放置してしまったり、勘違いしたままになったりしがちです。
しかし読書会の場合は、一区切りついた時点で振り返りを行うため、わかる人にその場で教えてもらえたり、この技術ってどういうときに使うのか?についてディスカッションをすることができます。
そういう体験をするため、記憶として定着しやすく、忘れにくくなると思います。

ネタに困らない!

勉強会の場合は、発表するネタがないのでちょっと…という感じでなかなか発表者が現れないので、ネタを貯める意味で(?)開催時期が数ヶ月毎になってしまいます。しかし読書会だとネタに困りません。前回まで進んだところの続きからになるので、開催側が気軽に開催することができます。参加側も気軽な気持ちで参加できるかと思います(ほぼ定期開催なので)。

しかし読書会は疲れる!

みんなで交替で音読しながら、その都度、本の中のコードを写経していくのですが、すごく疲れます。
まるで何かの運動をした後のように…。
休憩を入れながらやっても、終わる頃には結構クタクタです。

ですが、やり遂げたという充実感が、そこにはあります。

まとめ:読書会は部活みたいである

読書会は、本を持っていないといけないので、ある意味敷居が高くなってしまうけれど、本に載っている技術に興味を持っている、ある程度のレベルの仲間で集まって技術を深めていくことができます。

興味のある人達が集まって、みんなで練習する。
まるで部活みたいだなーという印象です。
勉強会は同好会的、読書会は部活的という感じですかね。

この記事を読んだ皆さんも、何か読書会に参加、もしくは始めてみてはいかがでしょうか?

個人的に我が家で不定期開催ですが、メタプログラミングRuby読書会をやっています。
開催が決まったらATNDで公開、twitterで告知しますので、Rubyの技術を深めたい方は是非ご参加ください!

また、毎週火曜 19:00より、R社(テレポート岡山)でThe RSpec Book読書会を行っていますので、Rubyとアジャイルに興味のある方は是非ご参加ください。

さて、明日は@ryosmsの番です!


XPathでclass指定で要素を取る方法

Request SpecでXPathを使ってクラス名を指定して要素を取得しようとしたんですが、方法がわかったのでメモ。
まず、参考にしたサイトはこちら。

特定のclass属性を持った任意の要素にマッチするXPath

上記のサイトに書かれているようにRSpec側ではこう書く。

find(:xpath, "//*[contains(concat(' ',@class,' '), ' class_name ')]").should have_content "hoge"

みたいな感じです。
これでいけるわー、勝てるわーと思って、spec/supportフォルダ以下に、xpath_helpers.rbを作成。

# coding: utf-8
def find_by_class(tag, class_names)
  find(:xpath, "//#{tag}[contains(concat(' ',@class,' '), ' #{class_names} ')]")
end

ところが、これだと1つめにヒットした要素しか取れなかった…。
2つ目以降どうすんねんと思って調べたら、
page.all(:xpath, …)
という方法があることがわかったので、さらに修正。

# coding: utf-8
def find_by_class(tag, class_names, num=nil)
  if num.nil?
    find(:xpath, "//#{tag}[contains(concat(' ',@class,' '), ' #{class_names} ')]")
  else
    page.all(:xpath, "//#{tag}[contains(concat(' ',@class,' '), ' #{class_names} ')]")[num]
  end
end

1つ目の引数でタグ名を、2つ目の引数でクラス名を、3つ目の引数で何番目の要素かを指定するようにした。

これで勝てる。