У меня есть каталог projName/vendor/assets/bootstrap/css/
Я нахожусь в рабочем режиме. production.rb содержит: config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/
когда я запускаю rake assets:precompile я получаю projName/public/assets/css/
но хочу projName/public/assets/bootstrap/css/
я не понимаю почему там нет каталога bootstrap. На самом деле все каталоги верхнего уровня в разделе vendor/assets и app/assets отсутствуют в public assets/
.
предварительная компиляция производства конвейера ресурсов рельсов
Ответы (3)
Скомпилированные активы записываются в папку, указанную в config.assets.prefix
. По умолчанию это каталог public/assets
.
Чтобы понять это, вы должны сначала понять, что такое предварительная компиляция и что она делает. Позволь мне объяснить
Когда вы запускаете (задача rake)
rake assets:precompile
он создаст папку public
внутри папки вашего приложения, в которой будут собраны все ваши манифесты активов (т.е. ваши application.css
и application.js
)
Как именно это происходит?? -> Rails поставляется в комплекте с задачей rake, которая скомпилирует все это. Эта задача rake показана выше.
Скомпилированные активы записываются в место, указанное в config.assets.prefix
. По умолчанию это каталог public/assets
.
Сопоставитель по умолчанию для компиляции файлов включает в себя application.js, application.css и все файлы, отличные от JS/CSS (это автоматически включает все ресурсы изображений) из папок app/assets, включая ваши драгоценные камни.
И это именно то, что означает это регулярное выражение (чтобы включить все в папку вашего приложения/активов), вы также можете указать его явно, как показано в ответе выше.
Надеюсь, это помогло.
Вот несколько ссылок для справки
http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
http://dennisreimann.de/blog/precompiling-rails-assets-for-development/
Что означает это регулярное выражение? Если вы хотите предварительно скомпилировать все, попробуйте это.
config.assets.precompile = ['*.js', '*.css']
На самом деле, если вы хотите предварительно скомпилировать все, попробуйте следующее:
def precompile?(path)
%w(app lib vendor).each do |asset_root|
assets_path = Rails.root.join(asset_root, 'assets').to_path
return true if path.starts_with?(assets_path)
end
false
end
# Precompile all assets under app/assets (unless they start with _)
Rails.application.config.assets.precompile << proc do |name, path|
starts_with_underscore = name.split('/').last.starts_with?('_')
unless starts_with_underscore
path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
precompile?(path)
end
end
(На основе кода в Руководстве по Rails.)
@import "bootstrap";
вверху файла scss, который используют ваши представления. - person halmeetdave   schedule 14.05.2013