AgileShibuya主催のCoderetreatのランチスポンサーをします
永和システムマネジメントは4/28(土)に開催される"Coderetreat in Drecom powered by AgileShibuya"のランチのスポンサーをします。ゆっくりお弁当を食べながらプログラマー同士の親睦を深めてくださいね。Happy Pair Programming!
IPA「非ウォーターフォール型開発の普及要因と適用領域の拡大に関する調査 ~国内の中規模及び大規模開発プロジェクトへの適用事例調査~」の調査報告書が公開されました
IPAより弊社が委託を受けて調査を実施いたしました「非ウォーターフォール型開発の普及要因と適用領域の拡大に関する調査 ~国内の中規模及び大規模開発プロジェクトへの適用事例調査~」の調査報告書が公開されました。
『アジャイルサムライ』原著者によるトレーニングを開催します
『アジャイルサムライ』の原著者であるJonathan Rasmussonの来日に合わせて、オープンなトレーニングを3/22(木)と3/23(金)のそれぞれで実施します。
スキニー(ぴったり)なシステム開発のススメ
12月7日、「スキニー(ぴったり)なシステム開発のススメ」というタイトルでセミナーを開きます。
tapp v1.2.0 をリリースしました
七夕ではありませんが、tapp v1.2.0をリリースしました。
asakusa.rb 第155回
asakusa.rb 第155回
今日は yokohama.rb とフランスから新規参加の人が4名集まって、だいぶいつも通り(特にゲストをケアすることなく好き勝手やってる様)の asakusa.rb だった
- github api v3 でも眺めますかねえ
- "まず oauth2 トークンを作るのがだるいなー", "これでも楽になってるんだって"
- octokit を使えばだいたい取れそうだけど、まだ全部はカバーしてないから pull req しないと。
- takkanm, heroku meetup の続きをやってよ
- kensa test とか意味わからないよねー
- パラメータの salt って全然 salt じゃないし、password だろこれ
- じゃあ、次は gem でも眺めながら DIS りあいしますか
- Logger で最新の少しだけを残すというのをやりたいんですが -> auto_truncated_logger
- logger いらないなら、FILE::NULL 渡せばいいじゃないですか
- rails_log_autotruncator みたいなことをやりたいなら、LogDevice#shift_age_log をオーバーライドすればいいんじゃないの
- IRC ボットを沢山作ってます
- 安全に終わるように終了時には Thread#join してから終わるようにするのがいいんじゃないの
- tDiary というものが
- まずこの部分が何やってるのかわからないなー
- そういえば Kernel.exec(Array) の件、やっぱり何か変ですね
- JRuby で Kernel.exec(Array) を使って、Array の一つ目が symlink でかつ、二つ目以降のオプションを symlink 先が解釈できない時に落ちるなこりゃ。
- CRuby は Kernel.exec(String) でも Kernel.exec(Array) でも大丈夫
- 後で登録しておきます。
こんなところかなあ、反対側では RubyKaja とか、みなと Ruby 会議とかるびまの打合せをやってたみたい。nahi さんに DIS ってもらった場所は後で直しておきます。
日記に残しておかないといけない4月の出来事
2つほど今日処理しましたが、まだまだあるので書いておきます。
- Lean Startup Camp Tokyo Spring 2012に行った
- リーンスタートアップ読んだ
- Rails Tutorialのいいところ
- 新人がやってきた
- AndroidのZaimを1ヶ月使ってみたけどこりゃだめだ
- 未来日記最終回の数日後になぜか家に漫画がたくさんあった
- hsbtにWeb日記勉強会をやってもらった
Kernel#exec の引数による挙動の違い
Kernel#exec の引数による挙動の違い
Ruby の Kernel#exec は 2 つの呼び出し方があって、一つは Kernel#exec(program, *args) でもう一つは Kernel#exec(command) だったりする。どちらも似たような動きをするかと思いきや、前者はシェルを経由せずに動作して、後者は経由して動作する。
実はこの違いが原因で jenkins.rb が gentoo のような shell によるラッパー経由で起動する java コマンドを使う時に上手く動かないという現象があったので pull request して直したのであった。
上記の件とは別に JRuby の Kernel#exec も何か怪しい挙動をしたりしていて、問題を分けるのにちょっと混乱したんだけど、ひとまず jenkins.rb の方は直ったみたいなので gentoo の人も安心して jenkins プラグイン開発に勤しんでください。
Rails勉強会@東京に参加しました
子供を連れてきてうるさくしていたのが私です…本当にすみませんでした…
もうちょっと持つかなぁと思ったのですが、子供1人は無理ですね。次回はみんな子供を連れてくればいいのでは?(ごめんなさい)
参加したセッションは、「Rails Engine」と「テストについて」の2つでした。
Rails Engine
Rails Engineについて一家言あるような人はいなかったので、RAILSCAST #277 Mountable Enginesを淡々を写経しながら議論していました。
Q. EngineにするのとRailtieを継承したクラスを作ることの違いは?
EngineはRailtieを継承している。そして、EngineになるとRackのミドルウェアになる。 なので、Generatorを拡張するようなものはEngineにせずにRailtieを継承して作るのもあり。
Q. assetsの下が他のEngineのassetsに影響したりしないの?
明示的に読みこまない限りない。たとえば、RailsAdminはbootstrapを使っているけど、それがRailsアプリケーションに影響を与えたら大変なことになる (今はアプリケーション自体もEngineとして動作している)
Q. exception_handler.rb のファイルパスが間違ってますよね?
ascii castの日本語版だと間違ってるみたいです。あと、ファイルの中の改行もそのままだとsyntax errorなので一行に書きましょう。 (原文では正しくなってます)
おまけ
Engineをrails newしたあと、.gitignoreにGemfile.lockが足されていたほうがいいような気がするんですがどうなんでしょ。
テストについて
だいたいmoroへの質問コーナーになってしまっていて、もうちょっとやりようがあるんじゃないかなぁと思ったのでした。
まとめ
実は初参加だったのですが、勉強会らしい勉強会に久し振りに参加したような気がします。 進行役 & 会場係の@takkanmありがとうございました。
heroku meetup 4 に参加してきた
heroku meetup 4 に参加してきた
今日は新入社員挨拶があるという heroku meetup に参加してきた。新入社員の笹田さんが heroku で何をやっていくかみたいな話から始まって、
というアドオンプロバイダの人から製品や技術の紹介が続いてだいぶ面白かった。中でも papertrail + metriks という組み合わせでベンチマークを取るというアイデアはだいぶ良さそうなので今度やる。懇親会で話した時にさらに travis で jruby や 1.9, 1.8 で動かすと matrix build でベンチマークが取れるからバンバンやーって言ってた。
オレは LT で拙作の heroku-invoice を紹介しつつ、heroku client を irb で使う方法などをデモしたんだけど、発表しながらキーボードを叩くというのは難しいねえ。とりあえずスライドはこちらになります。
話せなかった部分で補足しておくと
- heroku-client で認証済み client インスタンスを作ると、そのインスタンスは api.heroku.com に自由にアクセスできるようになる
- invoice を提供しているのは実は api.heroku.com/invoice/current のような URL である
- なので、heroku-client を使えば invoice 情報は自由に取得することができる、他にもパスワード変更や api token の再生成などやりたい放題になる
- 自分は heroku-invoice とぱしりの jenkins を組み合わせて、invoice 情報を経理部門に送りつける仕組みを構築している。だいぶ便利。
といったところ。今日の heroku meetup は技術的に深い話もだいぶ聞けたし、懇親会で海外ゲストと英語+(knsmr さんの英語ヘルプ)で発表以外の色んな話も聞けたのでだいぶ楽しかった。オーガナイズしてくれた @ayumin, @mortenheroku さんお疲れ様でした!
Mongoid::Document で to_json したらはまった話
Mongoid::Document で to_json したらはまった話
まだどのコミットが原因か追いかけてないけど include Mongoid::Document したモデルで to_json すると _type が reject されてしまう現象に半日はまってしまった。これを _type も得られるようにするには以下のように methods オプションを to_json に渡すと何とかなる。
instance.to_json(methods: :_type)
先の initialize と言い、Mongoid を使う時は initialize を上書きするだとか、_type に特別な意味を持たせて自前で何か使うとか、そういうのはやめた方が良いってことですね。ばたり。
WEB+DB PRESS Vol.68が届きました
いつもありがとうございます!今号は連載終了と連載開始がたくさんあって、年度の変わりを感じました。
Rubyわくわくナビはかなり好きだったのに終わってしまうのですね。お二人の次回作に期待しております!
Mongoid::Document で initialize を overwride したらはまった話
Mongoid::Document で initialize を overwride したらはまった話
今のプロジェクトで使っている Mongoid のバージョンを 2.2 系から 2.4 系にバージョンアップという作業をしていたら、以下のような謎の現象にはまってしまった。
% cat app/models/user.rb
class User
include Mongoid::Document
embeds_many :items, inverse_of: :user, class_name: Item::Base.to_s
end
こんな User と
% cat app/models/item.rb
module Item
class Base
include Mongoid::Document
def initialize(*args)
super
p args
end
end
end
こんな Item があったとして以下のように user.items を作ろうとすると…
>> User.create!
=> #<User _id: 4f8e2a1aff2b33e552000001, _type: nil>
>> User.first.items
=> []
>> User.first.items.create({foo: :bar})
[{:foo=>:bar}, {}]
というように謎のハッシュが initialize にわたって来てしまう。上の例は *args としているのでエラーにはならないけど、元のコードは args = {} と引数を一つとして受け取るので ArgumentError を起こして落ちてしまっていた。これは 2.3.0 の 2327c196 で変わった挙動で、initialize の引数を二つ受け取るようになったのが原因らしい。
実はここまでたどり着くのに1日くらいかかっていて、コントローラやら画面の JavaScript から範囲を狭くして、やっと Mongoid のバージョンアップが原因ということにたどりついたんだけど、まさか embeds_many な モデルの initialize の挙動が変わっているとは思わなかったよ…ばたり。
asakusa.rb 第154回
asakusa.rb 第154回
今日は参加者が6人とだいぶいつもな感じに戻ってきたんだけど、だいぶ勉強になる回だった。
- QCon Tokyo の MongoDB のスライドでも眺めてぐだっとしましょうか
- MongoDB といい、Mongoid といい使い込もうとするとバグにはまるよねえ。
- Sharding している時に PRIMARY のインスタンスが丸ごと落ちると SECONDARY が昇格しないんすよ
- nahi: 卜部さんが MongoDB とかすっかり Web 系になっちゃって。
- Jenkins Plugin の中身についてもう少し詳しく
- javadoc 大変ですよねえ、ネットワークが繋がってないとバタリだし。
- JavaOne Tokyo で発表してきた内容を少し
- Java の人に Ruby を紹介するなど
- 赤黒木というアルゴリズムを使って JRuby とか Scala のベンチマークを取ったりしました
- Java 7 で switch-case でも文字列が使えるようになったんですよ
- えっ、今まで使えなかったんですか
- Ruby の $SAFE の 1-4 の違いはみんな言えますよね?
- 4 を担保するのはしんどいので tDiary は使うのをやめてください
- Hiki とか qwik とかどうなってるのかねえ。Hiki は壊滅的だよね。
- jenkins.rb のバグってなに?
- Kernel.exec に Array と String を渡した時の挙動が違って、jpi コマンドが動かないので String になるようにしたんですよ
- まてそれは JRuby のバグなのでは
- えっ
だいぶ Java の文字が躍っているように今日は nahi スペシャルだった。来週はオレの gem を見ろ!特集らしいよ。
Jenkins Plugin 勉強会を開いた
Jenkins Plugin 勉強会を開いた
ただし社内に限る。色々書こうかと思ったけど、kenchan が良い感じにまとめてくれたのでそっちを見てください。→ Jenkins Plugin(JRuby)の勉強会をしました - KenchanDiary
jenkinsci/jenkins.rb は最近 Ruby 用の Jenkins 関連のツールがまとめられたものなので、Jenkins を頻繁に触る Rubyist なら一通り目を通しても良いと思います(ただし JRuby ワールドが広がっているので心しておくように)
node ほにゃらら関連や Jenkins とのデータのやりとりについてはまた @nahi さんを捕まえて聞いておきます!







