У Jeweler есть несколько рейковых заданий, которые очень хорошо справляются с управлением версиями. Я использовал его только для драгоценных камней, но вы, вероятно, можете вставить файл VERSION и использовать те же самые грабли в приложении rails. Я действительно думал о том, чтобы сделать то же самое для моего приложения. Я обновлю этот ответ более подробной информацией, если скоро доберусь до него. Для своих драгоценных камней я добавил несколько новых рейковых заданий, которые сочетают в себе некоторые из ювелирных заданий. Каждый раз, когда у меня появляется новая версия, я запускаю одну из задач, и она увеличивает версию (мажор, минор или патч), помещает свой код в github и помечает его все одним действием:
namespace :version do
desc "create a new version, create tag and push to github"
task :github_and_tag do
Rake::Task['github:release'].invoke
Rake::Task['git:release'].invoke
end
desc "bump patch push to github"
task :patch_release do
Rake::Task['version:bump:patch'].invoke
Rake::Task['version:github_and_tag'].invoke
end
desc "bump minor push to github"
task :minor_release do
Rake::Task['version:bump:minor'].invoke
Rake::Task['version:github_and_tag'].invoke
end
desc "bump major push to github"
task :major_release do
Rake::Task['version:bump:major'].invoke
Rake::Task['version:github_and_tag'].invoke
end
end
получите ювелир если у вас его нет и вы создаете поддельный драгоценный камень, положите его на github и поиграйтесь с заданиями, пока не почувствуете их. Я взял несколько попыток (и заглянул в источник), чтобы полностью понять, что он делал.
Если вы будете запускать эти задачи каждый раз, когда у вас будет новая версия, ваш файл VERSION будет синхронизирован с вашим проектом github. Если бы это был я, я просто прочитал бы номер версии из файла и использовал бы что-то вроде settingslogic , чтобы установить константу .. или вы можете установить ее в инициализаторе. Таким образом, вы знаете, что каждый раз, когда вы перезапускаете приложение, оно будет читать правильную версию