プロジェクト

全般

プロフィール

Defect #1080

Cannot Enter Special Characters (Such as Japanese)

Akiko Takano5年以上前に追加. 3年以上前に更新.

ステータス:
終了(Closed)
優先度:
低め(Low)
担当者:
対象バージョン:
開始日:
2012/07/09
期日:
2012/07/11
進捗率:

70%

予定工数:

説明

Githubからの報告です。
日本語入力がNGとのこと。

  • DBのエンコーディングとの組み合わせも関係する模様。
  • force_encodingの対応を検討?

Ref. https://github.com/akiko-pusu/redmine_banner/issues/20

issue_1080_encoding.patch (906 Bytes) issue_1080_encoding.patch Postの際、ruby1.9ではforce_encodingの処理を追加。 Akiko Takano, 2012/07/10 12:25

関係しているリビジョン

リビジョン cfd3541b (差分)
Akiko Takano5年以上前に追加

Applied force_encoding in case ruby1.9.
(Ref. IssueID: #1080)

リビジョン 3521c065
Akiko Takano5年以上前に追加

Change encoding. (Related issueID: #1080)

履歴

#1 Akiko Takano5年以上前に更新

  • 進捗率0 から 20 に変更

Redmine本体での対応もあるかもしれないのですが、特にグローバルバナーの部分で問題が発生する模様。
ひとまずブランチを作成し、登録フォームの部分で対応中、問い合わせいただいた方にエラーの提示のお願いと、修正部分を試していただくことにする。

既存のバナーデータを引き継ぐ場合は、_body_bottom.html.erbの修正も必要?

こちらはRedmine本体の対応(一部)
Ref:
http://www.redmine.org/projects/redmine/repository/revisions/8714/diff/trunk/app/controllers/application_controller.rb

#2 Daniel Morgan5年以上前に更新

GitHub で報告した者です。

_redmine_banner.html.erb の修正を適応しましたが、現象はまだ発生します。
ご指摘の通り、Project Banner では現象は発生しません。

環境に関しての情報が足りておらず、申し訳ありません:

  • Windows Server 2008
  • Redmine: 2.0.2
  • Java JDK: 1.6.0_31
  • MySQL Community Edition: 5.5.23
  • Torquebox: 2.0.3
    • JBoss AS: 7.1.1.Final
    • JRuby: 1.6.7.2 (Ruby 1.9 Mode)

Error に関しては下記が出力されます:

Started POST "/redmine-after/settings/plugin/redmine_banner" for 127.0.0.1 at 2012-07-10 09:18:37 +0900
Processing by SettingsController#plugin as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"8jYu+VOJW1touChhOJeB9nS7q1Ed5wv+GosGNQJrc9I=", "settings"=>{"type"=>"alert", "display_part"=>"header", "banner_description"=>"*%{color:blue}Server Maintenance Schedule%*\r\n\r\n*【実施日時/理由】*\r\n2012/07/13 - 14:30~15:00 - JBoss AS Server Upgrade\r\n", "start_ymd"=>"2012-03-22", "start_hour"=>"12", "start_min"=>"08", "end_ymd"=>"2012-03-22", "end_hour"=>"12", "end_min"=>"08"}, "commit"=>"適用", "id"=>"redmine_banner"}
   (4.0ms)  SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings` 
  User Load (1.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`id` = 3 AND (users.status = 1) LIMIT 1
  Setting Load (1.0ms)  SELECT `settings`.* FROM `settings` WHERE `settings`.`name` = 'plugin_redmine_banner' LIMIT 1
  Setting Exists (1.0ms)  SELECT 1 FROM `settings` WHERE (`settings`.`name` = BINARY 'plugin_redmine_banner' AND `settings`.`id` != 59) LIMIT 1
   (1.0ms)  UPDATE `settings` SET `value` = '---\ntype: alert\ndisplay_part: header\nbanner_description: ! \"*%{color:blue}Server Maintenance Schedule%*\\r\\n\\r\\n*¹πϻԺΞם\\\n ؒº*\\r\\n2012/07/13 - 14:30 15:00 - JBoss AS Server Upgrade\\r\\n\"\nstart_ymd: \'2012-03-22\'\nstart_hour: \'12\'\nstart_min: \'08\'\nend_ymd: \'2012-03-22\'\nend_hour: \'12\'\nend_min: \'08\'\n...\n', `updated_on` = '2012-07-10 09:18:38' WHERE `settings`.`id` = 59
Completed 500 Internal Server Error in 332ms

Psych::SyntaxError (special characters are not allowed):
  app/models/setting.rb:95:in `value'
  app/models/setting.rb:115:in `[]='
  app/models/setting.rb:145:in `plugin_redmine_banner='
  app/controllers/settings_controller.rb:55:in `plugin'

#3 Akiko Takano5年以上前に更新

こんにちは。
こちらにご報告下さってありがとうございます。

#JRubyの環境でお使いになっていることは想定していませんでした!

バージョンについて

まず、いただいた情報ですが、Banner plugin 0.0.7 は、Redmine2.0.0以上という指定をinit.rbで行っています。

Redmine1.4では動かないはずなので、Redmine2.0x, Banner Plugin 0.0.7 の組み合わせでよろしいでしょうか。
Redmine1.4以下だと、Banner Plugin 0.0.6のご利用をお願いします。

Redmine2.0x, Banner Plugin 0.0.7の組み合わせの場合

以下、Redmine2.0x, Banner Plugin 0.0.7の組み合わせと思って進めます。

JRubyもRailsも詳しくなくて申し訳ありません。
プロジェクトバナーの動作は問題ないとのことなので、サイト全体のバナー設定(日本語処理まわり)の問題と思っています。

まだDanielさんと同じ環境が無いので、検証ができずに申し訳ないのですが、ひとまず添付するパッチをあてていただけますでしょうか?
(_redmine_banner.html.erb への修正もそのままでお願いします)

lib/settings_controller_patch.rb に対する修正になります。

結果など、ご連絡いただければ幸いです。

#4 Daniel Morgan5年以上前に更新

早速の対応ありがとうございます!

#JRubyの環境でお使いになっていることは想定していませんでした!

Windows 上で Redmine を Multi-thread で動作させる方法を色々試しているうちにこの環境に落ち着きました。

まず、いただいた情報ですが、Banner plugin 0.0.7 は、Redmine2.0.0以上という指定をinit.rbで行っています。

Redmine1.4では動かないはずなので、Redmine2.0x, Banner Plugin 0.0.7 の組み合わせでよろしいでしょうか。
Redmine1.4以下だと、Banner Plugin 0.0.6のご利用をお願いします。

申し訳ありません、Redmine の Version 情報が間違っていました。
現在検証している環境では 2.0.2 を使用しています。(Comment も修正しておきました)

JRubyもRailsも詳しくなくて申し訳ありません。
プロジェクトバナーの動作は問題ないとのことなので、サイト全体のバナー設定(日本語処理まわり)の問題と思っています。

私も Ruby/Rails 初心者です。
現在 Redmine 2.0.x に対応していない大量の Plugin を勉強しながら修正しています・・・(ーー;)

まだDanielさんと同じ環境が無いので、検証ができずに申し訳ないのですが、ひとまず添付するパッチをあてていただけますでしょうか?
(_redmine_banner.html.erb への修正もそのままでお願いします)

lib/settings_controller_patch.rb に対する修正になります。

動作を確認しましたが、残念ながら同じ Error が出力されました。
私のほうでも時間を見つけて原因の解析をしてみます。

#5 Daniel Morgan5年以上前に更新

Google 先生で検索したところ、どうも JRuby の Bug の可能性が高そうです:
http://jira.codehaus.org/browse/JRUBY-6401

#6 Akiko Takano5年以上前に更新

Daniel Morgan は書きました:

Google 先生で検索したところ、どうも JRuby の Bug の可能性が高そうです:
http://jira.codehaus.org/browse/JRUBY-6401

情報ありがとうございます。
私も上記を見つけはしたのですが、環境が手元に無かったため、ひとまずコード側での対応を考えた次第です。

サイト全体向けのバナーは、専用テーブルに登録しているのではなく、ハッシュの形でRedmineのSettingsテーブルに格納されています。

プロジェクトバナーは問題なさそうなところも考えると、サイト全体向けのバナーも、専用テーブルに投入する方式に切り替えたほうがいいのかな、とも考えています。
(もし、同じ文字列をプロジェクトバナーにも投入しようとするとエラーになるとのことでしたら、また原因を色々探らないといけませんね)

#7 Daniel Morgan5年以上前に更新

JRuby 1.7.0.pre1 で対策が適応されているようなので、試して結果を報告します。

#8 Akiko Takano5年以上前に更新

Danielさん、ひきつづき、ありがとうございます。
#JRubyを使ったセットアップ手順など、どこかにありますでしょうか。

もしJRuby 1.7.0.pre1 をお試しの場合は、パッチ/修正をあてていない場合でまず動作するか、教えていただければと思います。
(お時間のある時で結構です)

いろんなプラグインの中で、お目にとめて下さって、ありがとうございます!
引き続きよろしくお願いします。

#9 Daniel Morgan5年以上前に更新

JRuby 1.7.0.pre1 で確認を開始しました。
しかし、現在 Welcome Page すら開けない状況です:

ActionView::Template::Error (incompatible character encodings: Windows-31J and UTF-8):

Ruby 1.9 からどうも異なる Encoding の String を連結できないような情報を見つけましたが、これが要因であるかはまだ分からない状況です。
取り急ぎご報告までに・・・

#10 Akiko Takano5年以上前に更新

ご報告ありがとうございます。
プラグインを外すか、いったんデータベースに入ってしまったバナー用のメッセージを削除、もしくは日本語を含まない文字列に修正しないと使いものになりませんよね。。。

sjisというあたりが気になります。
データベースからの修正か、スクリプトからの修正方法を後ほどチケットに添付してみます。
もし、もうちょっと頑張って使ってみたい、と言うご希望があれば、お休み中に環境つくります。

#11 Akiko Takano5年以上前に更新

Bannerの文字列が悪さしているのか、その他の箇所か判りませんが、ひとまずエラー画面を何とかしないと、操作できませんよね。

Bannerプラグインに関連するデータを、いったん削除もしくはDisaleにすれば、画面真っ白は解消されるかもしれません。
データベースにアクセスできるなら、Redmineが参照しているデータベースにアクセスして、下記のような操作をしてみて下さい。

下記はDB(MySQL)を操作できるのが条件ですが..。

1. グローバルバナーのデータを消す

こちらはSettingsテーブルに格納されています。

  • select * from SETTINGS where name = "plugin_redmine_banner" というSQLで、該当するレコードがあれば、(差支えなければ)、レコードを削除します。
    • delete from SETTINGS where name = "plugin_redmine_banner" (コミットもお願いします)

消した状態で、Redmineを再起動、もしくはRedmineをリロードした場合、エラーが回避されるようであれば、上記のバナー用のデータに、UTF-8ではないエンコーディングの文字列が入っている気がします。

エラーが回避されると、プラグインを外していないのであれば、再度管理画面からバナーの設定ができます。

この時は、初期化された文字列が入っています。
いったんSubmitして、バナーの表示が問題ない場合、次に日本語を入れてみて下さいますでしょうか。
それでエラーが再現するようであれば、エラーログをいただけると助かります。

いまのところ、これくらいしかお返事できずにすみません。

Daniel Morgan は書きました:

JRuby 1.7.0.pre1 で確認を開始しました。
しかし、現在 Welcome Page すら開けない状況です:

[...]

Ruby 1.9 からどうも異なる Encoding の String を連結できないような情報を見つけましたが、これが要因であるかはまだ分からない状況です。
取り急ぎご報告までに・・・

#12 Daniel Morgan5年以上前に更新

ActionView::Template::Error (incompatible character encodings: Windows-31J and UTF-8):

Error は Redmine Plugin を全て Uninstall した素の Redmine 環境下でも発生してしまいました。

Ruby 1.9 にはてこずりそうな予感がしているので、JRuby(Ruby 1.9 Mode)での動作検証はひとまず保留にしようと考えております。
色々と対応、Advice して頂いた中、申し訳ありません。

JRuby 1.6.7(Ruby 1.8 Mode)、及び JRuby 1.7.0.pre1(Ruby 1.8 Mode)では報告させて頂いた現象は発生しておりません。
作成して頂いた Patch を当てない状態で Redmine Banner は問題なく動作しております。

#13 Akiko Takano5年以上前に更新

  • 優先度高め(High) から 低め(Low) に変更
  • 対象バージョンBacklogs にセット
  • 進捗率20 から 70 に変更

Danielさん:

追記ありがとうございます。

JRubyの件は貴重な情報だと思います。
今回の件で、こちらも利用されている方に向けた注意点(アンインストール方法など)をまとめておかないとな....と改めて思いました。

JRuby以外(Pure ruby)で、しばらく同様の事象が出ないか様子をみて、無さそうであればこちらはクローズさせていただきます。
こちらでも対応やパッチなど準備した場合は、またご連絡しますね。

Daniel Morgan は書きました:

[...]

Error は Redmine Plugin を全て Uninstall した素の Redmine 環境下でも発生してしまいました。

Ruby 1.9 にはてこずりそうな予感がしているので、JRuby(Ruby 1.9 Mode)での動作検証はひとまず保留にしようと考えております。
色々と対応、Advice して頂いた中、申し訳ありません。

#14 Daniel Morgan5年以上前に更新

Akiko Takano は書きました:

JRuby以外(Pure ruby)で、しばらく同様の事象が出ないか様子をみて、無さそうであればこちらはクローズさせていただきます。
こちらでも対応やパッチなど準備した場合は、またご連絡しますね。

了解しました。
私のほうでも進展があった際はお知らせします。

尚、JRuby の Setup 手順に関してですが、私が現在使用している環境は基本的に Torquebox の Manual を参考に構築しました:
http://torquebox.org/documentation/2.0.3/
Manual の 2、4、6章を中心に参考して何とか構築できました。
User 規模が大したことないのであれば、別の方法のほうが手間がかからないと思います:

  • Iida さんが1年ほど前に公開した単独環境の構築 -> JRubyでRedmineを動かす
  • Apache Tomcat を駆使した構築
  • Trinidad を駆使した構築

#15 Akiko Takano3年以上前に更新

  • ステータス担当(Assigned) から 終了(Closed) に変更

2年以上経過してしまいましたので、棚卸しのためCloseさせていただきます。
ご協力ありがとうございます。もし何かありましたら、re-openさせていただきます。

他の形式にエクスポート: Atom PDF