2014/05/29

drone.io を試してみた

普段は Travis CI で CI を回してるんだけど、drone.io もよいという話なのでちょっと試してみた。

作業の流れ

右上の New Project を選んで
リポジトリを選択。Github の他に BitBucket と Google code にも対応している。
ビルドしたいリポジトリを選んで
言語を選択。Ruby はまだ beta らしい。
ビルドスクリプトを設定する。シェルスクリプトを書けばいい感じかな?
基本形ははじめから入力されているので、このまま行ける。
更に周辺の設定を追加して Save → Build Now
ビルドが開始して、
結果が表示される。
こんな割と簡素なメールが飛んでくる。
README.md などに貼るバッジも用意されている。

気になったとこ・所感

Rubyのバージョンは現時点では3つしかなく、Ruby2.1.0以降はまだない。
それから、言語のバージョンがひとつしか設定できないので、Travisのようなマルチバージョンでのテストができないっぽい。どっかから設定できるのだろうか?
ビルドの速度は速い気がする。golangだからか?
ビルドスクリプトはわりと何でも出来そうなので、シェルスクリプト書けるならかなり柔軟性がありそうだ。
設定ファイルをリポジトリに置かないのは余計なものを置かなくていいし、ブラウザ上で完結するので便利だけど、皆で知見を共有しづらいのじゃないかな?

言語のバージョンと環境変数のマトリクスが Travis の一番の魅力なので、それが簡単に出来ないならばあまり切り替える魅力は今のところないかなぁ
ほんとに軽く触っただけなので、こうすればいいよとかあったら是非教えて下さい。

2014/05/23

[解決編]UbuntuをアップグレードしたらRedmineでRMagick関連が動かなくなっていた

先日の tail -f pinzo.log: [未解決]UbuntuをアップグレードしたらRedmineでRMagick関連が動かなくなっていた の解決編。

原因調査

まず、何を基準にエラーとしているかを調べる。
該当のURLは /admin/info なので、redmine/app/views/admin/info.html.erb を見るが、それらしい箇所はない。
view になければ controller だろうということで redmine/app/controllers/admin_controller.rb を見る。
あった、単に Magick という定数が定義されているかどうかで判別されているみたいだ。

なぜ定義されていないのか?

RMagick は redmine/lib/redmine.rb で明示的に require されていて、エラーを握りつぶされていた。これでは、ログにはでてこないわけだ。
というわけで、状況再現のためにこちらも require してみる。
% bundle exec rails c production
irb(main):001:0> require 'RMagick'
LoadError: libjpeg.so.62: cannot open shared object file: No such file or directory - /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0-static/rmagick-2.13.2/RMagick2.so from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/rmagick-2.13.2/lib/RMagick.rb:11:in `<top (required)>' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from (irb):1 from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands/console.rb:47:in `start' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands/console.rb:8:in `start' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
libjpeg.so.62 がないのが原因のようだ。

解決方法

libjpeg.so.62 は libjpeg62 をインストールすればいいらしい。
aptitude install libjpeg62
あとは、passenger を再起動したら・・・・

直ったーーーーーーー

2014/05/22

ブログデザイン変えた

このブログのデザインを変えたので作業メモ。
すっきりしたデザインになってよろしい。

独自スタイル

headタグに下記を埋め込んで終了。せっかくなので少し修正した。
Github Pages 便利。
<link href='http://pinzolo.github.io/blog/style.css' rel='stylesheet' type='text/css'/>

ソーシャルボタン

以前は blogger のオプションを使っていたんだけど、はてなブックマークなどは自分で埋め込まなきゃいけないので、忍者おまとめボタンに移行した。便利だなコレ
最初は何度更新しても表示されなかったが、Chrome の AddBlock Plus にひっかかってたからだった。
ホワイトリストドメインに mkt-sys.jp を追加したらあっさり表示された。
しかし、とういことは AddBlock Plus 使っている人には見えないということか、しばらく様子を見る。

コードハイライト

本格的にハイライトしたい場合は Gist を使うので、手軽な Code pretty を使用してる。
これまではブログパーツだったけど、新デザインだとエリアが表示されてしまうので、直接埋め込んだ
<!-- ヘッダに -->
<link href='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css' rel='stylesheet' type='text/css'/>

<!-- bodyの閉じタグ直前に -->
<script src='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js' type='text/javascript'></script>
しかし、ハイライトされていないっぽい。原因不明。→2014-07-03: 有効にできた

AdSense

一応埋め込んで放置していたんだけど、1月に申請して未だに申請が通っていない。
俺の何かがおかしいんだと思うけど、よくわからん。
でなぜかさっき承認のメールが届いた。ウィジェット置いていたつもりが置けていなかったからのようだな。
金になるようなブログじゃないけど一応置いてみる。

2014/05/21

Ubuntu12.04のJavaをアップデート

さくらVPSのUbuntu12.04のJavaを更新したので作業メモ。
% add-apt-repository ppa:webupd8team/java
% aptitude update
% aptitude install oracle-java7-installer
% aptitude install oracle-java8-installer
変更する。
% update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-8-oracle/jre/bin/java 65 auto mode 1 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 manual mode 3 /usr/lib/jvm/java-8-oracle/jre/bin/java 65 manual mode
ん?Java8に自動的になってる?
% java -version
java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
なってた

2014/05/18

RedmineでMarkdownに切り替えやすくするプラグインを作った

tail -f pinzo.log: Redmine がついに Markdown をサポートしたようだ で書いたように、Redmine が 2.5.0 から試験的に Markdown をサポートしたけど、過去の Textile で書いたもろもろが崩れてしまうので、気軽に乗り換えられない。
でも、やっぱり Markdown で書きたい。主流だし。
というわけで redmine_persist_wfmt というプラグインを作った。
これで少しは気軽に Markdown に切り替えられるですよ。

インストール

README.md にある通り。
$ bundle exec rake pwfmt:persist_all FORMAT=textile RAILS_ENV=production で既存のドキュメントを Textile として保存する。もちろん Markdown として保存することもできる。

イメージ

こんな風に Textile で書かれたドキュメントがあったとする。

プラグインをインストール後、Markdownを使うように変更する。

それでも Textile として変換されて表示されます。

もちろん Markdown として保存すれば

Markdown として変換されて表示されます。

作成・編集時にフォーマットを選択できるので、Textile から Markdown に直すこともできます。(もちろん逆も)

機能とメリット

  • 作成時に指定したフォーマットでずっと表示できる
  • 作成・編集時にフォーマットを指定できる(どちらかしかしらないメンバーがいても大丈夫)
  • 編集時にフォーマットを切り替えられる(統一も順次対応できる)

対応箇所

  • Redmineのウェルカムテキスト
  • プロジェクトの概要
  • チケットの概要と履歴
  • Wiki
  • 文書
  • フォーラムの本文とコメント
  • ニュース
基本的に Wiki 記法で書ける場所は全て対応したつもり

注意事項

  • ツールバーの動作は切り替わらない。Redmineの設定に従う
  • プレビューも未対応。Redmineの設定に従う → v1.1.0 で対応しました。
  • プラグインとかで追加された場所は、フォーマットを選択するドロップダウンはでるかもしれないけど書式は保存されないと思う

プレビューぐらいは対応したいけど、その前にテスト書いてリファクタリングをしたい。
似ているようで微妙に違うソースがたくさんなので、もう少し綺麗になるはず。

2014/05/16

[未解決]UbuntuをアップグレードしたらRedmineでRMagick関連が動かなくなっていた

さくらのVPSのUbuntu10.04を12.04に上げたらいつの間にかRedmineのRMagic関連機能が使えなくなっていた。
% convert
convert: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory
convert が失敗するのが原因のようだ。
10.04の時はリポジトリのバージョンが古くソースからインストールしたので今回も最新版をソースからインストールした。
% wget http://www.imagemagick.org/download/ImageMagick-6.8.9-1.tar.gz
% tar xf ImageMagick-6.8.9-1.tar.gz
% cd ImageMagick-6.8.9-1
% ./configure --enable-lzw=yes --prefix=/opt/ImageMagick/ImageMagick-6.8.9-1
% make
% make install
% /opt/ImageMagick/ImageMagick-6.8.9-1/bin/convert --version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-05-16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC OpenMP Delegates: bzlib freetype jng jpeg lcms png tiff x xml zlib
インストールが成功したので、既存と置き換える。
% mv /usr/local/bin/animate{,.bak}
% mv /usr/local/bin/compare{,.bak}
% mv /usr/local/bin/composite{,.bak}
% mv /usr/local/bin/conjure{,.bak}
% mv /usr/local/bin/convert{,.bak}
% mv /usr/local/bin/display{,.bak}
% mv /usr/local/bin/identify{,.bak}
% mv /usr/local/bin/import{,.bak}
% mv /usr/local/bin/Magick-config{,.bak}
% mv /usr/local/bin/Magick++-config{,.bak}
% mv /usr/local/bin/MagickCore-config{,.bak}
% mv /usr/local/bin/MagickWand-config{,.bak}
% mv /usr/local/bin/mogrify{,.bak}
% mv /usr/local/bin/montage{,.bak}
% mv /usr/local/bin/stream{,.bak}
% mv /usr/local/bin/Wand-config{,.bak}

% ln -s /opt/ImageMagick/ImageMagick-6.8.9-1/bin/* /usr/bin
% convert --version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-05-16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC OpenMP Delegates: bzlib freetype jng jpeg lcms png tiff x xml zlib
RMagick を再インストール。
bundle exec gem uninstallでエラーは出るけどちゃんと削除はされるらしい。
% cd /var/lib/rails/redmine
% bundle exec gem uninstall rmagick
Successfully uninstalled rmagick-2.13.2 ERROR: While executing gem ... (NoMethodError) undefined method `delete' for #
% bundle install % touch tmp/restart.txt
その結果がこれである。
なんでや・・・

git1.9.3をインストール

バージョン1.7はさすがに古いなと思ったので、さくらVPSのUbuntu12.04にgitの最新版をインストールした。
% wget https://www.kernel.org/pub/software/scm/git/git-1.9.3.tar.gz
早速エラー。https対応をしていなかった。
% echo 'ca-certificate = /etc/ssl/certs/ca-certificates.crt' >> /etc/wgetrc
% wget https://www.kernel.org/pub/software/scm/git/git-1.9.3.tar.gz
% ./configure --prefix=/opt/git/git-1.9.3 --with-openssl --with-curl
% make
/bin/sh: 1: msgfmt: not found
とエラーになった。どうやらgettextが必要らしい。
% aptitude install gettext
% make
% make install
% /opt/git/git-1.9.3/bin/git --version
git version 1.9.3
インストールが成功したので、既存と置き換える。
% aptitude remove git-core
% ln -s /opt/git/git-1.9.3/bin/* /usr/bin
% git --version
git version 1.9.3
お疲れ様でした。

2014/05/12

Ruby 2.1.2 と 2.0.0-p481 をインストール

Hash#reject の挙動が修正され、readline 6.3 に対応した新しい ruby がリリースされたのでインストールした。
# readline のバージョンを最新に
% brew switch readline 6.3.5
# Ruby 2.0.0-p481 をインストール
% CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-gcc=clang" rbenv install 2.0.0-p481
% rbenv global 2.0.0-p481 && rbenv rehash
% gem install pry bundler
# Ruby 2.0.0-p481 をインストール
% CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-gcc=clang" rbenv install 2.1.2
% rbenv global 2.1.2 && rbenv rehash
% gem install pry bundler

2014/05/11

さくらの VPS を Ubuntu 10.04 から 12.04 にアップグレード

Ubuntu 14.04 も出たけど、とりあえずさくらの VPS を Ubuntu 10.04 から 12.04 にアップグレードした。
基本的には さくらのVPSでubuntu12.04にアップデートしたら、resolv.confの中身が空っぽになった件 | 流浪のプログラマのブログ を参考に行って、resolv.conf も同じように対応したら、名前解決も無事できた。

しかし、Redmine が動かない。
どうやら、/usr/bin/ruby 等の Ruby 関連のシンボリックリンクが Ubuntu 12.04 デフォルトの 1.8.7 に上書きされたのが原因っぽい。
tail -f pinzo.log: Rubyのアップデートがちゃんとできていなくて、Redmineをアップデートできなかった で作業した ruby2.0.0-p451 の本体は当然ながらしっかり残っていたので、再度シンボリックリンクを貼って apache を再起動したら Redmine も正常稼働した。