OfflineDeployer

This gem is still in development.

A gem for building releases using a git diff between 2 tags or commits. When OfflineDeployer::Maker.call is executed, archive containing all changed files between specified tags will be created. After that, you can use OfflineDeployer::Updater to extract those files and update your Rails application.

Installation

Add this line to your application's Gemfile:

gem 'offline_deployer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install offline_deployer

Usage

Your application need to define few settings in initializer or environment config. Settings can be defined using OfflineDeployer.settings method:

OfflineDeployer.setup do |settings|
  settings.gems_source_path = `gem env gemdir`.strip # from where to copy gems
  settings.app_root = Rails.root # git repository in which diff is going to be executed
  settings.gems_vendor_path = 'vendor/bundle/ruby/2.2.0' # where to copy gems in release archive
  settings.archive_name_prefix = 'application-name' # final archive file will be named application-name-x.x.x
  settings.restart_server_command = 'touch tmp/restart.txt' # how to restart application server after update
end

Also, you need to create update_script.sh in your app root folder which will be executed after update process finishes. Example:

RAILS_ENV=production bundle exec bundle install --path ./vendor/bundle --without development:test
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/infinum/offline_deployer.

License

The gem is available as open source under the terms of the MIT License.