Travis-ci環境からdebuggerは外しておけ

travis-proがRuby1.9.3-p194 => Ruby1.9.3-p327になってdebuggerビルドできなくてテスト落ちて右往左往した。

正しくやるべきこと

Travis-ci環境でdebuggerは要らないので外しましょう
http://about.travis-ci.org/docs/user/languages/ruby/#Exclude-non-essential-gems-like-ruby-debug-from-your-Gemfile
having trouble getting ruby gem debugger installed – Google Groups

debuggerのビルドにはrubyのヘッダーが必要で、ヘッダーはdebugger-ruby_core_sourceから持ってきてて、debugger-ruby_core_sourceがrubyのバージョンより遅れると、debuggerがビルド出来ない

なぜか外れない

外したつもりだけど外れないのなんで?

https://github.com/sanemat/soryu/blob/4a50db760fafce8b4a5dce2756b2559146d9e692/www.ohmyglasses.jp.travis.yml

Gemfileのgroup :development, :test に入ってたのを group :development に移した
でも、何か別のgemがdebuggerに依存してるぽくてtravis-ci環境でもdebuggerが入ってしまう

どうやって調べればいいのかよくわからん pry-* あたりかなーあやしいの
group :production, :staging これ悪さしそうな気がする なんだ :staging
bundler/capistrano が想定してるの:development, :test, :productionだけな気がする
なんでbundle のoptionってwithout指定なんだろう 激しくめんどくさい

暫定対処したリスト

暫定対処 現在2012-11-18

debugger1.2.2に上げるとdebugger-ruby_core_source1.1.5に上がりビルドできるようになる
$ bundle update debugger
debugger (1.2.2)
debugger-linecache (1.1.2)
debugger-ruby_core_source (1.1.5)

暫定対処1

Gemfileからdebugger消してもbundleすると何かが入れて、なおかつtravisで–without development productionなのにインストールしようとしてエラーになるので、Gemfileからdebugger消して、Gemfile.lock手動で編集して >< debugger, columnize, debugger-linecache, debugger-ruby_core_source消す ><
なんでこれで行けたんだ? と今となっては思うけど作業してる時は焦ってた

暫定対処2

debugger-ruby_core_source に Ruby 1.9.3-p327 のヘッダ追加してみた – そんなこと覚えてない http://blog.eiel.info/blog/2012/11/10/debugger-ruby-core-source-on-1-dot-9-3-p327/

みて eiel/debugger-ruby_core_source 指定してみたけどうまく行かなかった。後日取り込まれたcldwalker/debugger-ruby_core_source のgemではうまくいったから、自分のGemfile書き方がまずかったっぽい。debugger-ruby_core_sourceのpull request見ててこっちならうまく行ったので、別の人のforkを採用。

gem ‘debugger-ruby_core_source’, github: ‘hosamaly/debugger-ruby_core_source’, branch: ‘1.9.3p327-headers’
gem ‘debugger’

暫定対処3

上記現在2012-11-18に書いたもの

結論

Gemfileメンテナンスしないとよくわからなくなる
travis-ci依存度高いとtravisに振り回される
何がtravis-ciで動くべきで、手元のtestで何が動くべき、production, jenkinsで何が動くべき、で整理しないとだ〜

後日談

travisでrubyのバージョン指定すれば?

パッチレベルまで指定できない。Ruby1.9.3-p194のインスタンスにはp194しか入ってなくて、Ruby1.9.3-p327のインスタンスにはp327しか入ってないので、.travis.ymlのrvmの指定に1.9.3-p194まで書くと落ちる。before_scriptに – rvm install 1.9.3-p194 ってあらかじめ書いておけばいいけど、毎回rubyのビルドから始まる可能性がある、そういうの好みじゃない。

therubyracerもsegmentation faultになりましてね

travisでtherubyracer本当に要るんだろうか? 要るとしてもtravis-ciならnode使えばいい感だがそうも言ってられないので。ふぇぇ

gem ‘therubyracer’, ‘0.11.0beta8’
gem ‘libv8’, ‘~> 3.11.8’

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中