traveler 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +21 -10
- data/lib/traveler/cli.rb +16 -4
- data/lib/traveler/config.rb +8 -2
- data/lib/traveler/wrapper.rb +33 -18
- data/skel/Travelfile +23 -4
- data/skel/cmd.sh +1 -0
- data/skel/wrapper.sh +7 -6
- data/traveler.gemspec +2 -2
- metadata +5 -5
- data/lib/traveler/build.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71940c2f9e8689c2b08a8aa506f0582094179c22
|
4
|
+
data.tar.gz: 71c6d37800b031616d49097a1e3b38f5bccb74c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae010579d972b51a4c08b61fdd0ec9ae67185b2c26aa2e724bf11bab1c62614a798be2d076a27c3f73c6df473780826ef4df02e1c58a04ec76372793fdc98299
|
7
|
+
data.tar.gz: 26cedddaf7eb74282b923d9df6ab6cb107f7885b1c6a90fd2d2aacd609e42c5f88692ed9be136887fb5582a0e1fc3db338cc05b2ca1fb2a4d8dc31f15909ffa7
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
**A nifty wrapper for Traveling Ruby**
|
2
|
+
## Traveler
|
4
3
|
|
5
|
-
Easily distribute your Ruby
|
4
|
+
**Easily distribute your Ruby apps to any Linux and/or OS X.**
|
6
5
|
|
7
6
|
Traveler is about doing all hard work on packaging your Ruby apps into self-running containers using [Traveling Ruby](http://phusion.github.io/traveling-ruby/).
|
8
7
|
|
@@ -11,7 +10,7 @@ Here are some [introductory materials](https://github.com/phusion/traveling-ruby
|
|
11
10
|
|
12
11
|
**Ok, what do i need to use Traveler?**
|
13
12
|
|
14
|
-
You'll need Ruby 2.1.x or 2.2.x
|
13
|
+
You'll need Ruby 2.1.x or 2.2.x on a Linux or OS X machine ([no windows support for now](https://github.com/sleewoo/traveler/issues/2)).
|
15
14
|
|
16
15
|
Why so?
|
17
16
|
|
@@ -29,14 +28,14 @@ make sure to run `rbenv rehash` is you are using rbenv.
|
|
29
28
|
|
30
29
|
## Use
|
31
30
|
|
32
|
-
Traveler acts inside your app folder. It creates a `Travelfile` file and the `traveler` folder
|
31
|
+
Traveler acts inside your app folder. It creates a `Travelfile` file and the `traveler` folder.
|
33
32
|
|
34
33
|
`Travelfile` is a Ruby file containing few configurations:
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
- `platforms` specify what platforms your app should run on
|
36
|
+
- `wrapper` [define wrapper(s)](https://github.com/sleewoo/traveler/blob/master/skel/Travelfile#L12) that will allow to easily run your app
|
37
|
+
- `folder_name` name of the folder that will hold the builds (`traveler` by default)
|
38
|
+
- `traveling_ruby_version` what version of Traveling Ruby to be used for builds
|
40
39
|
|
41
40
|
And that's pretty all about configuration.
|
42
41
|
|
@@ -71,11 +70,23 @@ So you can have multiple Ruby versions with same app.
|
|
71
70
|
|
72
71
|
To make use of them simply define multiple wrappers, each using a specific Ruby version.
|
73
72
|
|
73
|
+
|
74
|
+
## Rewrapping
|
75
|
+
|
76
|
+
Sometimes you need to rebuild wrappers without actually rebuild the runtime/gems.
|
77
|
+
|
78
|
+
For this simply run:
|
79
|
+
|
80
|
+
`traveler wrap`
|
81
|
+
|
82
|
+
It will reread your wrappers in Travelfile and rebuild them accordingly.
|
83
|
+
|
84
|
+
|
74
85
|
## Contributors are highly welcome!
|
75
86
|
|
76
87
|
Would love to have some help with testing.
|
77
88
|
|
78
|
-
1. Fork it ( https://github.com/
|
89
|
+
1. Fork it ( https://github.com/sleewoo/traveler/fork )
|
79
90
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
80
91
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
81
92
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/traveler/cli.rb
CHANGED
@@ -13,12 +13,19 @@ module Traveler
|
|
13
13
|
|
14
14
|
desc 'build', "Build runtime for platforms specified in #{CONFIGFILE}"
|
15
15
|
def build
|
16
|
-
|
16
|
+
load_configs
|
17
17
|
build_world
|
18
18
|
generate_wrappers
|
19
19
|
puts '', bold_success(SUCCESS_ICONS.sample, ' All Done! You are ready to rock!')
|
20
20
|
end
|
21
21
|
|
22
|
+
desc 'wrap', 'Only (re)build wrappers without '
|
23
|
+
def wrap
|
24
|
+
load_configs
|
25
|
+
generate_wrappers
|
26
|
+
puts bold_success(SUCCESS_ICONS.sample, ' Done!')
|
27
|
+
end
|
28
|
+
|
22
29
|
private
|
23
30
|
def build_world
|
24
31
|
FileUtils.mkdir_p(Traveler.rubydir)
|
@@ -38,11 +45,12 @@ module Traveler
|
|
38
45
|
end
|
39
46
|
|
40
47
|
def generate_wrappers
|
41
|
-
return if WRAPPERS.empty?
|
48
|
+
return puts('', warn(" No wrappers defined in #{CONFIGFILE}"), '') if WRAPPERS.empty?
|
42
49
|
puts '', warn(:wrapping.icon, ' Wrapping...')
|
43
50
|
Dir.chdir Traveler.appdir do
|
44
|
-
WRAPPERS.each_pair do |name,(cmd_or_file,
|
45
|
-
|
51
|
+
WRAPPERS.each_pair do |name,(ruby_version,cmd_or_file,block)|
|
52
|
+
puts warn(' (re)building "%s" wrapper...' % name)
|
53
|
+
Wrapper.new(ruby_version, name, cmd_or_file, block)
|
46
54
|
end
|
47
55
|
end
|
48
56
|
end
|
@@ -74,6 +82,10 @@ module Traveler
|
|
74
82
|
def configfile_exists?
|
75
83
|
File.exists?(CONFIGFILE_PATH)
|
76
84
|
end
|
85
|
+
|
86
|
+
def load_configs
|
87
|
+
require 'traveler/config'
|
88
|
+
end
|
77
89
|
end
|
78
90
|
end
|
79
91
|
Traveler::CLI.start(ARGV)
|
data/lib/traveler/config.rb
CHANGED
@@ -28,9 +28,9 @@ module Traveler
|
|
28
28
|
OPTED_PLATFORMS.concat(platforms)
|
29
29
|
end
|
30
30
|
|
31
|
-
def wrapper name, ruby_version,
|
31
|
+
def wrapper name, ruby_version, cmd = nil, &block
|
32
32
|
assert_ruby_version_supported!(ruby_version, caller[0])
|
33
|
-
WRAPPERS[name.to_s.freeze] = [
|
33
|
+
WRAPPERS[name.to_s.freeze] = [ruby_version.to_s.freeze, cmd.to_s.freeze, block].freeze
|
34
34
|
end
|
35
35
|
|
36
36
|
def traveling_ruby_version version
|
@@ -43,3 +43,9 @@ module Traveler
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
require 'traveler/prerequisites'
|
48
|
+
require 'traveler/runtime'
|
49
|
+
require 'traveler/bundler'
|
50
|
+
require 'traveler/gem'
|
51
|
+
require 'traveler/wrapper'
|
data/lib/traveler/wrapper.rb
CHANGED
@@ -2,43 +2,58 @@ module Traveler
|
|
2
2
|
class Wrapper
|
3
3
|
include Util
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
5
|
+
def initialize ruby_version, name, cmd, block
|
6
|
+
@ruby_version, @name, @cmd, @block = ruby_version, name, cmd, block
|
7
7
|
write if writeable?
|
8
8
|
end
|
9
9
|
|
10
10
|
def write
|
11
|
-
File.open(
|
12
|
-
FileUtils.chmod('+x',
|
11
|
+
File.open(file, 'w') {|f| f << render_wrapper}
|
12
|
+
FileUtils.chmod('+x', file)
|
13
13
|
end
|
14
14
|
|
15
15
|
def writeable?
|
16
|
-
if File.exists?(
|
16
|
+
if File.exists?(file) && File.read(file) !~ /#{SIGNATURE}/m
|
17
17
|
puts warn('
|
18
|
-
|
19
|
-
|
20
|
-
please delete it and rerun `traveler`' % @file, '')
|
18
|
+
"%s" file exists and is not a Traveler wrapper.
|
19
|
+
Use another file or delete/rename this one and (re)run `traveler wrap`' % file)
|
21
20
|
return false
|
22
21
|
end
|
23
22
|
true
|
24
23
|
end
|
25
24
|
|
26
|
-
def wrapper
|
27
|
-
File.read(skeldir('wrapper.sh'))
|
28
|
-
end
|
29
|
-
|
30
25
|
def locals
|
31
26
|
{
|
32
|
-
signature:
|
33
|
-
folder_name:
|
27
|
+
signature: SIGNATURE,
|
28
|
+
folder_name: FOLDER_NAME,
|
34
29
|
traveling_ruby_version: TRAVELING_RUBY_VERSION,
|
35
|
-
wrapper_ruby_version:
|
36
|
-
cmd_or_file: @cmd_or_file
|
30
|
+
wrapper_ruby_version: @ruby_version
|
37
31
|
}
|
38
32
|
end
|
39
33
|
|
40
|
-
def
|
41
|
-
|
34
|
+
def cmd
|
35
|
+
return @block.call if @block
|
36
|
+
render_cmd(@cmd)
|
37
|
+
end
|
38
|
+
|
39
|
+
def render_wrapper
|
40
|
+
Mustache.render(wrapper_template, locals.merge(cmd: cmd))
|
41
|
+
end
|
42
|
+
|
43
|
+
def render_cmd cmd
|
44
|
+
Mustache.render(cmd_template, locals.merge(cmd: cmd))
|
45
|
+
end
|
46
|
+
|
47
|
+
def wrapper_template
|
48
|
+
File.read(skeldir('wrapper.sh'))
|
49
|
+
end
|
50
|
+
|
51
|
+
def cmd_template
|
52
|
+
File.read(skeldir('cmd.sh'))
|
53
|
+
end
|
54
|
+
|
55
|
+
def file
|
56
|
+
@name
|
42
57
|
end
|
43
58
|
end
|
44
59
|
end
|
data/skel/Travelfile
CHANGED
@@ -18,7 +18,20 @@ platforms 'linux-x86_64'
|
|
18
18
|
#
|
19
19
|
# 3) third argument will be used to run your program.
|
20
20
|
# it can be a command or a file and will be used like:
|
21
|
-
# /path/to/ruby -r bundler/setup your-file-or-command
|
21
|
+
# `exec /path/to/ruby -r bundler/setup your-file-or-command`
|
22
|
+
# However this can be omitted if providing a block.
|
23
|
+
#
|
24
|
+
# 4) A optional block.
|
25
|
+
# If given, returned string will be used as a un-prefixed cmd.
|
26
|
+
# Useful when you need full control over cmd to run.
|
27
|
+
# Will run like:
|
28
|
+
# `exec your-command-here`
|
29
|
+
#
|
30
|
+
# @note: use $RUBY_ROOT to refer to the Ruby installation folder,
|
31
|
+
# e.g. '$RUBY_ROOT/bin/bundler'
|
32
|
+
# IMPORTANT: make sure to use it inside single quotes - '$RUBY_ROOT'
|
33
|
+
# or escape it if using inside double quotes - "\$RUBY_ROOT"
|
34
|
+
# Otherwise it will refer to a Ruby global variable and make your wrapper unusable.
|
22
35
|
#
|
23
36
|
# @note: MULTIPLE wrappers can be defined each using a specific Ruby version
|
24
37
|
#
|
@@ -27,14 +40,20 @@ platforms 'linux-x86_64'
|
|
27
40
|
# @note: you can comment this option if you do not need any wrappers
|
28
41
|
#
|
29
42
|
# @example create "run" file that will execute "app.rb" on Ruby 2.1.5
|
43
|
+
# will run like:
|
44
|
+
# `exec "$RUBY_ROOT/bin/ruby" -r bundler/setup app.rb`
|
45
|
+
#
|
30
46
|
# wrapper :run, '2.1.5', 'app.rb'
|
31
47
|
#
|
32
48
|
# @example create "run" file that will run `puma` on Ruby 2.2.0
|
33
|
-
#
|
49
|
+
#
|
50
|
+
# wrapper :run, '2.2.0' do
|
51
|
+
# "\$RUBY_ROOT/bin/bundler exec puma"
|
52
|
+
# end
|
34
53
|
#
|
35
54
|
# @example create two wrappers, one running on Ruby 2.2.0 and another on 2.1.5
|
36
|
-
# wrapper :run22, '2.2.0', '
|
37
|
-
# wrapper :run21, '2.1.5', '
|
55
|
+
# wrapper :run22, '2.2.0', 'config.ru'
|
56
|
+
# wrapper :run21, '2.1.5', 'config.ru'
|
38
57
|
#
|
39
58
|
wrapper :run, '2.1.5', 'your command or file here'
|
40
59
|
|
data/skel/cmd.sh
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
exec "$RUBY_ROOT/bin/ruby" -r bundler/setup {{{cmd}}}
|
data/skel/wrapper.sh
CHANGED
@@ -4,14 +4,15 @@ set -e
|
|
4
4
|
cd "$(cd $(dirname "$0") && pwd)"
|
5
5
|
|
6
6
|
if [[ `uname -s` =~ inux ]]; then
|
7
|
-
|
7
|
+
arch="linux-$(uname -m)"
|
8
8
|
else
|
9
|
-
|
9
|
+
arch="osx"
|
10
10
|
fi
|
11
11
|
|
12
|
-
TRAVELING_RUBY_ROOT="{{folder_name}}/traveling-ruby-{{traveling_ruby_version}}-{{wrapper_ruby_version}}-$TRAVELING_RUBY_PLATFORM/"
|
13
|
-
|
14
|
-
export BUNDLE_GEMFILE="$TRAVELING_RUBY_ROOT/vendor/Gemfile"
|
15
12
|
unset BUNDLE_IGNORE_CONFIG
|
16
13
|
|
17
|
-
|
14
|
+
export RUBY_VERSION="{{wrapper_ruby_version}}"
|
15
|
+
export RUBY_ROOT="{{folder_name}}/traveling-ruby-{{traveling_ruby_version}}-$RUBY_VERSION-$arch/"
|
16
|
+
export BUNDLE_GEMFILE="$RUBY_ROOT/vendor/Gemfile"
|
17
|
+
|
18
|
+
{{{cmd}}}
|
data/traveler.gemspec
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
name, version = 'traveler 0.0
|
3
|
+
name, version = 'traveler 0.1.0'.split
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = name
|
6
6
|
spec.version = version
|
7
7
|
spec.authors = ['Slee Woo']
|
8
8
|
spec.email = ['mail@sleewoo.com']
|
9
|
-
spec.description = '
|
9
|
+
spec.description = 'Easily embrace Traveling Ruby awesomeness'
|
10
10
|
spec.summary = [name, version]*'-'
|
11
11
|
spec.homepage = 'https://github.com/sleewoo/' + name
|
12
12
|
spec.license = 'MIT'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traveler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slee Woo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mustache
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10'
|
69
|
-
description:
|
69
|
+
description: Easily embrace Traveling Ruby awesomeness
|
70
70
|
email:
|
71
71
|
- mail@sleewoo.com
|
72
72
|
executables:
|
@@ -81,7 +81,6 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- bin/traveler
|
83
83
|
- lib/traveler.rb
|
84
|
-
- lib/traveler/build.rb
|
85
84
|
- lib/traveler/bundler.rb
|
86
85
|
- lib/traveler/cli.rb
|
87
86
|
- lib/traveler/config.rb
|
@@ -94,6 +93,7 @@ files:
|
|
94
93
|
- skel/Gemfile
|
95
94
|
- skel/Travelfile
|
96
95
|
- skel/bundle.config
|
96
|
+
- skel/cmd.sh
|
97
97
|
- skel/wrapper.sh
|
98
98
|
- traveler.gemspec
|
99
99
|
homepage: https://github.com/sleewoo/traveler
|
@@ -119,6 +119,6 @@ rubyforge_project:
|
|
119
119
|
rubygems_version: 2.2.2
|
120
120
|
signing_key:
|
121
121
|
specification_version: 4
|
122
|
-
summary: traveler-0.0
|
122
|
+
summary: traveler-0.1.0
|
123
123
|
test_files: []
|
124
124
|
has_rdoc:
|