Подтвердить что ты не робот

Что делает? body = 1 делать в рельсах 3.1 конвейер активов?

В разработке все мои активы javascript добавляются с переменной body=1 get. Что это на самом деле делает?

http://localhost:3000/assets/application.js?body=1
4b9b3361

Ответ 1

Трафик через исходный код звездочки мы находим:

  # Returns a 200 OK response tuple
  def ok_response(asset, env)
    if body_only?(env)
      [ 200, headers(env, asset, Rack::Utils.bytesize(asset.body)), [asset.body] ]
    else
      [ 200, headers(env, asset, asset.length), asset ]
    end
  end

body_only? устанавливается, когда ?body=1 or true

Для статического актива Asset.body определяется как:

def body
  # File is read everytime to avoid memory bloat of large binary files
  pathname.open('rb') { |f| f.read }
end

В то время как передача актива назад его сам является "Объектом тела, способным к стойке"

# Add enumerator to allow `Asset` instances to be used as Rack
# compatible body objects.
def each
  yield to_s
end

Когда мы смотрим на bundled_asset, Asset.body переопределяется как возвращающее тело только объекта и не включая зависимости. Asset.to_a определяется как извлечение актива как его самого, так и всех его зависимостей в качестве массива, переданного в Rack.

Таким образом, активы не объединены вместе, а взяты как отдельные объекты, поэтому отдельные файлы CSS остаются индивидуальными.