Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Я всегда версия все таблицы стилей в "общественности/таблицах стилей/дерзости / *.sass" и настроенный исключить фильтр для скомпилированных:
/public/stylesheets/*.css
компас платформа рекомендует подвергнуть Ваши таблицы стилей дерзости приложению/таблицам стилей и Вашу скомпилированную CSS в общественности/таблицах стилей/компилировать.
можно настроить это путем добавления следующего кода к environment.rb:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
при использовании платформы компаса она настраивает эту конфигурацию для Вас при установке ее.
Честно, мне нравится иметь мои скомпилированные таблицы стилей SASS в управлении версиями. Они являются маленькими, только изменяются, когда Ваши .sass файлы изменяются, и наличие их развертывается с остальной частью Ваших средств приложения, которые что компилятор ДЕРЗОСТИ никогда не должен запускать в производство.
другое преимущество (хотя маленькое) состоит в том, что, если Вы не используете кэширование страницы, Ваш процесс направляющих не должен иметь доступа для записи к Вашему public_html
каталог. Таким образом, существует тот меньшим количеством пути, использование Вашего сервера может быть злым.
Несколько связанный, но это - хорошая идея повторно создать Ваш CSS во время Вашего capistrano развертывания. Этот рычаг обратного вызова делает просто что:
after "deploy:update_code" do
rails_env = fetch(:rails_env, "production")
run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end
Обновление : Это больше не должно быть необходимо с современными версиями Haml/Sass.
Если я могу управлять им, мне нравится хранить все мои стили в шаблонах ДЕРЗОСТИ, когда я выберу HAML/SASS для проекта, и я удалю application.css и scaffold.css. Затем я помещу ДЕРЗОСТЬ в общественность/таблицы стилей/дерзость и добавлю/public/stylesheets / *.css к .gitignore.
, Если я должен работать с комбинацией ДЕРЗОСТИ и основанных на CSS активов, это немного более сложно. Самый простой способ обработать это состоит в том, чтобы иметь выходной подкаталог для сгенерированного CSS в рамках каталога таблиц стилей, затем исключить тот подкаталог в .gitignore. Затем в Ваших представлениях необходимо знать, какое моделирование типа Вы используете (ДЕРЗОСТЬ или CSS) на основании необходимости выбрать таблицу стилей общественности/таблиц стилей/нечто или public/stylesheets/sass-out/foo таблицу стилей.
, Если необходимо пойти вторым путем, создайте помощника к краткому обзору далеко подкаталог дерзости.