Skip to content

Gem to build and run packages of your application

Notifications You must be signed in to change notification settings

newint33h/rubypack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rubypack

This gem provides some utilities to build a package of your application with aims to provide a runnable standalone application that can be shared or deployed in production systems.

Installation

Add this line to your application's Gemfile:

gem 'rubypack'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rubypack

Usage

To build a package of your application, you need to define a new file named .rubypack on the root directory of your application.

The content of the .rubypack file:

name 'TestApp'
version '3.1'

include git
exclude '*.log'
include 'js/node_modules/**/**'

Please note that if the first filter among include/exclude is include, then the strategy to select the files will start with zero files and continue applying the filters in order appearance. However if the first filter is exclude, the selection of files will start with ALL files and continue applying the reamining of the filters.

Then run the following command to build your package:

$ rubypack build

Reading .rubypack file...
 Name: TestApp
 Version: 3.1
  [ OK ]
Downloading gems...
  [ OK ]
Generating list of files...
 Action: exclude, Filter: *.log
 Action: include, Filter: js/node_modules/**/**
 Files count: 33
  [ OK ]
Creating copy of files...
  [ OK ]
Creating package...
 File created:  /repo/my_application/TestApp-3.1.tgz.rpack
  [ OK ]

The previous command will generate a file with extension '.tgz.rpack'. It will automatically include all the required gems for all the platforms in the package.

The application can be deployed using the following command:

$ rubypack deploy --filename TestApp-3.1.tgz.rpack --directory /production/app/
Unpacking file...
 Directory created:  /production/app/
  [ OK ]
Installing gems...
  [ OK ]

The previous command will install all the gems required by your application in local mode, without using network or rubygems, and using the Gemfile.lock to install the proper gems inside the vendor folder.

To view more details about what is happening, you can use the --verbose switch. Also with --help you can see the different commands available.

Available commands

$ rubypack --help
RubyPack 0.1.0 (c) 2017 Jorge del Rio
A ruby package generation and execution manager.

Commands:
  build    Create a new package.
  deploy   Install the application package and all the gems.
  list     List the files to be included in the package.

Options:
  -h, --help    Show this message

Build command

$ rubypack build --help
build - Builds a package of your application.

Options:
  -c, --config=<s>              The config file to use (default: .rubypack)
  -o, --output-directory=<s>    The directory where the final package is going to be created. (Default: .)
  -m, --compressor=<s>          The compressor utility to use. Possible values: tgz, zip. (Default: tgz)
  -n, --no-overwrite            Do not overwrite the output file if it already exists.
  -v, --verbose                 Verbose output for debugging.
  -q, --quiet                   Do not output anything.
  -h, --help                    Show this message

Deploy command

$ rubypack deploy --help
deploy - Install the application package and all the gems.

Options:
  -f, --filename=<s>      The file deploy
  -d, --directory=<s>     The directory where the final package is going to be deployed.
  -v, --verbose           Verbose output for debugging.
  -c, --compressor=<s>    The compressor utility to use. Possible values: tgz, zip.
  -h, --help              Show this message

List command

$ rubypack list --help
list - List the files to be included in the package.

Options:
  -c, --config=<s>    The config file to use (default: .rubypack)
  -v, --verbose       Verbose output for debugging.
  -h, --help          Show this message

Configuration file

The configuration file .rubypack is used to determinate which will be included in the final package file.

The name and version methods are used to define the final name of the package. For example: MyApp-1.2.0.tgz.rpack

name 'MyApp'
version '1.2.0'

You can rubypack configuration is a ruby file than can contain any code. Therefore, you can set the version using the definition in another file.

require 'version.rb'

name 'MyApp'
version MyApp::VERSION

The git keyword fetches all the files in the repository using the following command: `git ls-files -z\`.split("\x0")

include git

The all keyword fetches all the files using the wildcards **/**.

include all

To include a specific file, simple write the relative URL to the file.

include 'Myfile.txt'

It is possible to include several filters in the same line.

include git, 'js/node_modules', 'public/**/**'

The order of the include/exclude instructions matters. The filters are applied in order of appearance. For example, to select only the files not tracked by git:

include all
exclude git

Development

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/newint33h/rubypack.git. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

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

About

Gem to build and run packages of your application

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages