-
Notifications
You must be signed in to change notification settings - Fork 0
#05 2014.05.24
- 日時 2014/05/24 (Sat) 13:00-17:00
- 場所 クレオ大阪北
- 告知 Shinosaka.rb #5 - Doorkeeper
- 内容 もくもく会
- 各自もくもく
先日 resque + resque-scheduler で、resque の web インターフェースに resque-scheduler のタブが表示されなかったので原因調査
※2014-05-24 現在
原因: resque 1.x に resque-web を入れてしまっていた
対策: resque 1.x は内蔵の server を使う、resque 2.x には resque-web gem を使う
-
resque は 2.x と 1.x がある
-
今現在 gem install resque すると 1.x が入る
-
resque 1.x
-
resque-web 内蔵
-
config/routes.rb に以下を書くと http://localhost:3000/resque/web で管理画面にアクセスできる
mount Resque::Server.new, at: "/resque/web"
-
resque-web が内蔵されているので、resque-web gem を入れるときちんと動作しなくなる
- resque-scheduler を入れても、Scheduler のタブが表示されないなど
-
-
resque 2.x
-
resque-web を内蔵しなくなり、resque-web という gem ができている
gem "resque", "~> 2.0.0.pre.1", github: "resque/resque"
-
今現在、最新の resque 2.x + gem install で入る resque-web の組合せは以下のエラーで動作しない undefined method `workers' for Resque:Module
-
最近、既存プロジェクトの改修業務が中心なので、リファクタリングの方法を学習
参考書籍 リファクタリング:Rubyエディション
感想
-
リファクタリング前後のコードが記載されているので良いが、リファクタリングにはテストが必要。
-
テストコードが本書にはないので、自分で書いて進めていった。
-
初心者には難しいかもですねー
-
中級者以上であれば、良書になるはず!
先日リリースした、pinzolo/redmine_persist_wfmt のフィーチャーテストを書いてました。ほとんど調査とエラー対応だったので、出来たシナリオは3つのみ
実績
Add rspec settings and first test scenario · e0587a9 · pinzolo/redmine_persist_wfmt
色々ハマったところ
- Rails が定義されていないとか、RSpec の config.fixtures_path がないとか
- 正しく上位の spec_helper が読み込めていなかった
- 読み込ませないと rspec-rails が動かないので、あったら読み込むという方針は撤回
- Capybara で特定要素の HTML が取得できない
-
page.evaluate_script("document.getElementById('#{id}').innerHTML")
みたいな力技が必要
-
- admin ユーザの作成されるタイミングを勘違いしていた。DatabaseCleaner で削除されるので毎回作成しなければならない
- そしてなかなか管理者ユーザが作成できない
-
login
,password
,admin
はUser#new
時に指定しても無視されるからだった
-
- そしてなかなか管理者ユーザが作成できない
-
I18n.locale
はen
になっているのに、なぜかボタンなどの UI が日本語で表示されてしまうので、Capybara でのボタンクリックなどがいちいちめんどくさい。Redmine がもっと id ふってくれていたらいいのに-
find(input[name=login])
みたいな変更に弱そうなセレクタ満載になった
-
追伸
ちゃんと帰りました。
だいぶ載せるの遅れてしまいました。。。 以下の問題を解いていました。 https://github.com/yusabana/name-index
- カタカナ文字列の配列を渡すと、ア段の音別にグループ分けした配列を返すプログラムを作成せよ。
- 各要素は50音順にソートもすること。
- IN: ['キシモト', 'イトウ', 'ババ', 'カネダ', 'ワダ', 'ハマダ']
- OUT: [ ['ア', ['イトウ']], ['カ', ['カネダ', 'キシモト']], ['ハ', ['ハマダ', 'ババ']], ['ワ', ['ワダ']]
https://github.com/yusabana/name-index/blob/master/name_index.rb
- 受け取った時点でソートするのが肝。
- 最初はUnicodeによるマッチングするしか無いのかとちょっとRangeがいい感じで使えた。http://docs.ruby-lang.org/ja/2.1.0/class/Range.html
> print ("あ"..."か").to_a
["あ", "ぃ", "い", "ぅ", "う", "ぇ", "え", "ぉ", "お"]
> print ("さ"..."た").to_a
["さ", "ざ", "し", "じ", "す", "ず", "せ", "ぜ", "そ", "ぞ"]
> print ("や"..."ら").to_a
["や", "ゅ", "ゆ", "ょ", "よ"]
> print ("ワ"..."ン").to_a
["ワ", "ヰ", "ヱ", "ヲ"]
他には、正規表現を使って最初の一文字目を比較するのでも良さそう。 Unicodeのカタカナの並び順は比較的あいうえお順で並んでいるので。 http://pentan.info/doc/unicode_list.html
> !!("リ" =~ /^[ラ-ロ]/)
=> true
> !!("ロ" =~ /^[ラ-ロ]/)
=> true
> !!("マ" =~ /^[ラ-ロ]/)
=> false