26
Mar

以前書いた「PRaggerでmixiのマイミク新着日記全文とコメントを取得しRSS化 @ DreamHost」の通り、mixiでのマイミク新着日記をRSSリーダで読めるよう設定していたのですが、実はあるときから正しく出力できなくなっていました(2008年12月1日ごろ)。

エラーとしてはこんなの。

required variables of maker are not set: items (RSS::NotSetError)

個人的には「まぁいいか」ぐらいで放置していたのですが、「mixi RSS化」なんかで検索して該当エントリーに来てくださる方が結構いるので、修正対応しました。

基本的な設定は「PRaggerでmixiのマイミク新着日記全文とコメントを取得しRSS化 @ DreamHost」の通りで、plugin/Feed/ の mixi_get_new_friend_diary.rb のみ以下のファイルに差し替えてください。

mixi_get_new_friend_diary.rb(20090325最新版)

修正内容はごく単純で、53行目でRSSのバージョン指定を1.0から2.0に変更しました。

rss = feed.to_rss(”1.0″) do |maker|

rss = feed.to_rss(”2.0″) do |maker|

3ヶ月以上も動かない情報を公開してしまっていてごめんなさい。

07
Dec

しばらく開発をさぼってる間にDreamHostのCapistranoのバージョンアップしていた模様。正しくデプロイできないようになってたので対処メモ。

まずこれまでは、RailsアプリケーションのデプロイにCapistranoを利用していたので、開発環境から変更をコミットした後、本番環境(DreamHost)にて以下のコマンドを打つだけでデプロイが完了していました。

CODE:
  1. $ cd (該当Railsアプリケーション用ディレクトリ)
  2. $ svn update
  3. $ rake deploy

しかし先日、これまで通りデプロイを実行すると以下のエラーが。

rake aborted!
RubyGem version error: net-ssh(1.0.8 not >= 2.0.0)

なのでまずは、net-sshをはじめとして関連するgemの最新バージョンをインストールします。
※ユーザ環境にgemをインストールする設定はすでに完了しているものとします(cf. Ruby on Rails - DreamHost > Using Gems Installed in Your Home Directory)

CODE:
  1. $ gem install net-ssh
  2. $ gem install net-sftp
  3. $ gem install net-scp
  4. $ gem install net-ssh-gateway
  5. $ gem install highline

続いて新バージョンのCapistranoで初期化みたいな作業 "capify" をします。Capistrano: Upgrade Guideによるとこんな意味があるそうです。

First, you need to "capify" your project, since Capistrano 2.0 no longer recognizes "config/deploy.rb" automatically. (See the sidebar on the right for more information.)
(中略)
It will automatically create a "Capfile" for you, and (if the config directory exists, and config/deploy.rb does not) it will also create a skeletal "config/deploy.rb" file, too.

CODE:
  1. $ cd (該当Railsアプリケーション用ディレクトリ)
  2. $ capify .
  3. [add] writing `./Capfile'
  4. [skip] `./config/deploy.rb' already exists
  5. [done] capified!

そして最後に実行( "rake deploy" はもう使わないらしい)。

CODE:
  1. $ cap deploy

無事にデプロイできました。

24
Nov

このエントリーで解説している方法では正しく動作しなくなってしまいました(2009年3月25日現在)。
修正対応方法については「バージョンアップ:PRaggerでmixiのマイミク新着日記全文とコメントを取得しRSS化 @ DreamHost」をご覧ください。

  • 「mixiをついつい放置してしまうが、マイミクの日記は読んでおきたい」
  • 「とはいえログインするのもめんどくさいし、RSS Readerで読めないもんかね」
  • 「Yahoo!Pipesのように、GUIでmixiからの情報もRSS化できるサービス(ex. MyRemix)もあるみたいだけど、さすがに見ず知らずのサービスにユーザ情報入力する気にはなれない」

そんなニーズに非常に参考となるエントリーがありました。

mixiの新着日記取得プラグイン(全文・コメント含む) - u-ichiのにっき

というわけで上記を大いに参考にしつつ、私が利用しているサーバ環境(DreamHost)なりの設定を踏まえて作業メモ。

おおまかな流れ

  • PRaggerをインストール
  • RSSパーサ最新版をインストール
  • 設定ファイルとpluginの作成
  • cronに登録

設定後の構成

DremHost環境ではmechanize(0.8.5)がインストール済みでしたが、無い場合には別途インストールしておく必要があります。

CODE:
  1. ~/
  2.    local/
  3.       lib/
  4.          ruby/
  5.             1.8/
  6.    scripts/
  7.       pragger/
  8.          config/
  9.          plugin/
  10.          setup/
  11.          pragger.rb

local/ はDreamHostのユーザ環境にライブラリなど置くためのディレクトリ、scripts/ は雑多なプログラムを突っ込んでおくため適当に作ったディレクトリなので、適宜読み替えてください。

メモ

  • mixi APIの仕様上、残念ながら最新5件しか取得できません
  • 出力されたRSSファイルは、RSS Readerで読むためなどWebアクセス可能な場所にを置く場合、少なくともBasic認証をかけるなり管理には注意が必要です


作業手順

PRaggerをインストール

CODE:
  1. $ cd
  2. $ mkdir scripts
  3. $ cd scripts
  4. $ svn co http://pragger.ikejisoft.com/svn/pragger/trunk/ pragger

RSSパーサ最新版をインストール

現時点でDreamHostにインストール済バージョン(0.1.6)では対応できないそうなので、最新版のRSSパーサをインストールします。

  1. ダウンロード
    CODE:
    1. $ cd ~/TEMP
    2. $ wget http://www.cozmixng.org/~kou/download/rss-0.2.4.tar.gz

  2. 設置
    CODE:
    1. $ tar zxvf rss-0.2.4.tar.gz
    2. $ mkdir -p ~/local/lib/ruby/1.8/
    3. $ cp -R rss-0.2.4/lib/* ~/local/lib/ruby/1.8/

  3. 環境変数の追加
    CODE:
    1. $ echo 'export RUBYLIB="$HOME/local/lib/ruby/1.8"'>> ~/.bash_profile
    2. $ source .bash_profile

設定ファイルとpluginの作成

  1. 設定ファイルを作成
    参考サイトの通り、config以下に2つのファイルを作成し設定します。
    CODE:
    1. config/
    2.    mixi_auth.yaml
    3.    mixi_get_new_diary_list.yaml

  2. plugin本体を設置
    同じく参考サイトの通り、plugin/Feed以下にplugin本体ファイルを設置しますが、そのままではどうやら以下のケースでエラーが発生してしまうようです。
    • マイミクが外部ブログを使っている
    • 最近マイミクの日記にコメントをしていない

    というわけで無理矢理ですが例外処理を加えた mixi_get_new_friend_diary.rb を設置します。

    CODE:
    1. plugin/
    2.    Feed/
    3.       mixi_get_new_friend_diary.rb

実行

ここまでで基本的な設定は完了。以下のコマンドで実行できます。

CODE:
  1. $ cd scripts/pragger/
  2. $ ruby pragger.rb -c config/mixi_get_new_diary_list.yaml

config/mixi_get_new_diary_list.yaml にて設定した通りの場所に、無事にRSSファイルが出力されました。

cronに登録

次に自動で定期実行するためcronに登録します。

ただしcronに上述の実行コマンドを登録しても、環境変数やPRagger内のパス関係を知らないため正しく実行できないので、以下のshスクリプトを作成しておきます。

CODE:
  1. #!/bin/sh
  2. export GEM_HOME="$HOME/.gems"
  3. export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"
  4. export PATH="$HOME/.gems/bin:/usr/lib/ruby/gems/1.8/bin:$PATH"
  5. export RUBYLIB="$HOME/local/lib/ruby/1.8"
  6. cd ~/scripts/pragger
  7. ruby pragger.rb -c config/mixi_get_new_diary_list.yaml

DreamHost環境ではコントロールパネルから、もしくはcrontabコマンドを使って登録することで、めでたく定期的にRSSファイルが出力されるようになりました。

10
Oct

このmskari.orgドメインはDreamHostというサーバを利用し、ガチガチにGoogle Apps仕様で運用しています。

導入はごく簡単。DreamHostのコントロールパネルのドメイン管理画面にてGoogle Appsにチェックを入れ、あとはGoogle Apps側のドメイン設定で管理者アカウント作ってサービスの設定をするだけで

  • http://mail.mskari.org/ (Gmail)
  • http://calendar.mskari.org/ (Google Calendar)
  • http://sites.mskari.org/ (Google Sites)

などがボロボロとできあがるのです。

というわけで、mskari.orgドメインのユーザアカウント宛メールもGmail上ですぐに確認できてキャッキャ言ってたのですが、送信を試みたところ「まだメールを送信できません」(英語環境では "You can't send mail yet." )というエラーが出て送れないことが判明。

Google Apps Helpページの "Configuring MX records - Google Apps for Administrators" によると

Keep in mind that changes to MX records may take up to 48 hours to take effect.

だそうで、それも影響あるのかと思い48時間待てども一向に変化なし。もう全然「シーン」。

いくら見てもMXレコードは正しくGoogleに向いてるようにしか見えないし、いよいよ納める年貢を準備しだしたところでこんなDiscussion Groupをフシギ発見。

"You can't send mail yet" error, even though my domain should be verified - Fix A Problem | Google グループ

なんということでしょう。

なぜだかわかりませんが、DreamHost環境の場合ユーザ操作だけでは正しくverifyされず、送信できない旨をここに書き込むとGoogle Apps Advisor Angelaにより順番に対応されるという衝撃の陳情方式!

仕方なしに私もそのラインに並び、つたない英語力で顔を真っ赤にしながら前の質問者の文をコピペ。

I am having the same problem (dreamhost, can't send mail) with
mskari.org
Please fix it. thanks.

すると数時間もしないうちに「ボウヤ、開通させてあげたわよ」みたいな回答があり、実際に送信ができるようになりました!

その間にAngelaがその魔性のフィンガーで私のドメインをカタカタとタイプしてくれたのでしょうか。

それとも音声入力デバイスに向かって"m-s-k-a-r-i-.-o-r-g come on..."と甘い吐息を吹きかけたのでしょうか。

Googleってなんていうかその、なんかそういう感じじゃないと思ってたんですっごいドキドキしました。サンキューAngela!