最近は cygwin 環境で新しい Ruby を動かす遊びをしてるのですが、どうにも CI 環境がないみたいので、AppVeyor につくってみることにしました。
And there is no CI for cygwin. Contribution is welcome.続きを読む
Bug #15465: Tests failed on i386-cygwin - Ruby trunk - Ruby Issue Tracking System
Ruby の勉強の一環で簡単なライブラリを書いてみた。
Repology といういろんなディストリビューションのパッケージのバージョンを比較できるサイトがあって、これが API を提供しているので、それの client を書いてみることにした。
感想を言うと、認証がない & GET しかないので、実装はかなり楽だった。
Ruby で HTTP をしゃべる時は Faraday を使うのが良さそうということで乗っかることにした。
faradayですかねえ。しかしこれはただのラッパーなので、バックエンドは標準ライブラリのnet/httpなことが多いと思いますけども。
— FUJI Goro (@__gfx__) 2018年12月31日
Faraday の使い方は qiita-rb を参考にした。(ちょっと古いみたいだけど。)
あとは spec をひととおり書いて、rubygems に upload するまでやった。
冬休みになにかしらのアウトプットが出せてよかったです。(小並感)
CI で docker イメージをつくらずにスクリプトで常に最新の chrome をダウンロードしてたりすると、version up された時に CI がこけるようになったりするので、できれば version 指定しておきたい。(まあ、docker イメージをつくっておけよという話ではあるが。)
http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages を見ると、古いバージョンが置かれているかはわかるが、"deb pool main google-chrome-stable" とかでググると、ミラーが微妙に同期されていないせいか、かなり古い chrome も見つかったりするので、そちらからダウンロードしてみると良いかもしれない。
RubyKaigi で熱的なものをもらった勢いで patch を送ってみたところ、いつの間にか取り込まれてた。
続きを読むあまりに GitHub を使った開発に慣れきってしまったため、バグレポートやパッチは「まずメーリングリストに登録して」みたいな文章を見るだけで、一気にハードルが高く感じてしまって、やる気がなくなってしまう。
そういうものに限って、世界的に使われているデファクトスタンダードだったりするため、対応してもらわないと、こちらの手間がものすごくかかったりする。
たまに GitHub への mirror や、repository 自体の公開をしてくれているものはあるけど、pr/issue が禁止されていたりするため、結局ソースコードビューワ的な効果しかない。それでも latest tarball しかリンクしてないものに比べれば、だいぶありがたい。
やっぱり歴史が古いものほど開発プラットフォーム移行の腰が重くなるのはわかるが、現代においては「気持ち的にはクローズドソース」だなあと感じてしまうことがある。
株式会社はてなに入社しました
ボタンをクリックするなどして、画面が変わったことを待ってから、テストをしたい場合に、処理完了を待つ snippet がぐぐるとけっこうでてくる。
要するに jQuery.active に通信数が保存されているので、これが 0 になるまで待つというのが定石らしい。
ところが Rails5 だと脱 jQuery 化しているようで、これだと完了を検出することができない。
公式の issue でも言及されているようで現時点では解決されていないようである。
仕方ないのでテストが成功するまでループするやっつけコードを使うことにした。
def wait_for Timeout.timeout(Capybara.default_max_wait_time) do loop do break if yield end end end wait_for do actual == expected # RSpec の expect(...).to で書きたい...。 end
joker 氏のやつを見て、自分もがっつりリモートワークをやりだしてから 1 年以上経つし、そろそろ振り返りをしてみるかと思った。
続きを読むタイトルそのまんまです。
環境は以下の通り。
$ uname -rs CYGWIN_NT-10.0 2.8.2(0.313/5/3) $ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-cygwin]
bundle install すると extension のコンパイルでコケます。
g++ -I. -I/usr/include/ruby-2.3.0 -I/usr/include/ruby-2.3.0/ruby/backward -I/usr/include/ruby-2.3.0 -I. -DHAVE_UNICODE_UCNV_H -ggdb -O2 -pipe -o transliterator.o -c transliterator.cpp In file included from /usr/include/unicode/utypes.h:38:0, from /usr/include/unicode/translit.h:15, from transliterator.cpp:5: /usr/include/unicode/umachine.h:347:13: error: 'char16_t' does not name a type typedef char16_t UChar; ^
char16_t は C++11 の機能であるため、g++ に -std=c++11 を渡さないといけないようです。 というわけで bundle config でオプションを設定する必要があります。(これを知るのにけっこう時間を食った。)
$ bundle config --local build.charlock_holmes --with-cxxflags=\"-std=c++11\"
bundle config の build.* は extconf.rb 内で with_config したものしか受け取れないのかと思ってました。
[追記] with_config してましたね。
$CXXFLAGS = (with_config("cxxflags", arg_config("CXXFLAGS", config["CXXFLAGS"]))||'').dup