Class: Rumbda::Build
- Inherits:
-
Object
- Object
- Rumbda::Build
- Defined in:
- lib/rumbda/build.rb
Constant Summary collapse
- TRAVELING_RUBY_VERSION =
'20150715-2.2.2'.freeze
- LINUX_VERSION =
'linux-x86_64'.freeze
- TEMP_DIRECTORY_NAME =
'tmp_rumbda'.freeze
Class Method Summary collapse
- .bundle_install(dir_with_gemfile) ⇒ Object
- .check_for_files(dir_to_build) ⇒ Object
- .copy_bundler_config(source, destination) ⇒ Object
- .copy_wrapper_script(source, destination) ⇒ Object
- .create_zip_file(source, destination) ⇒ Object
- .download_traveling_ruby(version, target) ⇒ Object
-
.run(dir_to_build, options) ⇒ Object
TODO: fix using .
- .traveling_ruby_tar_file(version, target) ⇒ Object
- .traveling_ruby_url(version, target) ⇒ Object
- .unpack_traveling_ruby(version, target, destination) ⇒ Object
Class Method Details
.bundle_install(dir_with_gemfile) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/rumbda/build.rb', line 75 def self.bundle_install(dir_with_gemfile) puts 'Installing bundle.' Bundler.with_clean_env do success = system( "cd #{dir_with_gemfile} && " \ 'env BUNDLE_IGNORE_CONFIG=1 bundle install --path . --without development' ) abort('Bundle install failed, exiting.') unless success end puts 'Bundle install success.' end |
.check_for_files(dir_to_build) ⇒ Object
123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rumbda/build.rb', line 123 def self.check_for_files(dir_to_build) main_rb = File.join(dir_to_build, 'source', 'main.rb') abort("Must have file #{main_rb}") unless File.exist?(main_rb) gemfile = File.join(dir_to_build, 'Gemfile') abort("Must have file #{gemfile}") unless File.exist?(gemfile) gemfile_lock = File.join(dir_to_build, 'Gemfile.lock') abort("Must have file #{gemfile_lock}") unless File.exist?(gemfile_lock) end |
.copy_bundler_config(source, destination) ⇒ Object
63 64 65 66 67 |
# File 'lib/rumbda/build.rb', line 63 def self.copy_bundler_config(source, destination) puts 'Copying bundler config.' FileUtils.mkdir_p(destination) FileUtils.cp(source, destination) end |
.copy_wrapper_script(source, destination) ⇒ Object
69 70 71 72 73 |
# File 'lib/rumbda/build.rb', line 69 def self.copy_wrapper_script(source, destination) puts 'Copying wrapper script.' FileUtils.cp(source, destination) FileUtils.chmod(0755, destination) end |
.create_zip_file(source, destination) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/rumbda/build.rb', line 55 def self.create_zip_file(source, destination) puts 'Creating zip file.' Dir.chdir(source) do success = system("zip -rq #{File.join('..', destination)} *") abort('Creating zip failed, exiting.') unless success end end |
.download_traveling_ruby(version, target) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rumbda/build.rb', line 89 def self.download_traveling_ruby(version, target) puts "Downloading traveling ruby from #{traveling_ruby_url(version, target)}." File.open(traveling_ruby_tar_file(version, target), 'wb') do |saved_file| # the following "open" is provided by open-uri open(traveling_ruby_url(version, target), 'rb') do |read_file| saved_file.write(read_file.read) end end puts 'Download complete.' end |
.run(dir_to_build, options) ⇒ Object
TODO: fix using . or .. for dir_to_build
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rumbda/build.rb', line 8 def self.run(dir_to_build, ) check_for_files(dir_to_build) temp_dir = File.join(FileUtils.pwd, TEMP_DIRECTORY_NAME) dest_source_code_dir = File.join(temp_dir, 'source') vendor_dir = File.join(temp_dir, 'vendor') FileUtils.mkdir_p(dest_source_code_dir) FileUtils.mkdir_p(vendor_dir) FileUtils.cp_r(Dir.glob(File.join(dir_to_build, 'source', '*')), dest_source_code_dir) FileUtils.cp_r(File.join(dir_to_build, 'Gemfile'), dest_source_code_dir) FileUtils.cp_r(File.join(dir_to_build, 'Gemfile.lock'), dest_source_code_dir) FileUtils.mv(File.join(dest_source_code_dir, 'Gemfile'), vendor_dir) FileUtils.mv(File.join(dest_source_code_dir, 'Gemfile.lock'), vendor_dir) Dir.chdir(TEMP_DIRECTORY_NAME) do bundle_install(vendor_dir) if Dir.exist?('ruby') puts "Found traveling ruby in #{TEMP_DIRECTORY_NAME}, skipping download." else download_traveling_ruby(TRAVELING_RUBY_VERSION, LINUX_VERSION) unpack_traveling_ruby(TRAVELING_RUBY_VERSION, LINUX_VERSION, 'ruby') end copy_bundler_config( File.(File.join('..', '..', '..', 'lambda', 'bundler-config'), __FILE__), File.join(vendor_dir, '.bundle') ) copy_wrapper_script( File.(File.join('..', '..', '..', 'lambda', 'ruby_wrapper.sh'), __FILE__), 'ruby_wrapper' ) FileUtils.cp( File.(File.join('..', '..', '..', 'lambda', 'index.js'), __FILE__), 'index.js' ) end create_zip_file(TEMP_DIRECTORY_NAME, 'index.zip') FileUtils.rm_rf(TEMP_DIRECTORY_NAME) if ['cleanup'] end |
.traveling_ruby_tar_file(version, target) ⇒ Object
119 120 121 |
# File 'lib/rumbda/build.rb', line 119 def self.traveling_ruby_tar_file(version, target) "traveling-ruby-#{version}-#{target}.tar.gz" end |
.traveling_ruby_url(version, target) ⇒ Object
115 116 117 |
# File 'lib/rumbda/build.rb', line 115 def self.traveling_ruby_url(version, target) "https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{version}-#{target}.tar.gz" end |
.unpack_traveling_ruby(version, target, destination) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/rumbda/build.rb', line 102 def self.unpack_traveling_ruby(version, target, destination) puts 'Unpacking traveling ruby.' FileUtils.mkdir_p(destination) success = system("tar -xzf #{traveling_ruby_tar_file(version, target)} -C #{destination}") abort('Unpacking traveling ruby failed') unless success puts 'Unpacking traveling ruby successful.' puts 'Removing tar.' FileUtils.rm_rf(traveling_ruby_tar_file(version, target)) end |