2014-08-28 2 views
1

В настоящее время я собираюсь создать драгоценный камень, и он кажется значительно большим, чем сравнительные драгоценные камни.Как уменьшить размер драгоценного камня

Прежде всего, это действительно проблема, и если да, то какой способ уменьшить размер драгоценного камня?

Gem: https://rubygems.org/gems/roroacms

Github: https://github.com/roroacms/roroacms

+0

Вы сравнили с другими рельсами cms (например, нефтеперерабатывающий завод)? – apneadiving

+0

Я бы сказал, что размер не является проблемой. Он загружается только при запуске вашего сервера, это не похоже на то, что вы подаете его кому-либо в ответ или что-то в этом роде. Однако всегда стоит больше узнать о том, что вы делаете :) –

ответ

5

spec/ каталог Драгоценный камень имеет, когда распаковал, более 99MB. Вы обязательно должны исключить его из финальной жемчужины (пусть даже и маленькой). Причина в том, что он такой большой, потому что он содержит фиктивное приложение с каталогами log/ (80MB) и tmp/ (18MB).

То, как вы исключаете файлы, является переменной files в gemspec. Переменная содержит массив каждого файла, который будет помещен в встроенный камень.

Gem::Specification.new do |gem| 
    gem.files = `git ls-files`.split($/).reject { |fn| fn.start_with? "spec" } 
    ... 
end 

Код будет первым получить список всех файлов в каталоге (с git ls-files он также будет применять правила .gitignore), а затем удаляет любой файл, чей путь начинается с spec.

Это зависит от вас, хотите ли вы включить тесты в финальный камень или нет. Проблема в том, что нет простого способа запуска тестов. Раньше была опция (-t), чтобы сделать это прямо через Rubygems, но этот вариант был удален довольно давно. Учитывая сложившуюся ситуацию, я думаю, что, вероятно, лучше всего проводить тесты в репозитории.

Обратите внимание, что вы также можете увидеть переменную с именем test_files в gemspec. Эта переменная устарела и ничего не делает.

+0

Да, это имеет смысл. Я думал, что хорошая практика - держать тесты внутри драгоценного камня? Если это не так, я могу их удалить, что является лучшим способом игнорировать файлы из драгоценного камня? –

+0

@ user2323463 Я расширил ответ. –

+1

Я думаю, что это больше не нужно, так как похоже, что новые двигатели содержат строку, содержащую только соответствующие файлы: Gem :: Specification.new do | s | ' s.files = Dir ['{app, config, db , lib}/**/* ',' MIT-LICENSE ',' Rakefile ',' README.md '] ' – klavado

Смежные вопросы