class Rumbda::Build
Constants
- LINUX_VERSION
- TEMP_DIRECTORY_NAME
- TRAVELING_RUBY_VERSION
Public Class Methods
bundle_install(dir_with_gemfile)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
TODO: fix using . or .. for dir_to_build
# File lib/rumbda/build.rb, line 8 def self.run(dir_to_build, options) 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.expand_path(File.join('..', '..', '..', 'lambda', 'bundler-config'), __FILE__), File.join(vendor_dir, '.bundle') ) copy_wrapper_script( File.expand_path(File.join('..', '..', '..', 'lambda', 'ruby_wrapper.sh'), __FILE__), 'ruby_wrapper' ) FileUtils.cp( File.expand_path(File.join('..', '..', '..', 'lambda', 'index.js'), __FILE__), 'index.js' ) end create_zip_file(TEMP_DIRECTORY_NAME, 'index.zip') FileUtils.rm_rf(TEMP_DIRECTORY_NAME) if options['cleanup'] end
traveling_ruby_tar_file(version, target)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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