2

再現方法

Gemfile

gem 'haml'
gem 'sass'
gem 'coffee-script'

アプリ/app.rb

get '/javascripts/rus_test.js' do
  content_type 'text/javascript', charset: 'utf-8'
  coffee :"../../public/javascripts/rus_test"
end

public/javascripts/rus_test.coffee (仕事です)

alert 'Hello World!'

ローカルホスト:3000/javascripts/rus_test.js

(function() {

  alert('Hello World!');

}).call(this);

public/javascripts/rus_test.coffee (動かない)

alert 'Привет!'

エラーを与える

Encoding::UndefinedConversionError at /javascripts/rus_test.js "\xD0" ASCII-8BIT から UTF-8 へ

config/boot.rbで Encoding.default のいくつかのバリアントを設定しようとしました。

ブート初期化の変種の 1 つ

Padrino.before_load do
  Encoding.default_internal = nil
  # Encoding.default_external = 'ASCII-8BIT'
end

ロシア語のテキストを含む HAML では機能しますが、SASS と COFFEE では機能しません

修正するにはどうすればよいですか?

4

1 に答える 1

2

ばかげたことを削除してEncoding.default_internal = nil、このコードをモンキー パッチのどこかに追加します。

# this makes tilt to treat templates as properly encoded (respect Encoding.default_external)
module Tilt
  class CoffeeScriptTemplate
    def prepare
      @data.force_encoding Encoding.default_external
      if !options.key?(:bare) and !options.key?(:no_wrap)
        options[:bare] = self.class.default_bare
      end
    end
  end
end
于 2012-06-03T09:49:22.370 に答える