Redmine 1.3.0 で Wiki を PDF 出力する
ついに Wiki も PDF 出力が!ってことで喜び勇んで試してみたらそのままじゃ動かなかったのでメモ。
環境は以下の通り。
gem のインストールやらほげほげは省略(たぶん後で別途まとめる)。
PDF 出力自体は(rmagick install 済みという条件付きで)可能。
ただし、そのままだと日本語のフォントが汚い。かつ、漢字が出力されない。
解決策としては、config/locales/ja.yml の 169 行目辺りを変更する。
general_pdf_encoding: SJIS # コメントアウトされてるのでコメントを外す
# general_pdf_encoding: CP932 # 元々はこっちが使われているが、コメントアウトする
つまり、general_pdf_encoding の値を CP932 から SJIS へ変更する。
これで日本語フォントが修正されて漢字もちゃんと出力されるようになる。
死ぬほど眠いから今日はここまで。
Jenkins で Rails3 プロジェクトのカバレッジを計測する
話にはよく聞くけど実際 Jenkins 使ったことないなーってことで、ちょうど手元で試してた rails3 のプロジェクトを対象に構築してみることにした。
rails3 でカバレッジ計測
以前は rcov 使ったと思うんだけど、rcov は 1.9.* には対応してないらしい。 最近の流行りは simplecov らしいってことで simplecov を入れる。
参考: Ruby 1.9.2 + Rails3でテストカバレッジを取るにはSimpleCovが良さそう | FIRN.JP
ちなみに rspec までは導入済みという前提。
必要なのは simplecov と simplecov-rcov。前者がカバレッジ計測で後者は出力フォーマットを rcov 互換にする。
まずは Gemfile に simplecov と simplecov-rcov を追加。
group :test do
gem 'simplecov', :require => false
gem 'simplecov-rcov', :require => false
end
追加したら bundle install を実行。
$ bundle install
spec/spec_helper.rb に以下の記述を追加。 require 'rspec/rails' よりも前じゃないと正常に動作しないっぽい。
require 'simplecov'
require 'simplecov-rcov'
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
SimpleCov.start 'rails'
準備ができたら rake spec を実行する。結果は coverage/rcov 以下に出力される。
$ rake spec
simplecov の設定はひとまず完了。
Jenkins インストール
Jenkins サーバに rvm をインストールする
手順は 以前エントリにまとめた のでそれをそのまま使う。
開発マシンから git clone するために ssh 公開鍵の設定
gitconfig の設定
これを済ませておかないと clone でこける。
参考: Ubuntu ServerにJenkinsをセットアップしてGitレポジトリと連動するまでのまとめ - jiska
sudo -u jenkins -H git config --global user.email "jenkins@jenkins-server"
sudo -u jenkins -H git config --global user.name "jenkins"
必要なプラグインをインストールする
今回の用途だと以下の三つを入れておくといいらしい。
- Jenkins ruby metrics plugin
- Jenkins GIT plugin
- Jenkins Rake plugin
インストールは http://jenkins-server:8080/pluginManager から GUI で実行可能。便利。
zsh/screen/vim の設定ファイルを Dropbox + github で管理する
今まで Dropbox のみで管理してたけど、どれこれ構わず Dropbox インストールするわけにもいかないので、Dropbox にいれつつ github でも管理するようにした。 ついでに github から clone した後の配置を自動化するスクリプトを書いた。
レポジトリ: https://github.com/yono/dotfiles
screen
環境ごとに変える要素も特にないので、そのまま。欲を言うと、多段 screen するために環境ごとに設定を分けたいところだけどまだやってない。
デプロイするスクリプト
dotfiles を clone した後にやることは以下のとおり。
- submodule を読み込む
- 各設定ファイルにシンボリックリンクを貼る
- vundle で各プラグインを取得
手動でやるのがめんどくさかったので簡単なスクリプトを書いた。
https://github.com/yono/dotfiles/blob/master/init.sh
#!/bin/shDROPBOX_DIR="$HOME/Dropbox"
DOTFILES="$DROPBOX_DIR/dotfiles"if [ ! -d "$DOTFILES" ]
then
echo "Please mv dotfiles to $DROPBOX_DIR"
exit
ficd $DOTFILES
git submodule update --init
ln -s $DOTFILES/zsh $HOME/.zsh
ln -s $DOTFILES/zsh/zshrc.linux $HOME/.zshrc
ln -s $DOTFILES/zlogin $HOME/.zlogin
ln -s $DOTFILES/screenrc $HOME/.screenrc
ln -s $DOTFILES/vimrc $HOME/.vimrc
ln -s $DOTFILES/vim $HOME/.vimvim -c ':BundleInstall!'
こんな感じで、即席で作った仮想マシンにもさくっと自分の環境が持ち出せるようになった。快適。
Debian Squeeze インストールから Rails 3.1 を動かすまで
毎回忘れるので備忘録として。
- OS は Debian Squeeze
- VMware Fusion で仮想マシン構築
- Ruby は rvm で入れる
条件としてはこんな感じ。
OS インストールと VMware Tools インストール
インストールは省略。パッケージのチェックをすべて外すこと。
インストール終わってログインしたら VMware Tools インストールに必要なものを入れる。
# apt-get install make gcc linux-headers-2.6.32-5-686
入れ終わったら VMware Fusion 側でメニューから [仮想マシン]→[VMware Tools のインストール]を選択する。
# mount /dev/cdrom
# cd /tmp
# tar zxpf /media/cdrom/VMwareTools-8.4.7-416484.tar.gz
# umount /dev/cdrom
# cd vmware-tools-distrib
# ./vmware-install.pl
rvm には必須じゃないけど個人的に必要なコマンドを入れる
とりあえず ssh と sudo と zsh とついでに vim を入れる
# apt-get install ssh sudo zsh-beta vim
/etc/sudoers 書き換えて一般ユーザに sudo 権限持たせる
# vim /etc/sudoers
# User privilege specification
root ALL=(ALL) ALL
yono ALL=(ALL) ALL # 追加
sudo 権限持たせたので以降は一般アカウントで作業
# su - yono
ログインシェルを変更する
$ chsh
パスワード:
yono のログインシェルを変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
ログインシェル [/bin/bash]: /bin/zsh-beta
一旦抜けてログインし直す。以降は zsh での作業となる。
rvm インストール
rvm インストールに最低限必要なコマンドを入れる
% sudo apt-get install curl git
http://beginrescueend.com/rvm/install/ に従い、rvm をインストール
% bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
インストール完了時に「Ruby 処理系入れるならこのパッケージをインストールしろ」的なメッセージが出るのでコピペして実行(apt-get のコマンドがそのまま表示される)。
$HOME/.zshrc に以下の記述を加えて読み込む
% vim ~/.zshrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
% source ~/.zshrc
ruby 1.9.2 をインストール
最新版は 1.9.3 だが今回は 1.9.2 を入れる。 ついでに gemset も作っておく
% rvm install 1.9.2
% rvm use 1.9.2
% rvm gemset create rails3
% rvm gemset use rails3
–no-ri –no-rdoc をデフォルトにする
毎回 gem install 時にオプションで付けるのを忘れるので、.gemrc に記述しておく。
% vim ~/.gemrc
gem: --no-ri --no-rdoc
rails をインストール
プロジェクトを作成
sample プロジェクトを作って実行してみる。
% rails new sample -d sqlite3
% cd sample
% rails s
すると、以下のようなエラーが出る
/home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs.rb:5:in `<module:ExecJS>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs.rb:4:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
from /home/yono/sample/config/application.rb:7:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:52:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:52:in `block in <top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:49:in `tap'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:49:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
調べてみると JavaScript エンジンが必要とのことらしい(JavaScriptエンジンをインストールする - 祈れ、そして働け 〜 Ora et labora)。
というわけで、therubyracer を Gemfile に追記して bundle 実行。
% vim Gemfile
gem 'therubyracer'% bundle
改めて rails s を実行すると今度は正常に起動した。
Evernote から Org-mode への移行
今まで Evernote に保存してたテキストをすべて Org-mode へ移行することにした。 画像やPDFはそれほど保存してないし問題ないだろうという判断。
それほど多くないかと思ってたら700ページくらいあって手動は早々に諦めた。
Evernote のエクスポートについて調べてみたらXMLとHTMLがあったので、とりあえず HTML から Org-mode への変換を試してみることにした。
で、できたのを Gist に上げた。HTMLタグを抽出するスクリプトは http://oceanmarine.org/wordpress/?p=184 を使わせていただいた。
細かい置換は端折りまくったけど、とりあえずテキストで取り出せれば修正は後でもいいかなって感じで作った。どっちみち今後は増えないし、どうしても気になる箇所があれば目についたときに直せばいいし。
org2blog で Emacs から WordPress に投稿する
ちょい前に wp-emacs から投稿する設定をしたばかりだけど、他にもないかなと探してたら org2blog なんてものがあった。
こっちだと HTML に変換する手間も省けるしよさげかも、ってことで設定してみることに。
README 通りに書いてみて、とりあえずこの記事を org2blog 経由で書いてみてる。
wp-emacs との違いは
- カテゴリが指定できる
- タグが指定できる
- M-x org2blog/wp-post-buffer の後に y を選ぶとブラウザにプレビューが表示される
ってわけで wp-emacs 使う理由が無くなってしまった。 さようなら wp-emacs こんにちは org2blog