moriqです。

しん さんは書きました:
> 出沢@RoR挑戦中
> 
> システムが UTF8 な Linux上で、shift-jis で 記述すると
>    _form.html.erb:7: Invalid char `\216' in expression
>   documents_controller.rb:7: Invalid char `\216' in expression
> というエラ−が出てしまいます。
> 
> ruby -Ks ./script/server としても 
> export RUBYOPT="-Ks" のあとで ./script/server としても
> documents_controller.rb の最初に $KCODE="SJIS" としても
> 
> 同じエラ−となります。
> 
> RoR のプログラムで リテラルに shift-jis を使うには
> どうしたら良いでしょうか。
> 
>   扱う対象の既存の DB がshft-jisなので、viewの文字定数と
>   DBからの文字のコ−ドを合わせるために shift-jisで記述しています。

少なくともrails-2.1.0では

config/environment.rb:
Rails::Initializer.run do |config|
  #...
end
$KCODE='SJIS'

としたら効きます。

rails-2.1.0以降は
    def initialize_encoding
      $KCODE='u' if RUBY_VERSION < '1.9'
    end
という処理が

config/environment.rb:
Rails::Initializer.run do |config|
  #...
end

の時点で実行されるので
$KCODE='SJIS'
はこのブロックの後ろに置かないと効かないです。

documents_controller.rb の中に$KCODEを書いても効果がありません。
先に documents_controller.rb を評価しまっているからです。

個人的には、日本語リテラルはプログラム中には書かずに
GetTextやDBを使って外部に出したほうが良いと思います。