Redmine 通知メールのエンコードをUTF-8からiso-2022-jpにする

最近仕事でRemineを使って社内のやりとりをすることが

多くなりまして、メールがガンガン飛んでくるわけですが

Redmineから送られてくるメールはUTF-8のため
携帯でメールが見られないとか、文字化けするメーラーが
出てきたので、通常のエンコードiso-2022-jpへの変更を試みた。

参考にしたサイトはこちら
redmine 0.8でメール文字化けの対応しました: 猫派

ちなみにインストール方法は
Redmineインストール バグトラッキング プロジェクト管理システム: CentOSサーバ構築術 文具堂

/var/www/redmineにインストールしている場合の設定です。

gettextのインストール

gem install gettext

config/environment.rbの最後endの直前に

config.gem "gettext", :lib => "gettext/rails"

を追加する。

cd /var/www/redmine/config

vi environment.rb

----------------------------------------
  # Deliveries are disabled by default. Do NOT modify this section.
  # Define your email configuration in email.yml instead.
  # It will automatically turn deliveries on
  config.action_mailer.perform_deliveries = false
  config.gem "gettext", :lib => "gettext/rails"
end
----------------------------------------

models/mailer.rbに

GetText.locale ='ja'

をクラス宣言の前に追加する。

cd /var/www/redmine/app/models

vi mailer.rb
----------------------------------------
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
GetText.locale ='ja'

class Mailer < ActionMailer::Base
  helper :application
  helper :issues
  helper :custom_fields
----------------------------------------

PassengerでRedmineを動かしている場合は
tmp/restart.txtを作成してPassenger再起動。

touch /var/www/redmine/tmp/restart.txt

RedmineにアクセスするとPassengerが再起動して

tmp/restart.txtは削除されます。tmp/restart.txtが

削除されているかで再起動できたか確認できます。

Trackはプロジェクト毎に立ち上げなきゃいけない?とかインストールが面倒とか
Mantisはインストールが楽だけどwikiやバージョン管理などドキュメント系が不足気味
これはますますRedmineを使う理由が増えてくるな~。Passengerのインストールが楽になったおかげでRuby on RailとApacheの連携も気にならなくなった。mod_rubyとかFastCGIとかさわるだけでも何かややこしかったし。。。


入門Redmine Linux/Windows対応
前田 剛
¥2,100

Teraterm256色対応でemacsカラー対応

GaucheでLispにさわり初めて、括弧の対応がわかんないとつらくなってきた。

emacsには括弧の対応をリアルタイムで知らせてくれる設定があって便利なはず。
でも、Teratermから使うと、うまく動作していなかった。

(show-paren-mode)

ちょっとしたShellならviで書くし、emacs使って書くのはRubyのスクリプトくらい。
学生の頃みたいにC, C++等を書く場合はやっぱりemacsはカラフルであってほしい。

基本的にいまはWindowsから外部サーバに接続してリモートでプログラミングすることが
ほとんどなので、X Windowなど立ち上げるわけもなく、Teraterm(コンソール)上で
emacsを立ち上げることになる。

ちなみに学生の頃はWindowsにWindows用X WindowのAstec Xをインストールして
リモートのサーバのemacsを立ち上げていた。フォントの設定はややこしかったけど
色については余り問題なかった。

Teratermでは少しは色はでるんだけど、あんまり見やすくないな~とは思っていた。
それほど、つらくはなかったのでよしとしていた。

さすがにLispでこれだけ括弧が出てくるとムリと思い、調べたら、どうやら端末が256色に
対応していれば大丈夫そう。

試しにPUTTYは256色に対応しているそうで、バッチリだった。

なんだTeratermは対応していないのか!と思ったら、最近256色に対応したとのこと
なのでバージョンアップしたらサックリ、カラフルになった。

TeratermとScreenで256色表示: 外部記憶装置

teraterm256

うん、便利便利。

Ruby 1.9.1って安定版なの?

Rubyをいつものごとくダウンロードしようとして

ふと文章にひっかかった。

Rubyダウンロード

  • 最新の安定版であるruby 1.9.1-p0[tar.bz2|tar.gz|zip]が各ミラーサイトから入手できます。
  • 前世代の安定版であるruby 1.8.7-p72[tar.bz2|tar.gz|zip]も各ミラーサイトから入手できます。

あれ?1.8系が前世代で1.9系が最新の安定版?

もちろん.1.8系の最新版をダウンロードしようとしたのだけれど。。。

そっか、バージョンの管理のしかたが変わったんだっけか。

1.9.1は安定版なんだ。ruby-listとってるのに最近読んでないな。

Ruby 1.9.1をリリースしました。これは1.9系統初の安定版リリースです。
Ruby 1.9はRubyの新しい系統です。近代的に、高速に、文法も明確に、多言語化
され、多くの改善がなされました。Ruby 1.8系統は2003年以来利用され、多くの
素晴らしい製品を生み出しました。本日、1.9の歴史が始まります。

なお、Ruby 1.8はまだ継続します。1.8.8は今年くらいにはリリースされるで
しょう。

ほんまや。1/31にリリースされとる。

といっても自分が使っているレベルではあんま変わんないかも。

でも、入れてつかってみたいな。うーん、どの環境も運用でつかっちゃってるし。。

RubyでWordPressへXML-RPC投稿

RubyにはXML-RPCクライアントのためのライブラリが
入っているので、スクリプトから標準でブログに投稿できる。

PHPでの投稿方法だが、この記事を参考にさせていただいた。

XML-RPCを使ってWordPressへ投稿する: のほほんやろうなFX

WordPressで作成したブログの場合はxmlrpc.phpが投稿先となる。

URI: http://example.com/xmlrpc.php

まずは、XML-RPC投稿を許可する設定をする。

[設定]->[投稿設定]
[リモート投稿]のXML-RPCにチェックを入れて設定を保存。

xmlrpc投稿を有効にする

これで、WordPress、 Movable Type、 MetaWeblog および Blogger XML-RPC
投稿プロトコルが有効になる。

各プロトコルの仕様については下記サイト参照。

WordPress本家 XML-RPC Support
http://codex.wordpress.org/XML-RPC_Support

require 'xmlrpc/client'

user = 'hogehoge'
pass = 'password'
publish = 1

server = XMLRPC::Client.new('example.com', '/xmlrpc.php')

struct = {
'title'=>'テスト投稿',
'description'=>'投稿内容投稿内容'
}

id = server.call("metaWeblog.newPost",1,user,pass,struct,publish)

puts "Post ID: #{id}"

簡単な投稿だけであれば、これだけでXML-RPC投稿が出来る。
publishを0にすれば「下書き」で登録される。

WordPress APIの仕様には新規投稿なくmetaWeblogで投稿することになる。

日付を入力して「下書き」にする場合は次の通り。
Timeでparseを使うには明示的にrequire ‘time’が必要です。

require 'time'
require 'xmlrpc/client'

user = 'hogehoge'
pass = 'password'
publish = 0
date = Time.parse('2010/02/13 12:22')

server = XMLRPC::Client.new('example.com', '/xmlrpc.php')

struct = {
'title'=>'テスト投稿2',
'description'=>'投稿内容投稿内容2',
'dateCreated'=>date
}

id = server.call("metaWeblog.newPost",1,user,pass,struct,publish)

puts "Post ID: #{id}"

dateCreatedの指定はちょっとシビアでエラーがでることもあるかもしれない。
文字列で色々設定してみたけどうまくいかない。

rubyの場合はTimeをそのまま渡してしまえば大丈夫らしいのので
それでよしとした。