2016年5月21日土曜日

Bitnami Redmineの更新でエラー

BitnamiRedmine3.1から3.2へのアップグレードがすんなりいかなかったのでメモ。
3.1→3.2固有の問題とかじゃなく初歩的な話。

現象:
3.1でダンプしたsqlファイルを3.2でリストアした所、Redmineのログイン画面は表示されるがログインするとinternal error500を吐く。おえー
(普通の人はブラウザでエラー500見る前に解決するだろうから現象とは言いづらい)

結果:
migrate時にエラー表示されたデータベーステーブルを3つほど削除してしたら直った。

具体的内容:
過去2回のアップデートをしており自前の手順メモと同じ手順で行ったらだめだった。
とりあえずBitnamiRedmineの公式wikiを覗いたらデータベースを一旦削除して再度作成してリストアするように記されていた。自前のメモに書いてないし、昔はこんな記述なかったような気がする。
多分これだろうとおとなしく記載通りにやってみるが変わらず。なんでやねん。

仕方なく面倒で読み飛ばしていたターミナルのメッセージを一つづつ読んでみると

ruby bin/rake db:migrate RAILS_ENV=production
する際におもいっきりエラーが出ていた。

「Mysql2::Error: Table 'roles_managed_roles' ほげほげじゅげむじゅげむ.....」

とエラーのテーブル名が出ているので、別タブでmysqlに入りテーブルの中身を確認する。

mysql > use bitnami_redmine

でbitnami_redmineに入り、

mysql> select * from roles_managed_roles; 

で確認するとテーブルは空だったので

mysql > drop table roles_managed_roles;

で、テーブルを削除する



元のタブでmigrateを再度行うと、今度は別のテーブルでエラーが出た。
同じようにテーブルの中身を確認して削除する作業をエラーが出なくなるまで繰り返す。
最終的に削除したテーブルが再度作成され、完了となる。

あとはいつも通りプラグイン向けに
bundle install --without development test postgresql sqlite --no-deployment
bundle install --without development test postgresql sqlite --deployment
ruby bin/rake redmine:plugins RAILS_ENV=production
を叩いて、(プラグイン用のテーブルでも同様のエラーが出たのでこちらのテーブルも再構築した)
ruby bin/rake tmp:cache:clear
ruby bin/rake tmp:sessions:clear
して終了

正常にアクセスできた。めでたしめでたし。

2016年2月12日金曜日

cronでmp3ファイルが鳴らない(mpg321)

ちょっとしたアラームが欲しかったのでcronでmpg321を叩いたけど鳴らなかった。
ターミナルで直接コマンドを打つと鳴るのにcronでは鳴らない。

結論:オーディオデバイスを明示的に指定する


00-59 * * * * /usr/bin/mpg321  /home/hogehoge/hoge.mp3


00-59 * * * * /usr/bin/mpg321 -a hw:0,3 /home/hogehoge/hoge.mp3

これで鳴った

オーディオデバイスの調べ方

~$ aplay -l

で表示される

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: HDMI [HDA Intel HDMI], デバイス 3: HDMI 0 [HDMI 0]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 7: HDMI 1 [HDMI 1]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 8: HDMI 2 [HDMI 2]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: PCH [HDA Intel PCH], デバイス 0: ALC283 Analog [ALC283 Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

から鳴らしたいものを選択する
今回のように「カード0:デバイス3」なら「hw:0,3」の様に記述する