too short multibyte code string

316 views
Skip to first unread message

1002bs

unread,
May 8, 2008, 10:54:11 PM5/8/08
to kagemai-users
影舞0.8.8をFreeBSD 6.2-RELEASEに入れてみたのですが、うまく動いてくれません。apacheのエラーログ次のように記録され
ています。

[error] mod_ruby: error in ruby
[error] mod_ruby: /usr/local/www/apache22/data/dev/kagemai/lib/kagemai/
bts.rb:26:in `require': /usr/local/www/apache22/data/dev/kagemai/li
b/kagemai/project.rb:299: too short multibyte code string: /[\\xA1-\
\xFE][\\xA1-\\xFE]/ (SyntaxError)
[error] mod_ruby: from /usr/local/www/apache22/data/dev/kagemai/lib/
kagemai/bts.rb:26
[error] mod_ruby: from /usr/local/www/apache22/data/dev/kagemai/lib/
kagemai/kagemai.rb:30:in `require'
[error] mod_ruby: from /usr/local/www/apache22/data/dev/kagemai/lib/
kagemai/kagemai.rb:30
[error] mod_ruby: from /usr/local/www/apache22/data/dev/kagemai/html/
guest.cgi:30:in `require'
[error] mod_ruby: from /usr/local/www/apache22/data/dev/kagemai/html/
guest.cgi:30
[error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.8/apache/ruby-
run.rb:53:in `load'
[error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.8/apache/ruby-
run.rb:53:in `handler'


Ruby等のバージョンは以下の通りです。

% pkg_info | egrep '(ruby|apache)'
apache-2.2.4_2 Version 2.2 of Apache web server with prefork MPM.
eruby-1.0.5 Interprets Ruby code embedded in a text file like
PHP/ePerl
ja-ruby-usersguide-980206 Ruby users guide (Japanese version), in HTML
format
mod_ruby-1.2.5 An Apache module that embeds Ruby interpreter
within
ruby+oniguruma-1.8.6,1 An object-oriented interpreted scripting
language



FreeBSDが対応リストに入っていないのは存じておりますが、マシンの都合で、できればこれで動かしたいので、お知恵を拝借できればありがたいで
す。

FUKUOKA Tomoyuki

unread,
May 12, 2008, 10:55:47 AM5/12/08
to kagema...@googlegroups.com
福岡です。

08/05/09 に 1002bs<100...@gmail.com> さんは書きました:


>
> 影舞0.8.8をFreeBSD 6.2-RELEASEに入れてみたのですが、うまく動いてくれません。apacheのエラーログ次のように記録され
> ています。
>
> [error] mod_ruby: error in ruby
> [error] mod_ruby: /usr/local/www/apache22/data/dev/kagemai/lib/kagemai/
> bts.rb:26:in `require': /usr/local/www/apache22/data/dev/kagemai/li
> b/kagemai/project.rb:299: too short multibyte code string: /[\\xA1-\
> \xFE][\\xA1-\\xFE]/ (SyntaxError)

現象を手元で再現できないのですが、該当の部分はメッセージに
日本語が含まれているかどうかを判定するコードですね。

日本語が含まれていなければ、スパムとみなすといういい加減な
コードのところなので、とりあえず、外部に公開しないのであれば、
以下のパッチでいいかもしれません。spam_filter メソッドの中身を
ざっくり消して return Proc.new{|strings| false} だけを入れた感じです。

Index: project.rb
===================================================================
--- project.rb (579)
+++ project.rb
@@ -286,23 +286,7 @@
end

def spam_filter()
- return Proc.new{|strings| false} unless @use_filter
-
- # TODO: * 外部からフィルタを読み込めるように
- # * ja/en で分けれるように
- return Proc.new{|strings| false} if @lang != 'ja'
-
- Proc.new{|strings|
- use_japanese = false
- strings.each do |string|
- # 日本語が含まれてるかのチェック
- if string =~ /[\xA1-\xFE][\xA1-\xFE]/ then
- use_japanese = true
- break
- end
- end
- use_japanese == false
- }
+ return Proc.new{|strings| false}
end

def store_report(report)


--
FUKUOKA Tomoyuki

ze...@zege.jp

unread,
May 12, 2008, 2:38:39 PM5/12/08
to kagema...@googlegroups.com
zegeです。

# あまり情報無くすみません。

私も、FreeBSDで影舞を使用していますが、特に問題無いです。

ruby+oniguruma-1.8.6,1 An object-oriented interpreted scripting language

環境の違いだと、mod_rubyを使用していないことと、rubyに鬼車を適用してな
いことのような気がします。

正規表現の部分だし、エラーメッセージ的に鬼車がエラーって言っているよう
ですね。
rubyを鬼車無しでインストールし直しとか難しいですかね?

以上です。
----from-----
zege


At Mon, 12 May 2008 23:55:47 +0900,

1002bs

unread,
May 13, 2008, 3:15:34 AM5/13/08
to kagemai-users
1002bsです。

On 5月13日, 午前3:38, z...@zege.jp wrote:
> 環境の違いだと、mod_rubyを使用していないことと、rubyに鬼車を適用してな
> いことのような気がします。

Debianで試してみたらmod_rubyを入れてても大丈夫なようなので、こちらは無実でしょう。

> 正規表現の部分だし、エラーメッセージ的に鬼車がエラーって言っているよう
> ですね。
> rubyを鬼車無しでインストールし直しとか難しいですかね?

鬼車を外すのってどうやればいいのでしょうか?Rubyのインストールは、単に、

/usr/ports/lang/ruby18

で、make; make installしただけなのですが。明示的に鬼車を指定した覚えはありません。
なので、外すと言ってもどうやればいいのか、、、

お手数ですが、ご教示いただけると助かります。

ze...@zege.jp

unread,
May 13, 2008, 8:15:25 AM5/13/08
to kagema...@googlegroups.com
To: 1002bsさん

zegeです。

# FreeBSDの話になってしまいますが。。

At Tue, 13 May 2008 00:15:34 -0700 (PDT),


1002bs wrote:
>
> 鬼車を外すのってどうやればいいのでしょうか?Rubyのインストールは、単に、
>
> /usr/ports/lang/ruby18
>
> で、make; make installしただけなのですが。明示的に鬼車を指定した覚えはありません。
> なので、外すと言ってもどうやればいいのか、、、
>
> お手数ですが、ご教示いただけると助かります。

portsでのrubyインストール時に、オプションが選択できます。
その中で、鬼車(oniguruma)もオプションの1つになっています。

インストール時の設定は、/var/db/ports/ruby ディレクトリに保存されてい
るので、確認してみてください。

鬼車を外すにはportsの再インストールが良いかと思います。
portsの再インストール時には前回のディレクトリの設定が再利用されますの
で、一度ディレクトリを削除して、

make ;make deinstall; make reinstall

で、ports(ruby)を再インストール可能だと思います。

では。

1002bs

unread,
May 15, 2008, 4:30:18 AM5/15/08
to kagemai-users
1002bsです。

鬼車、外せました。この状態で、先の影舞のエラーは出なくなりました。
まだ、guest.cgiのアクセスを確認しただけですが、zegeさんもFreeBSDで動かしている
とのことのなので、あとは大丈夫でしょう。ありがとうございました。

以下、鬼車外しの顛末記みたいなもの。

# make showconfig

で現状の設定が確認でき、

# make rmconfig

で設定を破棄できるようです。
手順としては、以下でうまくいきました。

# make deinstall
# make rmconfig
# make
# make reinstall

ポイントは、最初にmake deinstallすることです。
先に鬼車を外したRubyを作り、それでmake deinstallしてもちゃんとdeinstallできません
(reinstallでエラーになります)。
Reply all
Reply to author
Forward
0 new messages